ls --dired -l
打印所有目录和文件以及一些数字,后跟
//DIRED// ***66 69 122 131 ....***
//DIRED-OPTIONS// --quoting-style=literal
这些粗体数字是什么意思?
--dired
是一个用于处理目录的 Emacs 选项,但我不明白这里的数字。
答案1
的输出ls -D
应该由 Emacs 解析定向模式。
‘-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 设计的输出定向模式。