在bash终端中的l(小写L)命令

8
vikram@vikram-Studio-XPS-1645:~/comp$ l
3rdParty/    que.ico     SE32.EXE   start.fgx  Supp/         WebResources/
autorun.inf  Readme.txt  START.EXE  start.fgz  Walkthrough/
vikram@vikram-Studio-XPS-1645:~/comp$ ls
3rdParty     que.ico     SE32.EXE   start.fgx  Supp         WebResources
autorun.inf  Readme.txt  START.EXE  start.fgz  Walkthrough
vikram@vikram-Studio-XPS-1645:~/comp$ 

这两个命令有什么区别?
我尝试了$ which l,但没有输出。 $ man l也没有结果。
我还试图在谷歌上搜索,但没有成功。

是的,我无法想象谷歌搜索这样的东西会有任何帮助。 - asmeurer
1
@asmeurer: 现在可以了(https://www.google.com/search?q=bash+l+command&oq=bash+l+command) - Keith Thompson
4个回答

19

l 可能是类似于 ls -F 的别名。选项 -F 会导致 ls 在目录名称后追加 /,在可执行常规文件后追加 * 等。

更新: 根据您的评论,l 被别名为 ls -CF。单个字母选项可以被“捆绑”,因此ls -CF等同于 ls -C -F。选项 -C 使 ls 按列列出条目。如果 ls 认为它正在写入终端,则这是默认值;-C 选项使其无条件地以此方式工作。(ls -1 每行列出一个条目,如果 ls 不写入终端,则这是默认值。)

type -a l 应该显示它的定义。它可能被设置在您的 $HOME/.bashrc 文件中。

$ 是您的 shell 提示符的一部分,不是命令的一部分。)


vikram@vikram-Studio-XPS-1645:~/comp$ type ll 是 ls -CF 的别名。谢谢,我明白了! - Vikram
很酷。我知道which,但不知道type -a - asmeurer
一个更简单的检查方法是在要检查的命令上运行alias。例如:在我的机器上运行alias l会得到alias l='ls -CF' - undefined
@ZeZNiQ alias l 只告诉你它是否以别名的形式定义,并不告诉你其他可能的定义方式:比如作为 $PATH 中某个位置的命令,或者作为一个 shell 函数。type -a l 将展示所有这些定义方式。 - undefined

0

查找别名的方法是检查~/.bashrc文件

$sudo cat ~/.bashrc | grep 'alias l='
alias l='ls -CF'

如果在.bashrc中没有设置别名,会怎么样?一个更简单的检查方法是在要检查的命令上直接运行alias。例如:在我的机器上运行alias l会得到alias l='ls -CF' - undefined

0
据我所知,不存在任何名为“l”的通用命令,也没有任何一个命令像“ls”一样,这就是为什么你在which lman l中得到了空结果的原因。
你的路径中是否有名为l的东西,它或许会运行ls

-1

这是针对“ls”的特定bash命令。

ilia@Latitude-E6410:~$ mkdir ltest
ilia@Latitude-E6410:~$ cd ltest
ilia@Latitude-E6410:~/ltest$ echo 321 > 321.txt
ilia@Latitude-E6410:~/ltest$ echo 123 > 123.txt
ilia@Latitude-E6410:~/ltest$ ls
123.txt  321.txt
ilia@Latitude-E6410:~/ltest$ l
123.txt  321.txt
ilia@Latitude-E6410:~/ltest$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
ilia@Latitude-E6410:~/ltest$ whereis asdasdasd #This command doesn't exists
asdasdasd:
ilia@Latitude-E6410:~/ltest$ whereis l #Results of "whereis l" and "whereis asdasdasd" are same
l:
ilia@Latitude-E6410:~/ltest$ sh #Try "l" in sh
$ ls #"ls" is working
123.txt  321.txt
$ l #But "l" doesn't
sh: 2: l: not found
$ 

这根本不是Bash命令。被接受的答案已经说得很清楚了:它是一个别名,由用户创建的文件或发行版维护者在某个地方定义的。顺便说一下,在Bash中,whichwhereis都不是确定命令/函数/别名的好方法。相反,使用type -atype -a l将给你一些信息(但不会告诉你它在哪里定义)。 - gniourf_gniourf
是的,它是ls -CF的别名,抱歉。 - Ilia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接