"混叠"带参数的命令

时间:2016-02-08 15:24:33

标签: bash alias

我知道有些命令可以通过shell进行别名,例如

alias mv="cp"

但是我想做一些类似但有争议的事情(是的,我见过other question,但我的问题略有不同)。类似于:

sshkill() {
  service sshd restart 
}
alias sshkill="killall sshd"

但这显然不起作用。

我希望阻止用户直接杀死sshd(至少是偶然)并使其重新启动(这适用于多次发生这种情况的服务器)。那么,有没有一种方法可以阻止命令killall sshd被执行而不是执行service sshd restart

而不是别名

1 个答案:

答案 0 :(得分:5)

你想拦截killall,所以:

killall() {
  if [ "$1" = "sshd" ]; then
    echo "some warning message, and perhaps service sshd restart"
  else
    command killall "$@"
  fi
}