Airpods

Mac OSのコマンドラインから8進数のファイル権限を取得する方法

Mac OSのコマンドラインから8進数のファイル権限を取得する方法

Macで8進形式でファイル権限を取得する

コマンドライン ユーザーは、たとえば「chmod 755 filename」のようなコマンドを実行して、chmod を使用してファイルのアクセス許可を数値形式または 8 進形式で設定することに慣れている可能性がありますが、8 進形式でファイルのアクセス許可を取得する方法について疑問に思ったことはありませんか?

コマンドライン経由でファイルまたはフォルダの権限の 8 進数値を確認または表示したい場合は、Mac OS の stat コマンドを使用できます。

コマンドラインの使用経験と慣れがあることを前提としています。もしそうでない場合は、この記事はおそらくあなたには関係ありません。ほとんどのMacユーザーは、他の場所で説明されているように(そもそもFinderを使っていない場合も)、ファイルのアクセス権を確認したり変更したりするだけですが、この記事はより上級のユーザーを対象としています。

Macで数値のchmod権限値を取得する方法

開始するには、Mac の /Applications/ からターミナル アプリを起動し、次のコマンドを使用します。

stat -f %A file.txt

たとえば、そのコマンドの出力は次のようになります。

$ stat -f %A wget-1.18.tar.gz
644

この例では、「644」はそのファイルの権限の 8 進値です。

あるいは、 -f と %OLp (はい、これは大文字の 'o' であり、ゼロではありません) を使用することもできます。ファイルも同じであると仮定すると、出力は同じになります。

stat -f %OLp /Applications/System\ Preferences.app

このコマンドの出力例は次のようになります。これは、対象項目の数値の 8 進値の権限を示しています。

$ stat -f "%OLp" '/Applications/System Preferences.app'
775

この例では、「システム環境設定」アプリケーションの 8 進権限値は 775 です。

Macでコマンドラインからファイルの権限を8進数値として取得する方法

引用符を使用する必要はありませんが、何らかの理由でファイル名やパスをエスケープする必要がある場合、またはスクリプトの目的で引用符を使用する必要がある場合は、次のように簡単に配置できます。

stat -f "%OLp" '/Applications/System Preferences.app'

-f フラグはフォーマット用です。stat 出力の特定のフォーマット オプションの詳細については、「man stat」を使用した stat のマニュアル ページを参照してください。

後者のコマンドの場合、「O」(大文字の o)は特に 8 進出力を実現するためのものです。

ファイルやフォルダの正確な数値パーミッション情報を知ることは、様々な理由で非常に役立ちます。例えば、様々なアイテムのパーミッションを調整する場合や、Mac上でファイルを移動した後に正確なパーミッション情報を維持し、事後に確認したい場合などに役立ちます。他にも無数の用途があり、特にMacで何らかのサーバーを運用している場合に役立ちます。

これらのコマンドは、命名規則の大文字/小文字に関係なく、macOS、MacOS、Mac OS Xのほぼすべてのバージョンで8進数の権限を取得する際に同じように機能します。ただし、Macで8進数の権限を取得する方法は、他のLinux環境とは異なる点に注意してください。そのため、Linux環境からMacに移行する場合は、8進形式で権限を正確に取得するために、statコマンドのフラグを調整する必要があります。これについては次に簡単に説明します。

Linux のコマンドラインから 8 進数のファイル権限を取得する

徹底するために、Linux の世界でも 8 進数の権限値を取得する方法についても簡単に説明します。8 進数のファイル権限を取得するには、次のようにします。

stat -c "%a %n" /Path/To/File

もっと簡単に stat -c コマンドを使用することもできます。

stat -c %a /Path/To/File.txt

もちろん、入力された対象ファイルが同じであれば、出力される数値は同じになります。

繰り返しになりますが、後者の 2 つのアプローチは Linux 固有のものであり、Mac OS でファイルの権限の 8 進値を取得するには、上記で説明した方法を使用する必要があります。

Macでファイル権限の数値を取得する他の方法やアプローチをご存知ですか?ぜひ下のコメント欄で共有してください!