権限の変更

権限の変更

私は練習して努力しています:

1)名前またはr、w、x権限のすべての組み合わせでファイルを生成します= 512ファイル。

2) 名前と一致するようにファイルの権限を変更します。

私はこのスクリプトを作成しました:

touch ./{r,-}{w,-}{x,-},{r,-}{w,-}{x,-},{r,-}{w,-}{x,-}

for i in *
   do
       syntax="${i//:}"
       u=${syntax:0:3}
       g=${syntax:3:3}
       o=${syntax:6:3}

       chmod u="$u",g="$g",o="$o" -- "$i" 
  done

名前と一致するように一部の権限が変更されますが、すべてではありません。

ベストアンサー1

いくつかのエラーがあります。まず、カンマで区切られた3つのファイルセットで構成されるファイルを作成します。

touch ./{r,-}{w,-}{x,-},{r,-}{w,-}{x,-},{r,-}{w,-}{x,-}

しかし、コロンを削除したいです。コロンはカンマでなければなりません。

syntax="${i//:}"

スクリプトが同じディレクトリにある場合、問題が発生する可能性があります。

for i in *

もちろん、../myscriptこれを実行すると問題はありません。ただし、スクリプトが同じディレクトリにある場合は、これを防ぐことができます。

for i in ???????????

(もちろん11文字の名前を指定しないと仮定します。)

最後に大きなバグがあります。ファイル名を3つの文字列に分割しますu='-w-' g='r-x' o='-wx'。例えばchmod;まず、ハイフンを削除する必要があります。したがって、分割後:

u=${u//-}
g=${g//-}
o=${o//-}

これらすべての変更の後、次の作業結果が得られます。

touch ./{r,-}{w,-}{x,-},{r,-}{w,-}{x,-},{r,-}{w,-}{x,-}

for i in ???????????
    do
        syntax="${i//,}"
        u=${syntax:0:3}
        g=${syntax:3:3}
        o=${syntax:6:3}
        u=${u//-}
        g=${g//-}
        o=${o//-}

        chmod u="$u",g="$g",o="$o" -- "$i" 
    done

おすすめ記事