ls 的 -F 选项

Tim*_*Tim 6 ls

对于命令 ls

   -F, --classify
          append indicator (one of */=>@|) to entries
Run Code Online (Sandbox Code Playgroud)

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

但也*遵循文本文件和pdf文件。它们是可执行文件吗?

不要在-F指标总是意味着相同的第一个字段-rwxrwx---

似乎硬链接和-F指标中的文件或-rwxrwx---. 你如何区分它们?

谢谢。

Mic*_*mer 15

ls -F

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

GNU ls 包括附加信号

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

=也存在于主要的 BSD 中(FreeBSDOpenBSDNetBSDOS X)。除了 OpenBSD 之外的所有这些还包括%用于 whiteouts。大多数商业 Unices 包括=,但它是非标准的。

*如果文件被标记为可执行文件——也就是说,如果设置了可执行位,则A将出现在文件之后。这并不一定意味着您可以实际运行该文件。您可以使用chmod -x;取消设置可执行位。通常,您不希望文本文件和 PDF 可执行,因此您可以这样做。可执行文件也将具有xinls -l输出。

对于其他人:

  • / 表示一个目录,这很简单。
  • |表示一个 FIFO,它是一个命名管道mkfifo(数据可以写入其中,并且正好读回一次)。
  • @表示用 建立的符号链接ln -s,它是另一个路径的别名。
  • = 表示一个套接字,一个用于与其他进程通信的特殊文件。
  • >for door是某些系统的另一个进程间通信功能。
  • % for whiteouts 表示用于标记在联合文件系统堆栈的上层中进行的删除的特殊文件。

“常规文件”是您通常认为的文件,您可以将数据写入其中并稍后读回。或者,您可以将其视为不属于上述类别之一的任何内容。


无论是在ls -F输出还是其他方面,硬链接都与其他文件完全没有区别。事实上,您可以将每个文件视为到其自身的硬链接。您可以在ls -l输出中查看到给定文件的链接数。第二个字段是链接数:

-rw-r--r-- 3 root root  92766 Feb 20 11:42 test.txt
Run Code Online (Sandbox Code Playgroud)

这个文件有三个链接。它们都不是“主要”链接,您无法以任何方式分辨哪个是原始链接。如果删除一个,计数会下降,但其他人仍会引用同一个文件。


-F除了*do之外的所有指标都映射到模式输出的第一个字段的一个值上ls -l,但也有其他 可以出现在那里,特别是b对于块设备、c字符设备和其他系统特定的指标.