无论命令的参数如何,在执行命令时运行脚本

时间:2016-07-08 02:27:59

标签: linux bash unix alias

rm -rf
rm -r
rm -f
rm

当运行这些命令中的任何一个时,我希望它们运行某个脚本。

alias ?='some_script.sh'

这样的东西

(在这种情况下,问号表示带有任何参数的rm命令。)

如何做到这一点?我没有使用别名,任何有效的方法都可以。

2 个答案:

答案 0 :(得分:2)

不要使用别名;定义一个函数:

rm () {
    some_script.sh
    command rm "$@"
}

以任何方式修改rm的行为时的标准免责声明适用。不要这样做some_script.sh旨在成为某种安全网。您可能会依赖它,如果在没有安装此安全网的计算机上运行rm,您会感到非常惊讶。

答案 1 :(得分:1)

如果您的要求是在每个bash命令上运行脚本,那么最好的方法是将它附加到bash中的特殊变量,每次在提示符中输入命令时都会执行该变量

PROMPT_COMMAND变量,您需要做的就是将脚本some_script.sh附加到其中

$ PROMPT_COMMAND+="some_script.sh;"

或者如果您只想为命令rm编写脚本,那么保留别名是最好的方法。在进行更改后,在~.bashrcsource添加该行。

alias rm="some_script.sh; rm"