ifコマンドを使用してフォルダの所有者をインポートする[閉じる]

ifコマンドを使用してフォルダの所有者をインポートする[閉じる]

人々が私のスクリプトからシステム上の重要なファイルを誤って削除するのを防ぎたいと思います。そのステートメントを使用してフォルダの所有者を見つける方法を知っている人はいますか?

ベストアンサー1

find . -prune -user "$(id -u)"

.現在のディレクトリがあなたの所有者である場合は印刷されます。

次のことができます。

find . -prune -user "$(id -u)" -exec some command \;

または:

if [ -n "$(find . -prune -user "$(id -u)")" ]; then
  some command
fi

some command現在のディレクトリを所有している場合にのみ実行されます。

testほとんどの別名実装(別名、別名、別名、および[シェルに組み込まれている機能の1つを含む)には(大文字のO)もあります。zshbashkshdashyashbosh-O

if [ -O . ]; then
  some command
fi

シェルには、所有するファイルを選択するためのglob修飾子がzshあります。Uしたがって、find次のようなことができます。

if ()(($#)) .(NU); then
  some command
fi

現在のディレクトリ所有者であるPOSIXlyのIDを取得するには、次のようにします。

ownerid=$(LC_ALL=C ls -lnd . | awk '{print $3}')

または内蔵zsh機能を使用してください。stat

stat -LH stat . && ownerid=$stat[uid]

またはGNUを使用してくださいfind

ownerid=$(find . -prune -printf %U)

またはGNUを使用してくださいstat

ownerid=$(stat -c %u .)

またはBSDの場合stat

ownerid=$(stat -f %u .)

この情報があれば、$owneridそれを使用できるシェルプロセスの有効なユーザーIDと比較できます"$(id -u)"。一般的に言えば、アカウントデータベース内の各ユーザーIDに対して複数のユーザー名を持つことができるため、ユーザー名ではなくユーザーIDを使用する方が良いです。これにより、ユーザーデータベースを照会する必要がなくなります。

おすすめ記事