如何将命令行参数传递给别名?下面是一个例子:
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。
当前回答
最简单的方法,是使用函数而不是别名。您仍然可以在任何时候从cli调用函数。在bash中,您可以添加函数名(){命令},它加载的别名相同。
function mkcd() { mkdir $1; cd $1 ;}
不确定其他贝壳
其他回答
这是在ksh工作:
$ alias -x mkcd="mkdir \$dirname; cd \$dirname;"
$ alias mkcd
mkcd='mkdir $dirname; cd $dirname;'
$ dirname=aaa
$ pwd
/tmp
$ mkcd
$ pwd
/tmp/aaa
“-x”选项使别名“exported”-别名在子shell中可见。
并且要注意,在脚本中定义的别名在脚本中是不可见的(因为别名是在加载脚本时展开的,而不是在解释一行时展开的)。这可以通过在同一个shell中执行另一个脚本文件来解决(使用dot)。
实际上,您不能随心所欲地使用Bash别名,因为别名是静态的。相反,使用您创建的函数。
更多信息请查看这里:http://www.mactips.org/archives/2008/01/01/increase-productivity-with-bash-aliases-and-functions/。(是的,我知道这是mactips.org,但这是关于Bash的,所以不用担心。)
空别名将执行它的args:
alias DEBUG=
我发现函数不能用~/来写。cshrc文件。这里是alias,它接受参数
例如,传递给'find'命令的参数
alias fl "find . -name '\!:1'"
Ex: >fl abc
ABC是参数传递为!:1
最简单的方法,是使用函数而不是别名。您仍然可以在任何时候从cli调用函数。在bash中,您可以添加函数名(){命令},它加载的别名相同。
function mkcd() { mkdir $1; cd $1 ;}
不确定其他贝壳