"Aliasing" 个带参数的命令

"Aliasing" of Commands with Arguments

我知道有些命令可以通过shell取别名,比如

alias mv="cp"

但我想做一些类似的事情,但有论点(是的,我已经看到 other question,但我的问题略有不同)。类似于:

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

但这显然行不通

我希望防止用户直接杀死 sshd(至少是意外地)并使其重新启动(这是针对不止一次发生这种情况的服务器)。因此,除了 别名 ,有没有办法 阻止 命令 killall sshd 被执行,而是执行 service sshd restart相反?

您想拦截killall,所以:

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