2016-07-08 101 views
1
rm -rf 
rm -r 
rm -f 
rm 

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

喜欢的东西alias ?='some_script.sh'

(在这种情况下,问号意味着任何参数的rm命令。)

如何才能做到这一点?我不必使用别名,任何工作都很好。

回答

2

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

rm() { 
    some_script.sh 
    command rm "[email protected]" 
} 

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

1

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

PROMPT_COMMAND变量,所有你需要做的就是你的脚本some_script.sh追加到它像

$ PROMPT_COMMAND+="some_script.sh;" 

或者,如果你想只在命令rm脚本,然后保持一个别名是最好的方式做它。进行更改后,在您的~.bashrcsource中添加该行。

alias rm="some_script.sh; rm"