【问题标题】:Alias with input. Unix带输入的别名。 Unix
【发布时间】:2015-08-31 11:32:56
【问题描述】:

考虑以下命令。

grep -rn "someString" . --color

我想在我的.cshrc 中给它起别名并执行如下命令:

myGrep someString 

有没有办法做到这一点?

【问题讨论】:

  • 你试过 alias mygrep='grep something.....'
  • csh 没有函数,这就是别名可以接受参数的原因。 (或者csh 没有函数因为别名可以接受参数;我不确定这里的因果关系。)
  • 呃。我虽然别名接受了参数;显然,您只需在别名扩展之前使用历史扩展来访问命令中的参数。

标签: linux shell unix alias csh


【解决方案1】:

csh 在扩展别名之前将您的命令记录在其历史列表中,因此您可以在使用别名时使用历史扩展来访问别名的参数。

% alias myGrep grep -rn \!:1 . --color

当你使用myGrep foo时,那个二字命令会被记录在历史中,然后扩展为grep -rn !:1 . --color。在该命令中,!:1 引用前一个命令的第一个参数 (myGrep foo),从而导致实际执行的 grep -rn foo . --color

【讨论】:

    【解决方案2】:

    创建带参数的别名的正确方法是使用函数。在 Bash 函数中,参数被评估为$1$2 等等。字符串连接是隐式的。考虑:

    hello() {
        echo 'Hello' $1
    }
    

    我只是这样称呼:

    $ hello Eduard
    Hello Eduard
    

    【讨论】:

    • csh 没有函数。
    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 2013-03-13
    • 1970-01-01
    • 2015-09-02
    • 2013-04-30
    • 2012-08-21
    • 2012-10-15
    • 2014-04-30
    相关资源
    最近更新 更多