使用 whereis 找到了 ls 二进制文件,但找不到 ll,为什么?

使用 whereis 找到了 ls 二进制文件,但找不到 ll,为什么?

使用 whereis 找到 ls 二进制文件,但找不到 ll ,为什么?如何找到 ll 二进制文件的位置?

我使用“whereis”找到了“ls”二进制文件,但找不到“ll”

$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz

但找不到 ll:

$ whereis ll
ll:

答案1

ll不是二进制文件而是ls -alF命令的别名。

检查.bashrc文件:

$ alias ll
alias ll='ls -alF'

答案2

作为kos 指出在评论中,你应该使用bash 内置type命令与 不同,它还whereis能够识别别名和 shell 内置命令:

$ type ll ls cd
ll is aliased to `ls -alF'
ls is hashed (/bin/ls)
cd is a shell builtin

(关于“hashed”的含义,请参阅unix.SE 上的这个问题

答案3

许多用户喜欢快捷方式,这就是别名,它是用户的快捷选项。

脚本不应该使用快捷方式,这不是一个可移植的设计,正如您所发现的,这些别名命令并没有一致地定义。

最简单的答案可以满足您的需要,假设重复使用'll':

在脚本中,引用命令之前定义别名 ll='ls -l',然后“ll”将在整个脚本中起作用。

#!/bin/bash
alias  ll='ls -alF'
... (rest of the script)

更好的答案:最好在脚本中使用完整命令,提供文档。切勿在其他人必须使用的脚本中使用别名。

相关内容