Arm*_*and 19 command-line bash alias directory ls
l我的机器上有一个命令似乎什么都不做。 which l也不会产生任何输出。这是一个真正的命令吗,它实际上有什么作用吗?
Eli*_*gan 21
-C-C使得ls在列的形式打印输出。当stdout是终端(而不是被重定向到文件或非终端设备,或通过管道传输到另一个命令)时,-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
...
Run Code Online (Sandbox Code Playgroud)
相比之下,ls -C(或-l) 以列形式输出,而不管设备stdout是什么类型。ls -C | less看起来像顶部输出(但less当然是由 分页的)。
-Fls和之间的主要可见差异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*
...
Run Code Online (Sandbox Code Playgroud)
这里:
/ 表示该条目是一个目录。*表示该条目是一个普通文件并且是可执行的(即具有可执行权限)。还有其他几个指标:
@表示该条目是一个符号链接(另请参阅man symlink)。|意味着该条目是一个FIFO设备(请记住,类 Unix 操作系统中的许多资源都由文件系统条目表示)。=意味着该条目是一个socket。>表示入口是门。该--classify标志和--indicator-style=classify相当于-F。
来源: GNU Coreutils 手册,第 10.1.5 节通用输出格式
l(ls -CF)相似,但不一样的ls。记住:
这通常用于指定被广泛认为非常有用和无害的选项,例如自动着色(在stdout未重定向或终端时应用颜色,因此几乎可以保证指定颜色的转义码不会被误解)。
ls本身就是一个别名。ek@Kip:/$ alias ls
alias ls='ls --color=auto'
Run Code Online (Sandbox Code Playgroud)
那么当你运行时,什么命令真正被执行l?这个:
/bin/ls --color=auto -CF
Run Code Online (Sandbox Code Playgroud)
bash) 将不包含 a 的命令解析/为 中出现的第一个匹配项PATH,在 Ubuntu 中ls为/bin/ls.所以l解析为ls -CFwhich 解析为ls --color=auto -CF。
这些别名之所以存在,是因为默认情况下它们是这样设置的,但每个用户都可以更改他们的别名。见man alias,第25章及附录N的高级Bash脚本编程指南,以及如何保存我的“别名”条目永远。
相关: ls 中的不同颜色是什么意思?
其实两者ls和l是相等的
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
Run Code Online (Sandbox Code Playgroud)
为什么意味着有一个内置的系统别名导致这个。如果你想看,打开你的终端并输入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$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8914 次 |
| 最近记录: |