ls 的 -F 选项

ls 的 -F 选项

用于命令ls

   -F, --classify
          append indicator (one of */=>@|) to entries

维基百科说*代表可执行文件和/目录。常规文件后面不跟随任何上述符号。

*以下还有文本文件和 pdf 文件。它们是可执行文件吗?

指示器的含义是否-F始终与 中的第一个字段相同-rwxrwx---

-F看起来硬链接和指示器中的文件或 中的第一个字段没有区别-rwxrwx---。你如何区分它们?

谢谢。

答案1

ls -F将要:

在作为目录的每个路径名后立即写入 ( '/' ),在每个可执行文件后写入 ( '*' ),在每个 FIFO 后写入 ( '|' ),并在每个路径名后写入 at 符号 ( '@' ) 之后是一个符号链接。

GNU ls 包含附加信号:

... '=' 表示插座,'>' 表示门

=也存在于主要的 BSD 中(自由BSD,开放BSD,网络BSD,操作系统)。除了 OpenBSD 之外的所有这些也都包括%白化。大多数商业Unices都包含=,但它是非标准的。

*如果文件被标记为可执行文件,即设置了可执行位,则A将出现在文件后面。这并不一定意味着您可以实际运行该文件。您可以使用以下命令取消设置可执行位chmod -x;通常您不希望文本文件和 PDF 可执行,因此您可以这样做。可执行文件也将具有xinls -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字符设备和其他特定于系统的指示器。

相关内容