1

我对在 bash 中创建别名和函数非常陌生,所以我想要一些非常简单的东西

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

所以我可以编辑 junk.txt

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

4

3 回答 3

2

使用函数,而不是别名:

edit() {
    emacs "$@" &
}
于 2013-04-25T15:41:49.607 回答
1

只需将此别名用作:

alias edit='emacs '

请注意引号前的空格,它可以让您将参数直接传递给 emacs 命令,然后您可以将此别名称为:

edit junk.txt

或者

edit foo.sh
于 2013-04-25T15:42:01.437 回答
0

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

引用bash 文档

没有在替换文本中使用参数的机制,如在 csh 中。如果需要参数,则应使用外壳函数(请参阅外壳函数)。

别名只能用作简单命令的第一个字。没有办法扩展edit foo.txtemacs foo.txt &.

(csh(和 tcsh)别名更强大,但 csh 缺少功能——而且你还是在使用 bash。)

请注意,argv您在问题中尝试使用的名称在 bash 中并不意味着任何特别的含义。参数(脚本或函数)被称为$1,$2等;完整的参数列表是$*or $@。但这不适用于别名。bash 文档解释了这一切。

glglgl 的回答是正确的:使用函数。

于 2013-04-25T17:11:20.203 回答