别名也许不应该是别名?

问题描述:

我非常新创造在bash的别名和函数,所以我想要的东西,简而言之别名也许不应该是别名?

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

很简单 所以我可以做编辑junk.txt

编辑它的背景,但不知道我是否真的需要为这样的东西创建一个函数。这对unix人来说可能太明显了。

使用功能,而不是一个别名:

edit() { 
    emacs "[email protected]" & 
} 

只要使用这个别名:

alias edit='emacs ' 

注意空格报价之前,可以让你传递的参数直接emacs的命令那么你可以称这个别名为:

edit junk.txt 

或者

edit foo.sh 
+1

以及背景发生在哪里? – glglgl 2013-04-25 15:44:25

+0

@glglgl:我相信你可以调用'edit foo.sh&'。没有通过 – anubhava 2013-04-25 15:48:13

+0

进行测试如果要输入'&',直接调用'emacs'就可以了。但是OP希望摆脱每次都输入'&... ... – glglgl 2013-04-25 15:51:06

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

引述bash document

没有机制使用在替换文本参数,如在csh。如果需要参数,应该使用shell函数(请参阅Shell函数)。

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

(CSH(和tcsh)别名是更强大,但缺乏CSH功能 - 你正在使用bash反正)

注意名称argv,你在你的问题的尝试中使用,在bash中并不意味着什么。参数(对于脚本或函数)被称为$1,$2等;参数的完整列表是$*[email protected]。但是这不适用于别名。 bash文件解释了这一切。

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