次のような出力があるとしましょうls -l
。
drwxr-xr-x 2 root root 4096 Apr 7 17:21 foo
使用された形式に自動変換するにはどうすればよいですかchmod
?
たとえば、
$ echo drwxr-xr-x | chmod-format
755
私はOS X 10.8.3を使用しています。
ベストアンサー1
一部のシステムにはファイル権限を数値で表示するコマンドがありますが、残念ながら移植可能なものはありません。
zsh
モジュールにはstat
(別名)組み込み関数があります。zstat
stat
zmodload zsh/stat
stat -H s some-file
それなら、mode
中にあるのはモードな$s[mode]
のに、タイプ+パーマです。
8進数で権限を取得するには、次のものが必要です。
perms=$(([##8] s[mode] & 8#7777))
BSD(付属Apple OS/Xstat
)にもコマンドがあります。
stat -f %Lp some-file
(いいえL
、完了しました。モデル戻り値(8進数で表示)
GNU find(1990年、おそらくそれ以前)は権限を8進数で印刷できます。
find some-file -prune -printf '%m\n'
後で(2001年、zsh
stat
1997年以降、BSD stat
(2002)より前)、GNUstat
コマンドは再び別の構文を導入しました。
stat -c %a some-file
これらよりもずっと前に、IRIXにはすでにstat
コマンドがありました(すでにアイリックス5.31994)、代替構文を使用します。
stat -qp some-file
同様に、標準コマンドがない場合、移植性のための最良のオプションは次のものを使用することですperl
。
perl -e 'printf "%o\n", (stat shift)[2]&07777' some-file