如何将命令行参数传递给别名?下面是一个例子:
alias mkcd='mkdir $1; cd $1;'
但是在本例中,$xx是在创建别名时而不是在运行时被转换的。然而,我已经创建了一个使用shell函数的解决方案(在谷歌了一下之后),如下所示:
function mkcd(){ mkdir $1 cd $1 }
只是想知道是否有一种方法使别名接受CL参数。 BTW -我使用'bash'作为我的默认shell。
如何将命令行参数传递给别名?下面是一个例子:
alias mkcd='mkdir $1; cd $1;'
但是在本例中,$xx是在创建别名时而不是在运行时被转换的。然而,我已经创建了一个使用shell函数的解决方案(在谷歌了一下之后),如下所示:
function mkcd(){ mkdir $1 cd $1 }
只是想知道是否有一种方法使别名接受CL参数。 BTW -我使用'bash'作为我的默认shell。
当前回答
只是重申已经发布的其他shell,在Bash中以下工作:
alias blah='function _blah(){ echo "First: $1"; echo "Second: $2"; };_blah'
运行如下:
blah one two
给出如下输出:
First: one
Second: two
其他回答
引用bash手册页:
没有在替换文本中使用参数的机制。如果 如果需要参数,则应该使用shell函数(参见FUNCTIONS) 下文)。
因此,看起来您已经回答了自己的问题——使用函数而不是别名
你不能用ksh,但可以用csh。
alias mkcd 'mkdir \!^; cd \!^1'
在ksh中,函数是最重要的。但如果你真的很想用别名
alias mkcd='_(){ mkdir $1; cd $1; }; _'
空别名将执行它的args:
alias DEBUG=
最简单的方法,是使用函数而不是别名。您仍然可以在任何时候从cli调用函数。在bash中,您可以添加函数名(){命令},它加载的别名相同。
function mkcd() { mkdir $1; cd $1 ;}
不确定其他贝壳
你可能还会发现这个命令很有用:
Mkdir dirname && CD $_
其中dirname是要创建的目录名