如何将命令行参数传递给别名?下面是一个例子:

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

但是在本例中,$xx是在创建别名时而不是在运行时被转换的。然而,我已经创建了一个使用shell函数的解决方案(在谷歌了一下之后),如下所示:

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

只是想知道是否有一种方法使别名接受CL参数。 BTW -我使用'bash'作为我的默认shell。


当前回答

实际上,您不能随心所欲地使用Bash别名,因为别名是静态的。相反,使用您创建的函数。

更多信息请查看这里:http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/。(是的,我知道这是mactips.org,但这是关于Bash的,所以不用担心。)

其他回答

你可能还会发现这个命令很有用:

Mkdir dirname && CD $_

其中dirname是要创建的目录名

你不能用ksh,但可以用csh。

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

在ksh中,函数是最重要的。但如果你真的很想用别名

alias mkcd='_(){ mkdir $1; cd $1; }; _'

实际上,您不能随心所欲地使用Bash别名,因为别名是静态的。相反,使用您创建的函数。

更多信息请查看这里:http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/。(是的,我知道这是mactips.org,但这是关于Bash的,所以不用担心。)

只是重申已经发布的其他shell,在Bash中以下工作:

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

运行如下:

blah one two

给出如下输出:

First: one
Second: two

我发现函数不能用~/来写。cshrc文件。这里是alias,它接受参数

例如,传递给'find'命令的参数

alias fl "find . -name '\!:1'"     
Ex: >fl abc

ABC是参数传递为!:1