我如何知道我在 中创建的别名.bash_aliases
是否替换了同名的实际命令?我不想意外地做这样的事情。
(我查看了“可能已经有答案的问题”和“类似问题”,但没有看到匹配项)
我之所以询问是因为我觉得系统(Ubuntu 13.10)没有给出警告。
答案1
您可以type
在终端中使用它。
假设你有一个命令rm
作为 alias rm -i
。如果你检查,
type rm
你会得到,
rm is aliased to `rm -i'
如果你没有任何别名,rm
你将获得,
rm is /bin/rm
答案2
警告:此方法要求您实际运行命令,而不像其他答案那样“报告”shell 状态。在执行之前您永远无法确定,不是吗?
在你的 shell 中输入
set -x
在 shell 执行时,您将看到+ ...
以下行。例如,当我运行ls
(通常ls --color=auto
在 Ubuntu 上别名为 )时,我得到以下内容:
$ ls ~
+ ls --color=auto /home/rctay
bin ext foo.py Music shared tmp-www tmux-client-32280.log
...
要关闭它,请运行set +x
。
答案3
在为某个命令定义别名之前,调用它,并在命令名上fn
运行:type
type fn
如果没有该名称的命令,type
将返回not found
。
定义别名后,您可以使用locate
它来检查可能存在的冲突:
locate '*bin/fn'
这将在系统的任何位置查找目录中指定的命令,该目录的名称表明它是可执行文件。请注意,这与因为将在可能不位于默认路径上的目录中查找fn
不同。type
locate
bin