如何将命令行参数传递给别名?这是一个示例:

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

但在这种情况下, $xx 是在别名创建时而不是运行时进行翻译的。然而,我已经使用 shell 函数创建了一个解决方法(在谷歌搜索了一下之后),如下所示:

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

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

有帮助吗?

解决方案

您发现的方式:创建一个函数,而不是别名。 C shell中有做参数别名的机制,但bash和Korn shell中不这样做,因为运行机制更加灵活,并提供同样的功能。

其他提示

只是为了重申一下已经公布的其他炮弹,在以下工作:

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手册页:

  

有是用于替换文本使用参数的机制。如果   需要的论点,应当使用shell函数(参见功能   下文)。

所以看起来你已经回答了你自己的问题 - 而不是使用别名功能

您也可能会发现此命令有用:

mkdir dirname && cd $_

其中目录名是你要创建的目录名

最简单的方法,是使用功能不别名。你仍然可以从CLI随时调用的函数。在bash中,只需将它添加功能名称(){}命令它加载相同的别名。

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

不确定其他弹

实际上,您无法使用 Bash 别名执行您想要的操作,因为别名是静态的。相反,请使用您创建的函数。

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

我发现功能无法在〜/ .cshrc文件被写入。这里在别名这需要参数

例如,自变量传递给 '查找' 的命令

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”选项使别名“导出” - 别名是在子shell可见

和知道的事实是,在脚本中定义的别名是不可见的在该脚本(因为当脚本被加载,而不是当一行被解释别名展开)。这可以通过(使用点)在同一外壳执行另一脚本文件来解决。

我觉得你可以,如果你使用bash与外壳的功能做到这一点: http://www.cyberciti.biz/faq/ Linux的UNIX的传递参数到别名命令/

  

下面是使用python一个简单的例子的功能。您可以在〜/ .bashrc点击棒    你得有第一个左花括号点击后空间    python命令需要在双引号来获取变量替换结果    在端部不要忘记,分号

函数count(){蟒-c “为在x范围($ 1)民:打印张数”;}结果

$ count 6
0
1
2
3
4
5
$

这是空的别名将执行其ARGS:

alias DEBUG=
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top