别名ll代表什么命令?


28

有人可以告诉我别名ll用于什么终端命令吗?我在网上只能找到许多人说这是ls -lor ls -la或or 的别名ls -ltr。但这是完全错误的。结果看起来不一样。有什么方法可以定位ll和查看其语法吗?

Answers:


76

您可以使用aliastype命令来检查特定别名的含义:

$ alias ll
alias ll='ls -alF'

$ type ll
ll is aliased to `ls -alF'

但是请注意,别名可能会使用其他别名,因此您可能必须递归检查它,例如,对于ll,还应该检查ls其调用的命令:

$ alias ls
alias ls='ls --color=auto'

$ type ls
ls is aliased to `ls --color=auto'

所以ll实际上意味着:

ls --color=auto -alF

10
注意,在一般情况下,一个命令可以具有多个同时定义。type -a commandname将显示全部-它会按优先级告诉您命令是PATH中的别名,函数,内置文件还是一个或多个可执行文件中的一个或多个。例如,这有助于理解为什么不对命令进行混叠处理不会将其完全返回到预期的行为的原因。
暂停,直到另行通知。

我建议alias ll='ls -lh'ls -l如果您想要以字节为单位的大小,而不是人类友好的B / kiB / MiB / GiB,则可以运行。
彼得·科德斯

13

ll是您中定义的别名~/.bashrc,只要您不更改它,它就是ls -alF

$ grep ll= <~/.bashrc
alias ll='ls -alF'

这三个选项是:

  • -a,--all –不要忽略以。开头的条目。
  • -l –使用长列表格式
  • -F,--classify –将指示符(* / => @ |之一)附加到条目

$ grep ls= <~/.bashrc
alias ls='ls --color=auto'

显示,ls本身又是的别名ls --color=auto

使用--color=autols仅在将标准输出连接到端子时发出颜色代码。该LS_COLORS环境变量可以更改设置。使用dircolors 命令进行设置。


不一定是.bashrc。如果使用其他外壳,它将在.rc文件中为该外壳定义-,cshrc,.tchshc等。
jamesqf

@jamesqf我认为使用其他shell的人也知道其中预定义了哪些别名–我想问的是默认的Ubuntu设置,bash用户的默认shell 在哪里,别名ll定义在/etc/skel/.bashrc哪个副本中复制到每个新版本中用户的主目录。当然,您可以使用任何文件来存储自己的别名-您所需要的只是它的来源。
甜点

2
无需将文件重定向到grep,它将文件名作为参数。虽然grepping启动文件将帮助您找到其中的别名是(重新)定义(注意,这可能是在一个文件中/etc-明知会为你节省一些挠头,如果你从用户启动文件删除它,它仍然存在,甚至更改其行为),如果您只是想快速了解定义是什么,请按照接受的答案中的说明执行别名命令。
暂停,直到另行通知。

@DennisWilliamson 不必bash打开文件,但是更好!问题帖子中的最后一句话为:是否有任何方法可以查找ll和查看其语法?,这就是我的答案。
甜点

3

您可以查看〜/ .bashrc(或别名所在的某些文件),也可以在shell中编写以下命令:

command -v ll # "command" is a shell built-in that display information about       
              # the command. Use the built-in "help command" to see the 
              # options.
type -p ll # "type" is another built-in that display information about how the 
           # command would be interpreted
grep -r "alias ll=" ~ # and don't worry about de .file that contains your 
                      # alias. This command search recursively  under  each  
                      # folder of your home. So it's something rude.
find ~ -maxdepth 1 -type f | xargs grep "alias ll" # Just look in 
                      # the files (not folders) in your home folder

但是,为什么使用不带-name“。*”的find呢?因为你可以把它放在你的.bashrc中

source bash_hacks # where the file bash_hacks, in your home directory can 
                  # contain the alias ll='ls -la etc etc'.

由于“ ll”是一个别名,因此不必只具有一个含义(ll ='ls -alF --color'),因此您可以像其他命令一样对“ ll”进行别名,例如,我不知道“ rm” 。我认为这更像是一种惯例(常用产品)。

但是“ ll”可能是存储在PATH任意文件夹中的程序。例如,如果您的家中有一个名为“ bin”的文件夹,请制作一个“ ll”脚本,其中包含以下内容

#!/bin/bash
ls -lhar

但是,如果您的PATH已更改为添加另一个包含新的“ ll”命令的文件夹,该怎么办?有关更多有趣的信息,您可以查阅以下链接到相关问题。


0

无需解析〜/ .bashrc或任何其他脚本。您可以alias在终端中检查所有别名键入命令的当前值。它将所有定义的别名及其定义显示在屏幕上。


您好,欢迎光临askubuntu。这个答案如何为接受的事物增加一些东西?
布鲁尼

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.