问:如何在 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
为实际路径。