“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 -D应该由 Emacs 解析定向模式

来自GNU Coreutils 手册

‘-D’
‘--dired’

使用长列表 ( -l) 格式,在主输出后打印一行:

//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、deeper、file。 '//SUBDIRED//' 行上的偏移量分隔以下目录名称:a, a/sub, a/sub/deeper, a/sub2.

deeper下面是如何提取对应于一对偏移量 222 和 228 的第五个条目名称 的示例:

$ 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 设计的输出定向模式

相关内容