如何将命令行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=