运行 执行命令时的脚本,与命令的参数无关

Run script when a command is executed irrespective of the command's arguments

rm -rf
rm -r
rm -f
rm

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

类似于alias ?='some_script.sh'

(这里的问号表示带有任何参数的 rm 命令。)

如何做到这一点?我不必使用别名,任何有用的都可以。

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

PROMPT_COMMAND 变量,您需要做的就是将您的脚本 some_script.sh 添加到它,例如

$ PROMPT_COMMAND+="some_script.sh;"

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

alias rm="some_script.sh; rm"

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

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

以任何方式修改 rm 的行为时,标准免责声明均适用。不要这样做,因为 some_script.sh 旨在成为某种安全网。如果您在没有安装此安全网的机器上 运行 rm,您可能会变得依赖它,并且会感到不愉快。