是否可以在现有Bash命令中添加选项?
例如,当我将-foo传递给特定命令(cp,mkdir,rm ...)时,我想运行一个shell脚本。
答案 0 :(得分:3)
您可以为例如制作别名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
答案 1 :(得分:0)
一些程序员的代码看起来很酷而且很有吸引力……但是对于大多数命令,您应该非常小心地使用它:https://unix.stackexchange.com/questions/41571/what-is-the-difference-between-and
关于$ *和$ @的用法:
您不应使用其中任何一个,因为它们可能会意外损坏 一旦您有包含空格或通配符的参数。
我自己使用了至少几个月,直到我意识到这就是为什么我的bash代码有时无法正常工作的原因。
考虑更可靠的方法,但选择起来不那么容易且便携性较差。如注释中所指出的那样,使用更改重新编译原始命令,即:
从一些著名的开发人员资料库中下载c / c ++源代码:
在c / c ++中添加一些代码,并使用gcc / g ++进行编译。
此外,我想,您可以编辑 bash 本身以将其设置为检查作为命令传递给bash的字符串是否与某些模式匹配,请不要执行此操作然后执行一些不同的命令或bash脚本
如果您真的想对外壳进行自定义并添加功能,可以查看其他一些很酷的时尚外壳,例如 zsh , 鱼 ,可能他们有东西,我不知道。