Bash:为现有命令添加选项

时间:2012-11-01 10:16:27

标签: linux bash

是否可以在现有Bash命令中添加选项?

例如,当我将-foo传递给特定命令(cp,mkdir,rm ...)时,我想运行一个shell脚本。

2 个答案:

答案 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 ,可能他们有东西,我不知道。