web-dev-qa-db-ja.com

chmodは764で欠落しているオペランドをスローし、664でOKをスローします

デバッグのためにプロジェクトのすべてを777rwxrwxrwx)に設定したので、オープン性をダイヤルダウンして、ルートフォルダー内のディレクトリ(ファイルではなく)を664に設定したいと思いました。 (rw-rw-r--)。

これを行うために私は使用しました( bashコマンドを使用してフォルダーを一覧表示する方法は? ):

chmod 664 -- */

これは期待どおりに機能しました。次に、ディレクトリに入るにはディレクトリの実行ビットが必要であることに気付きました。だから私は試しました:

chmod 764 -- */

しかし、それはmissing operand after "764"エラーをスローしました。

手動で権限を変更することができ(chmod 764 <dir-name>)、ディレクトリがそれほど多くないので大きな問題ではありませんが、理解したいと思います。

chmod 764 */を使用して現在のパスのディレクトリをrwxrw-r--に設定できないのはなぜですか?

2
user60177

これは、シェルグロブオプションを次のように設定した場合に意味があります。

  • *には、.で始まる名前が含まれ、
  • 何にも一致しないワイルドカードは、それ自体として存続するのではなく、単に消えます。 (たとえば、名前がfooで始まるファイルがない場合、コマンドecho foo*は、文字通りfoo*を出力するのではなく、空白行を出力します。)

上記が当てはまる場合、最初のコマンドは.をモード664に設定します。これは、2番目のコマンドを発行したときに.を読み取る権限がなかったことを意味します。そのため、*/を展開できず、chmod 764 -- */chmod 764 --になりました。