ls -al
コマンドは次の出力を表示します。
-rwxrw-r-- 10 root root 2048 Jan 13 07:11 afile.exe
上記の表示のすべてのフィールドは何ですか?
出力順に;
-rwxrw-r-- 1 root root 2048 Jan 13 07:11 afile.exe
ファイルの権限は次のように表示されます。
-
またはl
またはd
、dはディレクトリを示し、1行はファイルを示し、lはシンボリックリンク(またはソフトリンク)-特殊なタイプのファイルあなたの例では-rwxrw-r--
、つまり、表示される行は次のとおりです。
「ls」コマンドの出力は、「ls」のバージョン、使用するオプション、使用するプラットフォームなどによって異なります。例から、典型的なun * x(Linuxなど)から使用しているように見えますが、おそらく典型的な最新の「ls」バージョンを使用しています。その場合:
-rwxrw-r-- 10 root root 2048 Jan 13 07:11 afile.exe
?UUUGGGOOOS 00 UUUUUU GGGGGG #### ^-- date stamp and file name are obvious ;-)
^ ^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | | \--- File Size
| | | | | | | \-------- Group Name (for example, Users, Administrators, etc)
| | | | | | \--------------- Owner Acct
| | | | | \---------------------- Link count (what constitutes a "link" here varies)
| | | | \--------------------------- Alternative Access (blank means none defined, anything else varies)
| \--\--\----------------------------- Read, Write and Special access modes for [U]ser, [G]roup, and [O]thers (everyone else)
\------------------------------------- File type flag
リストしたサンプルファイルのリンク数が多すぎる理由はわかりません。一部のプラットフォームには、「リンク」を構成するものについて奇妙な概念があります。これらには通常、ハードリンクとシンボリックリンク、およびディレクトリエントリが含まれます(そのため、ディレクトリのリンク数が多いことがよくあります。親には1つのリンクがあり、ディレクトリにはそれ自体へのリンクがあります.
エントリ、およびその各サブディレクトリには..
を介して戻るリンクがあります)。
一部のバージョンやコマンドラインフラグには、バイト数の代わりに使用されるブロック数がリストされます。ブロックサイズが1024バイトのファイルシステムでは、1024バイトまでのすべてのサイズが「1」としてリストされます。つまり、1つのブロックが使用され、1025から2048までは「2」として、2つのブロックを使用してというように続きます。ただし、デフォルトで(コマンドラインオプションを明示的に使用せずに)ブロックサイズを一覧表示することは、ほとんどの最新のun * xマシンではまれです。
特殊/代替アクセスフラグは通常は空白ですが、プラットフォームによっては、特殊/代替アクセスモード(WIN32のACLやセキュリティ記述子など)があることを示すために使用される場合があり、さまざまに異なります。マニュアルを参照してください。 、マニュアルページ、情報ツール、その他。
許可(モード)フラグ(UUUGGGOOO)は3つの文字の3つのセットで、最初のセットは「ユーザー」(つまり、所有者)、2番目のセットは「グループ」、3番目のセットは「その他」(つまり、他の全員)です。 ;所有者でもグループでもない人)。各セットの3つの許可フラグは通常r
または-
であり、これはユーザー/グループ/その他がファイルを読み取ることができる(r
)か、読み取れない(-
)かを意味します。続いて、w
または-
は、ファイルへの書き込みが可能かどうかを示します(書き込みは可能だが読み取りは不可能で、奇妙に聞こえるかもしれません)。3番目の文字他のモードの「キャッチオール」フラグです。通常は、実行の場合はx
(ディレクトリの場合はディレクトリの内容にアクセスできることを意味します)、なしの場合は-
のようなものです。時には、setuidプログラムやsetgidプログラム、あるいはその他のあまり一般的でない文字のs
またはS
に遭遇することがあります。表示されるモード文字については、「ls」のドキュメントを参照してください。
最後に、最初の文字はファイルタイプです。通常はd
はディレクトリ、l
はシンボリックリンク(ハードリンクは通常、独自の特殊文字なしで表示されます)、または-
は通常のファイルのいずれかです。他にも、あまり一般的ではないが、さまざまなファイルシステムのファイルタイプが多数あります。これらの最初の10文字(ファイルの種類とアクセス許可)について説明します Wikipediaで 。繰り返しになりますが、ドキュメントには、コマンドがサポートして表示するファイルの種類が正確に記載されています。
ところで、 "ls"自体のman/infoページ( "man ls"/"info ls")が見つからない場合は、 "coreutils"パッケージ( "info coreutils")を調べてみてください。また、より一般的なプラットフォームの中で、Microsoftプラットフォームは「ls」出力にうまく変換できない傾向があるため、「ls」のバージョンがどのようであったかに応じて、奇妙な動作、フラグ、またはその他の異常な情報が出力に表示される場合があります。コンパイル、リンク先など.
もう1つ注意点:ファイルのタイムスタンプは通常、ファイルが最後に作成された日時変更であり、ファイルが作成された日時ではありません。実際、un * x-ishファイルシステムでは、ファイル作成時間の記録はありません。 ctimeフィールドは、FAT/NTFSファイルシステムのように「作成時間」を意味するのではなく、「inode [C] hange時間」、つまりiノード自体が最後に変更された時間を意味します。 "mtime"(最後の[M] odified)とatime(最後の[A] ccesed/read)のタイムスタンプは両方のシステムで同じです–精度(FATの粒度は2秒など)とタイムゾーンは異なる場合があります。
GNUシステムでは、これはls
情報ページに非常に詳細な方法で説明されています。それを見つけるために必要なのは、単にman ls
そして、完全なドキュメントへの最後のリンクで見つけてください:info coreutils 'ls invocation'
。
ここからの引用です:
`-l'
`--format=long'
`--format=verbose'
In addition to the name of each file, print the file type, file
mode bits, number of hard links, owner name, group name, size, and
timestamp (*note Formatting file timestamps::), normally the
modification time. Print question marks for information that
cannot be determined.
Normally the size is printed as a byte count without punctuation,
but this can be overridden (*note Block size::). For example, `-h'
prints an abbreviated, human-readable count, and
`--block-size="'1"' prints a byte count with the thousands
separator of the current locale.
For each directory that is listed, preface the files with a line
`total BLOCKS', where BLOCKS is the total disk allocation for all
files in that directory. The block size currently defaults to 1024
bytes, but this can be overridden (*note Block size::). The
BLOCKS computed counts each hard link separately; this is arguably
a deficiency.
The file type is one of the following characters:
`-'
regular file
`b'
block special file
`c'
character special file
`C'
high performance ("contiguous data") file
`d'
directory
`D'
door (Solaris 2.5 and up)
`l'
symbolic link
`M'
off-line ("migrated") file (Cray DMF)
`n'
network special file (HP-UX)
`p'
FIFO (named pipe)
`P'
port (Solaris 10 and up)
`s'
socket
`?'
some other file type
The file mode bits listed are similar to symbolic mode
specifications (*note Symbolic Modes::). But `ls' combines
multiple bits into the third character of each set of permissions
as follows:
`s'
If the set-user-ID or set-group-ID bit and the corresponding
executable bit are both set.
`S'
If the set-user-ID or set-group-ID bit is set but the
corresponding executable bit is not set.
`t'
If the restricted deletion flag or sticky bit, and the
other-executable bit, are both set. The restricted deletion
flag is another name for the sticky bit. *Note Mode
Structure::.
`T'
If the restricted deletion flag or sticky bit is set but the
other-executable bit is not set.
`x'
If the executable bit is set and none of the above apply.
`-'
Otherwise.
Following the file mode bits is a single character that specifies
whether an alternate access method such as an access control list
applies to the file. When the character following the file mode
bits is a space, there is no alternate access method. When it is
a printing character, then there is such a method.
GNU `ls' uses a `.' character to indicate a file with an SELinux
security context, but no other alternate access method.
A file with any other combination of alternate access methods is
marked with a `+' character.
最初の列はファイルモード、次の列はファイルが持つリンクの数、3番目と4番目はファイルの所有者とグループの名前です。次の列はファイルのバイト数を示しています(一部のls
実装には-h
オプションを使用すると、この情報をよりわかりやすい形式で表示できます)。最後の2つの列は、タイムスタンプとファイルの名前を示します。詳細については、manページをお読みください。