如何将使用特定参数运行的命令的执行切换到另一个命令,而不是其他参数?

如何将使用特定参数运行的命令的执行切换到另一个命令,而不是其他参数?

问:如何在 Linux 系统上替换系统命令及其参数?

场景:系统上有一个带有参数的命令。

例子:

$ command -a restart
Output: something

我想替换那个执行具体的用那个命令具体的参数,例如command -a reload && echo hi。这样,该命令就永远不会执行重新启动,而是执行重新加载。

笔记:

  • 其他参数不应干扰。 command -a else应执行为command -a else.
  • 命令仅对 root 用户执行
  • 我无法替换命令文件本身,因为包的更新会替换它

这可能吗?

答案1

将以下内容添加到您的.bashrc.bash_aliases文件中:

my_command_(){
    if [ "$1 $2" = "-a restart" ] ; then
        shift 2
        my_command -a reload "$@"
    else
        my_command "$@"
    fi
}
alias my_command="my_command_"

这也将改变

my_command -a restart -b something

my_command -a reload -b something

但它不会改变my_command -b something -a restart


全系统替代方案:

$PATH在该命令所在目录之前的另一个目录中创建一个脚本,并使其可执行,例如/usr/local/bin/my_command,包含以下内容:

#!/bin/sh
if [ "$1 $2" = "-a restart" ] ; then
    shift 2
    /usr/bin/my_command -a reload "$@"
else
    /usr/bin/my_command "$@"
fi

更改/usr/bin/my_command为实际路径。

相关内容