相关疑难解决方法(0)

运行被别名隐藏的命令

假设我在 bash 中有以下别名 - alias ls='ls --color=auto'- 我想在ls没有选项的情况下调用普通。这样做的唯一方法是取消别名,执行命令然后再次别名吗?或者有一些漂亮的技巧或解决方法?

shell bash alias

190
推荐指数
4
解决办法
4万
查看次数

在 PATH 中运行与现有函数同名的可执行文件

有时我会定义一个函数来隐藏可执行文件并调整其参数或输出。因此该函数与可执行文件具有相同的名称,我需要一种如何从该函数运行可执行文件而不递归调用该函数的方法。例如,要自动运行的输出fossil diff通过colordiffless -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并检查结果。有没有更简单的方法?

bash path function

17
推荐指数
1
解决办法
3042
查看次数

标签 统计

bash ×2

alias ×1

function ×1

path ×1

shell ×1