【问题标题】:alias a multipart command on the lefthand side in bashbash 左侧的多部分命令的别名
【发布时间】:2011-06-08 18:44:40
【问题描述】:

我有一个命令(在 Linux Bash 中),我想阻止自己使用特定选项运行。但是,我仍想使用其他选项运行该命令。因此,例如以下是可以的:

command opt1
command opt2

但我想禁用

command badopt

我正在考虑通过将其别名为我的个人资料中不存在的命令来做到这一点,例如

alias "command badopt"=djskagldjkgldasg

但这似乎不起作用。对于(轻松)禁用我使用此特定选项的能力同时保留我使用其他选项的能力的任何其他建议?

【问题讨论】:

    标签: bash command alias


    【解决方案1】:
    $ cat >> $HOME/.bashrc
    shutdown () {
      if [ "x$1" = x-h ]; then
        echo Please do not run shutdown with the -h option.
        return
      fi
      /sbin/shutdown "$@"
    }
    

    # 更新

    【讨论】:

    • 谢谢,这是一个很酷的主意。但是,当我尝试这样做时,它实际上会立即终止我的 Bash 会话,就像它正在退出一样。无论我使用“好”选项还是“坏”选项,都会发生这种情况,即使我摆脱了退出 1 行。
    • 哦,对,这是一个错误。当我接到电话时,我正要测试它。只需更改:exit 1return 并摆脱 exec
    • return 1 在这里不是更有用吗?
    【解决方案2】:

    bash 函数是你想要的。假设你要拦截的命令名为“foo”:

    foo () {
        case "$1" in 
            badopt) 
                echo "do not push this button again" >&2
                return 1
                ;;
        esac
        command foo "$@"
    }
    

    关键字command用于防止函数递归调用自身。

    【讨论】:

      猜你喜欢
      • 2010-10-19
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 2017-09-05
      • 2013-04-23
      相关资源
      最近更新 更多