如何将命令行parameter passing给shell别名?

如何将命令行parameter passing给别名? 这是一个示例:

别名mkcd ='mkdir $ 1;  cd $ 1;'

但是在这种情况下,$ xx在创build时间的别名时被转换,而不是在运行时。 不过,我已经创build了一个解决方法,使用一个shell函数(在googlesearch一下之后),如下所示:

函数mkcd(){
   mkdir $ 1
   cd $ 1
 }

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

你find了方法:创build一个函数,而不是一个别名。 C shell有一个机制来处理别名,但是bash和Korn shell不这样做,因为函数机制更加灵活,并且提供了相同的function。

只是为了重申已经发布的其他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; }; _' 

引用bash手册页:

在replace文本中没有使用参数的机制。 如果需要参数,应该使用shell函数(参见下面的函数)。

所以看起来你已经回答了你自己的问题 – 使用一个函数而不是一个别名

你也可以find这个命令有用:

mkdir dirname && cd $_

其中dirname是要创build的目录的名称

你实际上不能用Bash别名做你想要的,因为别名是静态的。 相反,请使用您创build的function。

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

我发现函数不能写在〜/ .cshrc文件中。这里的别名需要参数

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

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

其中abc是作为!传递的参数: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”选项使别名“导出” – 别名在subhells中可见。

并且请注意,脚本中定义的别名在该脚本中是不可见的(因为别名在加载脚本时展开,而不是在解释行时)。 这可以通过在同一个shell中使用另一个脚本文件(使用点)来解决。

最简单的方法是使用函数而不是别名。 你仍然可以从cli中随时调用一个函数。 在bash中,你可以添加函数名(){命令}它加载相同的别名。

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

不知道其他的炮弹

我认为你可以用shell函数来实现,如果你使用bash: http : //www.cyberciti.biz/faq/linux-unix-pass-argument-to-alias-command/

这是一个使用python的简单示例函数。 你可以粘在〜/ .bashrc中
第一个左大括号后面必须有一个空格
python命令需要用双引号来获得variablesreplace
不要忘记最后的分号

函数count(){python -c“在xrange($ 1)中的数字:print num”;}

 $ count 6 0 1 2 3 4 5 $ 

一个空的别名将执行它的参数:

 alias DEBUG=