代码之家  ›  专栏  ›  技术社区  ›  slik

在bash中向alias传递参数[duplicate]

  •  110
  • slik  · 技术社区  · 14 年前

    是否可以执行以下操作:

    mongodb bin/mongod
    

    在我的bash_简介中

    alias = "./path/to/mongodb/$1"
    
    6 回复  |  直到 11 年前
        1
  •  224
  •   Dennis Williamson    8 年前

    别名将扩展到它所表示的字符串。别名之后的任何内容都将在其扩展后出现,而不需要或能够作为显式参数传递(例如。 $1

    $ alias foo='/path/to/bar'
    $ foo some args
    

    将扩展到

    $ /path/to/bar some args
    

    $ foo () { /path/to/bar "$@" fixed args; }
    $ foo abc 123
    

    会像你那样被处死

    $ /path/to/bar abc 123 fixed args
    

    要取消定义别名:

    unalias foo
    

    要取消定义函数:

    unset -f foo
    

    要查看类型和定义(对于每个定义的别名、关键字、函数、内置文件或可执行文件):

    type -a foo
    

    或仅键入(对于优先级最高的出现项):

    type -t foo
    
        2
  •  22
  •   leed25d    14 年前

    通常,当我想在Bash中将参数传递给别名时,我会使用别名和类似这样的函数的组合,例如:

    function __t2d {                                                                
             if [ "$1x" != 'x' ]; then                                              
                date -d "@$1"                                                       
             fi                                                                     
    } 
    
    alias t2d='__t2d'                                                               
    
        3
  •  19
  •   osirisgothra    10 年前

    要在别名中使用参数,我使用以下方法:

    alias myalias='function __myalias() { echo "Hello $*"; unset -f __myalias; }; __myalias'
    

    alias myalias='function __myalias() { echo "Hello $*"; myresult=$?; unset -f __myalias; return $myresult; }; __myalias'
    

    所以。。

    你可以,如果你需要这个变量的话

    alias mongodb='function __mongodb() { ./path/to/mongodb/$1; unset -f __mongodb; }; __mongodb'
    

    当然。。。

    alias mongodb='./path/to/mongodb/'
    

    我希望这能帮到你:)

        4
  •  8
  •   blreay    7 年前

    这是避免使用函数的解决方案:

    alias addone='{ num=$(cat -); echo "input: $num"; echo "result:$(($num+1))"; }<<<'
    

    试验结果

    addone 200
    input: 200
    result:201
    
        5
  •  3
  •   Matt gman    9 年前

    csh公司 (与 )你可以随心所欲。

    alias print 'lpr \!^ -Pps5'
    print memo.txt
    

    \!^ 导致此时在命令中插入参数。

    这个 ! 性格是由 \ 以防止它被解释为历史命令。

    还可以传递多个参数:

    alias print 'lpr \!* -Pps5'
    print part1.ps glossary.ps figure.ps
    

    (示例取自 http://unixhelp.ed.ac.uk/shell/alias_csh2.1.html .)

        6
  •  -3
  •   Schroeder    11 年前

    function __GetIt {
        cp ./path/to/stuff/$* .
    }
    
    alias GetIt='__GetIt'