0

私は Linux とシェル スクリプトに非常に慣れていないので、スクリプトの特定の部分を書かなければなりません。クラス課題用です。

write switch でオンになっているユーザー (私のグループ内) の public_html ファイルがあるかどうかを確認するループを作成する必要がありますrwx。そこに情報を書き込めるようにし、public_html必要な情報を取得し終わったら、そのグループ メンバーから情報を取得できるようにします。

これが私が今いる場所です:

while read temp;do

# this is my main hang up, to see it this global 
# switch is turned on to write.
if[[ <9> = 'w' ]] 
echo "$temp has their w switch turned on."

# this also is throwing me off, i think this is the way to 
# keep going until all the public_html directories in the 
# group have been seen.
done < ..public_html 

または、論理的に単純でより理にかなっているように見えるfindコマンドの使用方法を理解しようとしています。使用したことがないので、この行を試してみました役に立ちますか、多分その近くですか?

find . */home/public_html -perm -g +w
#I was hoping that would search all user directories looking for the permission +w turned on in public_html.
4

2 に答える 2

3

ループでこれを行う必要がありますか? これは に自然に適合するようですfind。特に-perm、、、-gidおよび-typeテストはここで役立ちます。

あなたの環境をもう少し詳しく説明できますか?public_htmlユーザーのホーム ディレクトリにある名前のファイルを探していますか? または、現在のディレクトリでファイル/フォルダーを探していますか? それともまったく別のものですか?

を使用するためのいくつかのヒントfind:

  • テストを使用して-type d、結果をフォルダに限定します
  • テストを使用して-name、結果を「public_html」という名前のものに限定します
  • テストを使用して-gid、結果をグループ内のものに限定します (id -gコマンドはグループ ID を報告する必要があります)。
  • テストを使用して-perm -g+w、結果をグループ書き込み可能なものに制限します

これらすべてを組み合わせると、探しているものを正確に除外できるはずです。私がリンクした man ページの下部には、さまざまな引数の使用方法を示す「例」セクションがあります。説明付きのその他の例については、このfindチュートリアルを確認することもできます。

于 2013-02-25T22:04:31.397 に答える
2

あなたがグループに属している場合、ディレクトリはあなたが読むことができます。

shopt -s globstar

for i in **/*/; do
    test -x "$i" && echo "$i have 'x' bit"
done

bash --version>=4が必要

于 2013-02-25T20:21:53.627 に答える