是否可以向现有的 Bash 命令添加选项?
例如,当我将 -foo 传递给特定命令(cp、mkdir、rm ...)时,我想运行一个 shell 脚本。
您可以为例如cp
调用一个检查您的特殊参数的特殊脚本创建一个别名,然后调用该特殊脚本:
$ alias cp="my-command-script cp $*"
脚本看起来像
#!/bin/sh
# Get the actual command to be called
command="$1"
shift
# To save the real arguments
arguments=""
# Check for "-foo"
for arg in $*
do
case $arg in
-foo)
# TODO: Call your "foo" script"
;;
*)
arguments="$arguments $arg"
;;
esac
done
# Now call the actual command
$command $arguments
一些程序员花花公子的代码可能看起来很酷而且很有吸引力......但是对于大多数命令,您应该非常小心地使用它:https ://unix.stackexchange.com/questions/41571/what-is-the-difference-between-and
关于 $* 和 $@ 的使用:
您不应该使用其中任何一个,因为一旦您有包含空格或通配符的参数,它们就会意外中断。
我自己使用它至少几个月,直到我意识到这是我的 bash 代码有时不起作用的原因。
考虑更可靠,但不太容易且不太便携的选项。正如评论中指出的那样,重新编译原始命令并进行更改,即:
从一些受人尊敬的开发人员存储库下载 c/c++ 源代码:
在 c/c++ 中添加一些代码,用 gcc/g++ 编译。
另外,我想,您可以编辑bash本身以将其设置为检查作为命令传递给 bash 的字符串是否与某些模式匹配,不要执行此操作并执行某些不同的命令或 bash 脚本
如果你真的很喜欢为你的 shell 定制和添加功能的想法,也许可以看看其他一些很酷的时尚 shell,比如zsh、fish,也许他们有一些东西,我不知道。