ls -F显示的符号是什么意思?


61

我注意到,如果我在目录上运行ls -F,则某些条目后面会带有*或@。

spuder@ubuntu:~$ ls -F /sbin
acpi_available*   getpcaps*           lvmconf*                 ntfscp*        start-stop-daemon*
agetty*           getty*              lvmdiskscan@             ntfslabel*     status@
alsa*             halt@               lvmdump*                 ntfsresize*    stop@
alsactl*          hdparm*             lvmsadc@    

spuder@ubuntu:~$ ls -F ~
daq-0.6.1/  examples.desktop       noname-cache.lib  snort-2.9.1/   Templates/
Desktop/    jpgraph-1.27.1/        noname.sch        snortfiles/    Ubuntu One/
Documents/  

根据ls手册页

spuder@ubuntu:~$ man ls
...
-F, --classify
  append indicator (one of */=>@|) to entries
...

我猜这@意味着符号链接,

这些其他指标是什么意思(*/=>@|)?


2
您是否考虑过看手册页?
mdpc

23
他有。实际上,他在手册页上张贴了节选。完整的ls文档(包括有关由所显示的符号的信息ls -F)在Texinfo手册中。(info ls)。

1
附带说明一下,由于Texinfo手册通常让人感到陌生和陌生,因此通常保留以下功能:infos () { info --vi-keys --subnodes -o - "$@" | less; }

1
@EvanTeitelman这是很棒的信息,我会info foo --vi-keys牢记。不幸的是,您提到的语法对我不起作用(infos(){info --vi-keys ...}
spuder

1
@spuder:这是一个函数;你必须叫它。infos ls。该$@部分将函数的所有参数传递给info。您可以将此功能放在~/.bashrc文件中以供以后使用。

Answers:


67

ls -F将符号附加到文件名。这些符号显示有关文件的有用信息。

如果您希望将此行为作为默认行为,请将其添加到您的Shell配置中alias ls='ls -F'


10
不要实现命令,它会破坏编写不好的脚本。我已经别名l为-F和颜色,并且ll也别名为-l
ctrl-alt-delor 2013年

在Android上,我得到了完整的两列输出。我得到文件名或目录名,如果文件是文件名,则在名称前减号;如果是目录,则为“ d”;如果是链接,则为“ ld”。Linux如此不一致是一个灾难!
Elmue

1

只是添加我如何找到此信息。如底部所示man ls

完整文档位于:https : //www.gnu.org/software/coreutils/ls 或可通过以下方式在本地获得:info'(coreutils)ls invocation'

接下来,我们看到

'-F''--classify''--indicator-style = classify'在每个文件名后附加一个字符,指示文件类型。另外,对于可执行的常规文件,请附加“ *”。文件类型指示符是目录的“ /”,符号链接是“ @”,“ |” 对于FIFO,“ =”表示插槽,“>”表示门,对于常规文件则不显示。除非指定了--dereference-command-line(-H),--dereference(-L)或--dereference-command-line-symlink-to-dir选项,否则请勿遵循命令行上列出的符号链接。

https://www.gnu.org/software/coreutils/manual/coreutils.html#ls-invocation

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.