别名也许不应该是别名?

时间:2013-04-25 15:39:28

标签: linux unix

我很擅长在bash中创建别名和函数,所以我想要一些非常简单的东西 简而言之

alias edit='emacs 'argv[0]'&'

所以我可以编辑junk.txt

在后台编辑它,但不确定我是否真的需要为这样的东西创建一个函数。这对于unix人来说可能太明显了。

3 个答案:

答案 0 :(得分:2)

使用函数,而不是别名:

edit() {
    emacs "$@" &
}

答案 1 :(得分:1)

只需将此别名用作:

alias edit='emacs '

在引号之前注意一个空格,它允许您将参数直接传递给emacs命令,然后您可以将此别名称为:

edit junk.txt

OR

edit foo.sh

答案 2 :(得分:0)

你不能用别名来做你想做的事情,至少不是用bash做的。

引用bash document

  

在替换文本中没有使用参数的机制,就像在csh中一样。如果需要参数,则应使用shell函数(请参阅Shell函数)。

别名只能用作简单命令的第一个单词。无法将edit foo.txt扩展为emacs foo.txt &

(csh(和tcsh)别名更强大,但csh缺少函数 - 无论如何你都在使用bash。)

请注意,您在问题中尝试使用的名称argv并不代表bash中的任何内容。参数(对于脚本或函数)称为$1$2等;参数的完整列表是$*$@。但这不适用于别名。 bash文档解释了所有这些。

glglgl's answer是正确的:使用函数。