Bash:向现有命令添加选项

问题描述 投票:2回答:2

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

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

linux bash
2个回答
4
投票

例如,您可以为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

0
投票

有些程序员花花公子的代码可能看起来很酷而且很有吸引力……但是对于大多数命令,您应该非常小心地使用它:https://unix.stackexchange.com/questions/41571/what-is-the-difference-between-and

关于$ *和$ @的用法:

您不应该使用其中任何一个,因为它们可能会意外损坏一旦您有包含空格或通配符的参数。

我自己使用了至少几个月,直到我意识到这是我的bash代码有时不起作用的原因。

考虑更可靠,但不那么容易和不便的选择。如注释中所指出的那样,使用更改重新编译原始命令,即:

从一些著名的开发人员资料库下载c / c ++源代码:

[在c / c ++中添加一些代码,使用gcc / g ++进行编译。

此外,我想,您可以编辑bash本身,以检查作为命令传递给bash的字符串是否与某些模式匹配,请不要执行此命令并执行其他命令或bash脚本

如果您真的对定制和向外壳添加功能的想法很感兴趣,也许可以看看其他一些很酷的时尚外壳,例如zshfish,可能它们有些东西,我不知道。

© www.soinside.com 2019 - 2024. All rights reserved.