如何将命令行参数传递给shell别名?

如何将命令行参数传递给别名? 这是一个示例:

alias mkcd='mkdir $1; cd $1;'

但是在这种情况下,$ xx会在创建时间的别名时进行翻译,而不是在运行时进行翻译。 不过,我已经创建了一个解决方法,使用一个shell函数(google搜索一下之后),如下所示:

function mkcd(){
  mkdir $1
  cd $1
}

只是想知道是否有办法让别名接受CL参数。
顺便说一句 - 我使用'bash'作为我的默认shell。


你找到了方法:创建一个函数而不是别名。 C shell有一个用于处理别名参数的机制,但bash和Korn shell不这样做,因为函数机制更加灵活并且提供了相同的功能。


为了重申已经发布的其他shell的内容,在Bash中有以下几个作品:

alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'

运行以下内容:

blah one two

给出如下输出:

First: one
Second: two

你不能在ksh中,但你可以在csh中。

alias mkcd 'mkdir !^; cd !^1'

在ksh中,函数是要走的路。 但是如果你真的想用别名:

alias mkcd='_(){ mkdir $1; cd $1; }; _'
链接地址: http://www.djcxy.com/p/57073.html

上一篇: How to pass command line arguments to a shell alias?

下一篇: Check for existence of wget/curl