是否可以在现有的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脚本
如果您真的对定制和向外壳添加功能的想法很感兴趣,也许可以看看其他一些很酷的时尚外壳,例如zsh,fish,可能它们有些东西,我不知道。