用于命令ls
-F, --classify
append indicator (one of */=>@|) to entries
维基百科说*
代表可执行文件和/
目录。常规文件后面不跟随任何上述符号。
但*
以下还有文本文件和 pdf 文件。它们是可执行文件吗?
指示器的含义是否-F
始终与 中的第一个字段相同-rwxrwx---
?
-F
看起来硬链接和指示器中的文件或 中的第一个字段没有区别-rwxrwx---
。你如何区分它们?
谢谢。
答案1
在作为目录的每个路径名后立即写入 ( '/' ),在每个可执行文件后写入 ( '*' ),在每个 FIFO 后写入 ( '|' ),并在每个路径名后写入 at 符号 ( '@' ) 之后是一个符号链接。
... '=' 表示插座,'>' 表示门
=
也存在于主要的 BSD 中(自由BSD,开放BSD,网络BSD,操作系统)。除了 OpenBSD 之外的所有这些也都包括%
白化。大多数商业Unices都包含=
,但它是非标准的。
*
如果文件被标记为可执行文件,即设置了可执行位,则A将出现在文件后面。这并不一定意味着您可以实际运行该文件。您可以使用以下命令取消设置可执行位chmod -x
;通常您不希望文本文件和 PDF 可执行,因此您可以这样做。可执行文件也将具有x
inls -l
输出。
对于其他人:
/
表示一个目录,非常简单。|
表示一个 FIFO,它是一个命名管道mkfifo
(数据可以写入其中,并且只能读回一次)。@
表示使用ln -s
,这是另一个路径的别名。=
表示套接字,是与其他进程通信的特殊文件。>
为了门是某些系统的另一个进程间通信功能。%
forwhiteouts 表示一个特殊文件,用于标记在联合文件系统堆栈的上层中进行的删除。
“常规文件”是您通常认为的文件,您可以将数据写入其中并稍后读回。或者,您可以将其视为不属于上述类别之一的任何内容。
ls -F
无论是在输出中还是在其他方面,硬链接与其他文件根本没有区别。事实上,您可以将每个文件视为其自身的硬链接。您可以查看输出中给定文件的链接数量ls -l
。第二个字段是链接数:
-rw-r--r-- 3 root root 92766 Feb 20 11:42 test.txt
该文件有三个链接。它们都不是“主要”链接,您无法以任何方式分辨哪一个是原始链接。如果删除一个文件,计数将会减少,但其他文件仍将引用同一文件。
-F
除do 之外的所有指标*
都映射到 中模式输出的第一个字段的值之一ls -l
,但有额外的 价值观也可以出现在那里,特别是b
对于块设备、c
字符设备和其他特定于系统的指示器。