-C

-C

我的机器上有一个命令l,但似乎什么都没做, which l也没有输出。这是一个真正的命令吗?它真的能做任何事情吗?

答案1

l是一个别名对于ls -CF,其中行为方式与普通ls

-C

-Cls以列形式进行打印输出。当标准输出是终端(而不是重定向到文件或非终端设备,或通过管道传输到另一个命令),-C这是隐含的。因此,运行ls -C与运行相同ls。但它们是不是重定向或管道传输时等效ls。例如:

ek@Kip:~/firefox$ ls
application.ini             libfreebl3.chk    libxpcom.so
blocklist.xml               libfreebl3.so     libxul.so
chrome                      libmozalloc.so    mozilla-xremote-client
chrome.manifest             libmozsqlite3.so  omni.ja
components                  libnspr4.so       platform.ini
crashreporter               libnss3.so        plugin-container

...

ek@Kip:~/firefox$ ls | less

application.ini
blocklist.xml
chrome
chrome.manifest
components
crashreporter

...

相比之下,ls -C(或-l)无论设备类型如何,都以列形式输出stdoutls -C | less看起来像顶部输出(但由less, 当然)。

-F

ls和之间最明显的不同l在于-F标志,它导致ls在其显示的条目后附加符号后缀(称为指示符)。这些指示符标识了它们是什么类型的文件或目录。

ls将其与上面第一个命令的输出进行比较:

ek@Kip:~/firefox$ ls -F
application.ini             libfreebl3.chk     libxpcom.so*
blocklist.xml               libfreebl3.so*     libxul.so*
chrome/                     libmozalloc.so*    mozilla-xremote-client*
chrome.manifest             libmozsqlite3.so*  omni.ja
components/                 libnspr4.so*       platform.ini
crashreporter*              libnss3.so*        plugin-container*

...

这里:

  • /表示该条目是一个目录。
  • *表示该条目是一个普通文件并且可以执行(即具有可执行文件权限)。
  • 如果没有任何指示符,则表示该条目是不可执行的普通文件。

还有其他几个指标:

标志--classify--indicator-style=classify相当于-F

来源: GNU Coreutils 手册10.1.5 节 常规输出格式

综上所述,lls -CF)类似于,但是不一样作为ls

还要记住的是:

相同的文本既可以是常规命令,也可以是别名。

这通常用于指定被广泛认为非常有用且无害的选项,例如自动着色(当stdout未重定向或为终端时应用颜色,因此指定颜色的转义代码实际上保证不会被误解)。

根据这个原理,ls本身就是一个别名。

ek@Kip:/$ alias ls
alias ls='ls --color=auto'

那么什么命令真的运行时会执行l吗?这个:

/bin/ls --color=auto -CF
  1. 贝壳 (bash) 将不包含/以下内容的命令解析为第一个匹配项:PATH,在 Ubuntu 中ls/bin/ls
  2. 别名可以包含别名。别名解析不是递归(别名不能调用自身,但它可以调用具有相同名称的常规命令)。但它支持嵌套

所以l解析为,ls -CF解析为ls --color=auto -CF

别名可以更改。

这些别名之所以存在,是因为它们是默认设置的,但每个用户都可以更改他们的别名。请参阅man alias第 25 章附录 M在《高级 Bash 脚本指南》中,以及如何永久保存我的“别名”条目

有关的: ls 中不同的颜色代表什么意思?

答案2

实际上lsl都是相等的

raja@badfox:~/Pictures$ l
des.png
Screenshot from 2012-09-22 19:37:03.png
Screenshot from 2012-09-22 19:37:11.png
Screenshot from 2012-09-22 19:37:12.png
Untitled.png
raja@badfox:~/Pictures$ ls
des.png
Screenshot from 2012-09-22 19:37:03.png
Screenshot from 2012-09-22 19:37:11.png
Screenshot from 2012-09-22 19:37:12.png
Untitled.png

为什么意味着有一个内置的系统别名导致了这种情况。如果你想查看,请打开你的终端并输入,alias然后你将获得如下输出

raja@badfox:~/Pictures$ alias
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -alF'
alias lock='gnome-screensaver-command -l'
alias ls='ls --color=auto'
alias sms='php .sms.php'
raja@badfox:~/Pictures$ 

答案3

有疑问时,type l

l is aliased to `ls -alF'

(也可以看看la 命令的作用是什么

相关内容