假设我在 bash 中有以下别名 - alias ls='ls --color=auto'
- 我想在ls
没有选项的情况下调用普通。这样做的唯一方法是取消别名,执行命令然后再次别名吗?或者有一些漂亮的技巧或解决方法?
有时我会定义一个函数来隐藏可执行文件并调整其参数或输出。因此该函数与可执行文件具有相同的名称,我需要一种如何从该函数运行可执行文件而不递归调用该函数的方法。例如,要自动运行的输出fossil diff
通过colordiff
与less -R
使用:
function fossil () {
local EX=$(which fossil)
if [ -z "$EX" ] ; then
echo "Unable to find 'fossil' executable." >&2
return 1
fi
if [ -t 1 ] && [ "$1" == "diff" ] ; then
"$EX" "$@" | colordiff | less -R
return
fi
"$EX" "$@"
}
Run Code Online (Sandbox Code Playgroud)
如果我确定可执行文件的位置,我可以简单地输入/usr/bin/fossil
. Bash 认识到这/
意味着它是一个可执行文件,而不是一个函数。但由于我不知道确切的位置,我不得不求助于调用which
并检查结果。有没有更简单的方法?