この点に関して多くの質問があります。ls出力について、ls -laの列は何ですか?、"ls -la"は何をしますか?、ls -al 出力のフィールドはどういう意味ですか?など。
私はまたそれを説明したい記事がある他の多くのウェブサイトに触れました。
それぞれの共通点は、列の意味が少ないにもかかわらず、もともとその情報を取得した場所へのリンク/参照がまったくないことです。 3番目の質問に対する答えは次のとおりです。coreutils マニュアルしかし、まだ指示を提供していないマンページに非常に似ています。
上記のリソースはドライバを開発しており、ls -l
ブロック/文字デバイスのメイン番号とマイナー番号が提供されていることがわかったため、不完全です(これはファイルやディレクトリの通常の出力とは異なります)。
ここで、デバイスのメジャー/マイナー番号はそれぞれ1と3です。
誰かが記事で言及したので、これを知りました。回答(無関係な質問)。以前にこの数字が何を意味しているのか疑問に思っていた場合は、偶然見つからないと答えが見つかりませんでした。またはソースコードを確認してください。
ほとんどすべてのLinuxユーザーが使用するツールの場合、出力に関する正しい情報がないことが奇妙です。それでは、私が何かを見逃しているのでしょうか?どこに記録されていますか?
編集:Muruはコメントで別の質問に言及しました。ls -lでフィールドの意味を見つける方法- この質問に提案された回答は主にマンページに言及し(直接貼り付け)、GNU coreutilsの場合は完全な回答を提供しません(マンページはメイン/マイナーデバイス番号を参照しません)。 BSDのマニュアルページにはこのように記載されていますが、posix標準に対するStephenの答えは(私の考えでは)最も正確です。
答え1
ls
はいPOSIXで指定、これは共通参照です。出力フォーマットは「STDOUT」セクションで説明されています。
答え2
はい、ファクトサイズフィールドはmajor, minor
デバイスファイルに置き換えられました。少なくともそれ以降はそうです。研究UNIX v51974年で、少なくともそれ以降に文書化されました。Unix v6を勉強する(v5 のマニュアルページが見つかりません) GNU 実装文書に文書化されていませんls
(今は修正されました。次のようなこのバグレポート、ありがとう)。
これls
ユーティリティのPOSIX仕様ls
GNUを含むほとんどの実装ls
はサイズ一部に置き換えられました<device-info>
問題のデバイスに関する実装定義情報、GNUの場合、元のls
Unix実装と同様それはいつもmajor, minor
。ただし、元の Unix 実装とは異なり、GNU は、ls
主装置番号と副装置番号の間にカンマ以外に常に少なくとも 1 つの空白があることを保証します。
少なくとも1つPOSIX環境これはPOSIXLY_CORRECT
環境変数を設定するのと同じですがBLOCKSIZE
、、、、BLOCK_SIZE
何も設定しませんLS_BLOCK_SIZE
。ただし、この場合には、その変数のどれも関連がありません。
² これは、BusyboxやToyboxの実装など、他の多くの実装にも当てはまります。ls
これはLinuxベースのシステム(およびそれ自体)でも一般的です。いいえPOSIX互換)ですが、すべてではありません。たとえば、ast-open の項目には空白が含まれず、すべての数字が長さ 3 までゼロで埋められますが(たとえば001,005
)、一部はまだ長さ 3 まで空白で埋められ、スペースで区切られたフィールドの数が可変に生成されます( for1, 5
と同じように)。7,128
ケース)。ls -l
出力を安定的または移植可能に解析できないいくつかの理由の1つ。