Linuxでrwxパーミッションを8進形式に変換する


rwx ではなく、ファイルまたはディレクトリのアクセス権を8進数で表示すると便利な場合や、両方を表示したい場合があります。

古き良き ls -l コマンドを使用する代わりに、最新のLinuxディストリビューション(すべてではないにしても)には、ファイルまたはファイルシステムのステータスを表示するユーティリティである stat があります。

引数なしで実行し、その後に特定のファイル名を続けると、 stat はファイルまたはディレクトリに関する多くの情報を表示します。 -c オプションと一緒に使用すると、statを使用して出力形式を指定できます。私たちが特に関心を持っているのは、まさにこのオプションです。

現在の作業ディレクトリ内のすべてのファイルに続いて8進数形式でアクセス権を表示するには、次のように入力します。

# stat -c '%n %a' *
add_emails.sh 755
anaconda-ks.cfg 600
delete_emails.sh 755
employee-dump.sql 644
index.html 644
latest.tar.gz 644
nrpe-2.15.tar.gz 644
php7 644
playbook.retry 644

上記のコマンドでは、フォーマットシーケンスは次のとおりです。

  1. %n – means file name
  2. %a – means access rights in octal form

または、%a %A に追加することもできます。これは、権限を rwx 形式でも表示する場合にstatに渡される引数です。

その場合、次のように入力できます。

# stat -c '%n %A' *
add_emails.sh -rwxr-xr-x
anaconda-ks.cfg -rw-------
delete_emails.sh -rwxr-xr-x
employee-dump.sql -rw-r--r--
index.html -rw-r--r--
latest.tar.gz -rw-r--r--
nrpe-2.15.tar.gz -rw-r--r--
php7 -rw-r--r--
playbook.retry -rw-r--r--

出力にファイルタイプを表示するには、%F 形式のシーケンスを追加します。

# stat -c '%c %F %a'

指定できるフォーマットシーケンスは他にもいくつかあります。詳細については、 stat man ページを参照してください。

# man stat

このヒントでは、ファイルまたはファイルシステムのステータスを表示するのに役立つstatと呼ばれる重要なLinuxユーティリティについて説明しました。ここでの主な焦点は、 rwx アクセス権を従来の ls -l 出力から8進数形式に変換することでした。

前に述べたように、最近の多くのLinuxディストリビューションにはstatユーティリティが付属しています。ただし、シェルには独自のバージョンのstatが付属している場合があることも覚えておく必要があります。したがって、オプションとその使用方法の詳細については、シェルのドキュメントを参照してください。