如何使 bash 别名调用以 PWD 为条件?

kfm*_*e04 5 bash alias

我目前有这个别名:

alias cmakerel='cmake -DCMAKE_BUILD_TYPE=Release -Wno-dev ../../ && make -j4'
Run Code Online (Sandbox Code Playgroud)

本质上,它会调用 cmakeout-of-source从 PWD进行构建。它工作正常,但按原样,它几乎可以从任何地方运行(我不想要)。

我如何修改这个别名,以便当且仅当字符串bld在我当前的工作目录中时它才运行?

我需要这个改变,因为没有它,我有时会不小心从 tst 目录或其他目录调用这个命令,我只会在那里造成一团糟。

Dan*_*eck 10

来自man bash

对于几乎所有目的,别名都被 shell 函数取代。

所以让它成为一个shell函数。

function cmakerel {
    if expr match "$PWD" '.*bld.*' >/dev/null ; then
        cmake -D....
    else
        echo "Wrong directory!"
    fi
}
Run Code Online (Sandbox Code Playgroud)

这是一个正则表达式,您可以根据需要进行调整。

  • @kfmfe04 在 `cmake` 调用下方添加一行 `exit $?`。然后它将退出,并显示上次执行的命令的退出代码。除非你使用管道,否则很简单。在 `echo` 调用下方,添加 `exit 1`。 (2认同)