「ls --dired -l」または「ls -D -l」は実際に何を印刷しますか?

「ls --dired -l」または「ls -D -l」は実際に何を印刷しますか?

ls --dired -lすべてのディレクトリとファイルをいくつかの数字で印刷します。

//DIRED// ***66 69 122 131 ....***
//DIRED-OPTIONS// --quoting-style=literal

この太字はどういう意味ですか?

--diredディレクトリを操作するためのEmacsオプションですが、ここでは数字を理解できません。

答え1

の出力はls -DEmacsで解析する必要があります。方向モード

~からGNU Coreutils マニュアル

‘-D’
‘--dired’

longlist(-l)形式を使用して、デフォルトの出力の後に1行を印刷します。

//DIRED// beg1 end1 beg2 end2 …

これスタートそしてエンデン出力内の各ファイル名の先頭と末尾のバイト位置を記録する符号なし整数。これにより、Emacsは名前に奇妙な文字(スペースや改行など)が含まれていても、複雑な検索なしで簡単に名前を見つけることができます。

ディレクトリを再帰的に一覧表示する場合(-R)各サブディレクトリ名のオフセットとともに、次の行を出力します。

//SUBDIRED// beg1 end1 …

最後に、次の形式の行を出力します。

//DIRED-OPTIONS// --quoting-style=word

ここで、wordは引用スタイルです(ファイル名の書式設定を参照)。

実際の例は次のとおりです。

$ mkdir -p a/sub/deeper a/sub2
$ touch a/f1 a/f2
$ touch a/sub/deeper/file
$ ls -gloRF --dired a
  a:
  total 8
  -rw-r--r-- 1    0 Jun 10 12:27 f1
  -rw-r--r-- 1    0 Jun 10 12:27 f2
  drwxr-xr-x 3 4096 Jun 10 12:27 sub/
  drwxr-xr-x 2 4096 Jun 10 12:27 sub2/

  a/sub:
  total 4
  drwxr-xr-x 2 4096 Jun 10 12:27 deeper/

  a/sub/deeper:
  total 0
  -rw-r--r-- 1 0 Jun 10 12:27 file

  a/sub2:
  total 0
//DIRED// 48 50 84 86 120 123 158 162 217 223 282 286
//SUBDIRED// 2 3 167 172 228 240 290 296
//DIRED-OPTIONS// --quoting-style=literal

上記の「//DIRED//」行のオフセットペアは、f1、f2、sub、sub2、deep、fileなどの名前を区別します。 '//SUBDIRED//'行のオフセットは、次のディレクトリ名を区別します。a、、、、、 。a/suba/sub/deepera/sub2

deeper以下は、オフセット222と228の対に対応する第5の項目の名前を抽出する方法の例である。

$ ls -gloRF --dired a > out
$ dd bs=1 skip=222 count=6 < out 2>/dev/null; echo
deeper

上記のリストには項目の末尾のスラッシュが含まれていますが、deeperオフセットは末尾のスラッシュなしで名前を選択します。ただし、ls(aka)などのオプションを使用して呼び出し--diredて名前に特殊文字を含むファイルで作業している場合は、バックスラッシュが含まれていることに注意してください。--escape-b

$ touch 'a b'
$ ls -blog --dired 'a b'
  -rw-r--r-- 1 0 Jun 10 12:28 a\ b
//DIRED// 30 34
//DIRED-OPTIONS// --quoting-style=escape

引用符を追加する引用スタイル(例--quoting-style=c:)を使用する場合、オフセットには引用符が含まれます。したがって、ユーザーは環境変数で引用スタイルを選択できることに注意してくださいQUOTING_STYLE。したがって、アプリケーションを使用するには、--diredコマンドラインで明示的なオプション(またはと --quoting-style=literalも呼ばれる)を指定するか、エスケープされた名前を解析する準備をする必要があります。-N--literal

数値は出力内のファイル名の場所です。

begnとendnは、出力内の各ファイル名の先頭と末尾のバイト位置を記録する符号なし整数です。

答え2

-D、--dired
Emacs用に設計された出力を生成する方向モード

関連情報