以下是手册中所涉及的文本。
--dereference-command-line-symlink-to-dir
不取消引用符号链接,但有一个例外:如果命令行参数指定了指向目录的符号链接,则显示该目录的信息而不是链接本身的信息。当未指定其他与取消引用相关的选项时(
--classify
(-F
)、--directory
(-d
)、(-l
)、--dereference
(-L
)或--dereference-command-line
(-H
)),这是默认行为。
以下是我在终端上运行的一些命令。
$ touch myfile.txt
$ ln --symbolic myfile.txt symlink_myfile
$ ls --classify symlink_myfile
symlink_myfile@
如果默认行为是不取消引用符号链接,除非指定了取消引用相关的选项,那么为什么 ls --classify 会生成“symlink_myfile@”?
指定了取消引用选项 --classify,因此我的符号链接应该被取消引用。
答案1
man
(以及大多数其他 GNU 程序)的页面只是ls
一个非常简化的摘要。在您的例子中,它说这--dereference-command-line-symlink-to-dir
是默认设置,除非给出了与解除引用相关的选项-F
,但它没有说明在以下情况下解除引用会发生什么:-F
是给出(所以它不是错误的,只是不完整)。关于的条目-F
也没有帮助:
-F, --classify
append indicator (one of */=>@|) to entries
完整文档中提供了更多有用信息,可以使用info ls
或访问在线的:
‘-F’
‘--classify’
‘--indicator-style=classify’
Append a character to each file name indicating the file type.
Also, for regular files that are executable, append ‘*’. The file
type indicators are ‘/’ for directories, ‘@’ for symbolic links,
‘|’ for FIFOs, ‘=’ for sockets, ‘>’ for doors, and nothing for
regular files. Do not follow symbolic links listed on the command
line unless the ‘--dereference-command-line’ (‘-H’),
‘--dereference’ (‘-L’), or
‘--dereference-command-line-symlink-to-dir’ options are specified.
因此-F
默认情况下不会取消引用。