[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
stat
: ファイルやファイルシステムの状態を報告するstat
は指定されたファイルに関する情報を表示する。
書式:
stat [option]… [file]… |
オプションなしで実行すると、stat
は指定されたファイルについてすべての情報を報告する。また、stat
を使って、指定されたファイルが存在しているファイルシステムの情報を報告させることもできる。
ファイルがリンクの場合は、リンクが指しているファイルについて情報を提供させることも可能だ。
シェルの組み込み機能の stat
やエイリアスのために、
stat
に何の修飾も付けずに対話的に使ったり、スクリプトの中で使ったりすると、
動作がここで述べているものとは違うことがあるかもしれない。
シェルによる干渉を避けるためには、env
経由で stat
を起動すればよい (すなわち、env stat …
のようにだ)。
stat
がシンボリックリンクを処理する方法を変更する。
このオプションを付けると、stat
は、引数中の各シンボリックリンクが参照しているファイルを操作の対象にする。
このオプションがないと、stat
が対象にするのは、引数のシンボリックリンクそのものになる。
指定されたファイルそのものについての情報ではなく、 そのファイルが存在しているファイルシステムについての情報を報告する。 このオプションを指定すると、自動的に ‘-L’ オプションも指定される。
デフォルトの書式の代わりに、format を使用する。 format の末尾には自動的に改行が付けられるので、 下記のようなコマンドを 2 個以上の file オペランドに対して実行すると、 各オペランドあたり 1 行の出力を生じることになる。
$ stat --format=%d:%i / /usr 2050:2 2057:2 |
デフォルトの書式の代わりに、format を使用する。‘--format’ に似ているが、バックスラッシュ・エスケープを解釈して変換する。 また、行末に自動的に改行を付けることもしない。そこで、改行がしたければ、 format 中で ‘\n’ を指定する必要がある。 ‘--printf’ を使って ‘/’ と ‘/usr’ のデバイス番号と inode 番号を表示するには、こんなふうにする。
$ stat --printf='%d:%i\n' / /usr 2050:2 2057:2 |
情報を簡潔な形式で表示する。他のプログラムで解析するときに都合がよい。
下記の二つのコマンドの出力は全く同じである。また、下記の ‘--format’ は、デフォルトの出力書式が (もっと詳細な形で) 表示する項目とほぼ同じものを指定している。 もっとも、SELinux セキュリティ・コンテキストが有効になっている場合には、 このフォーマット文字列の末尾に、もう一つ ‘%C’ を付け加えることになるだろうが。
$ stat --format="%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o" ... $ stat --terse ... |
‘--file-system’ モードのときの簡潔形式の出力を上と同じように説明的に表現すると、
$ stat -f --format="%n %i %l %t %s %S %b %f %a %c %d" ... $ stat -f --terse ... |
‘--format’ や ‘--printf’ の format 中で、 ファイルに対して使用できる書式指定子には以下のものがある。
‘%a’ という書式はファイルのモードを 8 進数で表示するので、 printf の ‘#’ と ‘0’ フラグを使って、出力の先頭のゼロ埋めをコントロールするとよい。 たとえば、先頭を 0 で埋めて、表示を少なくとも 3 桁にし、それより大きい数値も、 8 進数であることをはっきりさせるには、‘%#03a’ を使えばよい。
‘%N’ の書式は、環境変数 QUOTING_STYLE
によって設定することができる。
その環境変数が設定されていない場合、デフォルトの値は、‘shell-escape’
である。使用できるクォーティングスタイルには、以下のものがある。
文字列に手を加えず、そのまま出力する。これは、‘-N’ や ‘--literal’ オプションと同じである。
文字列にシェルのメタ文字がある場合や、出力が誤解を招くものになりそうな場合に、
シェル向けのクォートを施す。このクォート方法は、bash
のような
POSIX 互換のシェルにはふさわしいものだが、
csh
のような非互換のシェルでは、必ずしもうまく働くとはかぎらない。
普通ならクォートが不要な場合でも、文字列にシェル向けのクォートを施す。
‘shell’ に似ているが、非表示文字のクォーティングに POSIX 提唱の ‘$''’ という書式を使用する。ほとんどのシェルに適している。 (訳注: ファイル名中に空白 (0x20) がある場合は、ファイル名全体をシングルクォートで囲む。)
‘shell-escape’ に似ているが、普通ならクォートが不要な場合でも、 文字列にクォートを施す。
C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 文字列をダブル・クォートで囲むことも行う。 これは、‘-Q’ や ‘--quote-name’ オプションと同じである。
C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 ただし、文字列をダブル・クォートで囲むことはしない。 これは、‘-b’ や ‘--escape’ と同じである。
C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 ただし、文字列を囲む引用符には、ロケールにふさわしいものを使う。
C 言語の文字列リテラルをクォートするときのように、文字列をクォートする。 ただし、文字列を囲む引用符には、ロケールにふさわしいものを使い、 さらに、デフォルトの C ロケールで言うと、"like this" ではなく、 ’like this’ のようにクォートを行う。この方が見栄えのよいディスプレイが多い。
‘%t’ や ‘%T’ という書式指定子は、stat(2) 構造体の st_rdev メンバ に対応するものであり、従って、キャラクタ・スペシャルファイルや ブロック・スペシャルファイルに対してしか動作が定義されていない。 システムやファイルタイプによっては、st_rdev が他のものを表現する ために使われていることもありえる。
‘%W’, ‘%X’, ‘%Y’, ‘%Z’ では、ピリオドに続けて精度を書くことで、
小数点以下何桁まで表示するかを指定することができる。たとえば、‘%.3X’
と指定すると、最終アクセス日時がミリ秒の精度で出力される。ピリオド
だけ指定して、精度を省略すると、stat
は 9 桁を使用する。従って、
‘%.X’ は ‘%.9X’ と同じことになるわけだ。なお、余分な精度を捨てる際、
タイムスタンプは負の無限大方向に切り下げられる (訳注: 平たく言うと、
タイムスタンプのような正の数値の場合、指定された桁数より下の部分は切り捨てられるということ。
以下の例を参照)。
0 で埋める: $ stat -c '[%015Y]' /usr [000001288929712] スペースで位置を揃える: $ stat -c '[%15Y]' /usr [ 1288929712] $ stat -c '[%-15Y]' /usr [1288929712 ] 精度指定: $ stat -c '[%.3Y]' /usr [1288929712.114] $ stat -c '[%.Y]' /usr [1288929712.114951834] |
‘%m’ によって表示されるマウントポイントは、df
によるマウントポイントの出力とほぼ同じである。ただし、以下の点で異なっている。
(訳注: 訳者には意味不明。「現在ベースになっているマウントポイント (the current base mount point)」が、上記訳注の newdir のことなら、 stat を再帰的に呼び出すまでもない。‘stat -c "%m" newdir/FILE’ は、 newdir を表示する。また the current base mount point が「根底にある (すなわち、デバイスを最初にマウントした) マウントポイント」のことなら、 stat を再帰的に呼び出しても、それを突き止めることはできない。 ひょっとすると、書式指定子に ‘%m’ が追加された coreutils-8.6 から coreutils-8.20 あたりまでの stat を linux-2.6 時代の古いカーネルと組み合わせて使ったときの動作を言っているのかもしれない。 その場合は、‘stat -c "%m" newdir/FILE’ は上記の olddir を出力するようだ。 従って、そうした組み合わせでは、stat を再帰的に実行することで、 最初にデバイスをマウントしたときのマウントポイントを知ることができる。)
ファイルシステムの情報をリストする際には (すなわち、‘--file-system’ (‘-f’) 使用時には)、書式指定子の別の一群を使わなければならない。
タイムスタンプは、タイムゾーンのルールに従って表示されるが、
そのルールを指定しているのは、環境変数 TZ
である。
TZ
が設定されていない場合は、システムのデフォルトのルールに従って表示される。
See (libc)TZ Variable section ‘Specifying the Time Zone with TZ
’ in The GNU C Library Reference Manual.
終了ステータス 0 は成功を示し、0 以外の値は失敗を示す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on June 7, 2022 using texi2html 1.82.