别名也许不应该是别名?
问题描述:
我非常新创造在bash的别名和函数,所以我想要的东西,简而言之别名也许不应该是别名?
alias edit='emacs 'argv[0]'&'
很简单 所以我可以做编辑junk.txt
编辑它的背景,但不知道我是否真的需要为这样的东西创建一个函数。这对unix人来说可能太明显了。
答
只要使用这个别名:
alias edit='emacs '
注意空格报价之前,可以让你传递的参数直接emacs的命令那么你可以称这个别名为:
edit junk.txt
或者
edit foo.sh
答
你不能做你想用别名做的事情,至少在bash中不行。
没有机制使用在替换文本参数,如在csh。如果需要参数,应该使用shell函数(请参阅Shell函数)。
别名只能用作简单命令的第一个单词。没有办法将edit foo.txt
扩展为emacs foo.txt &
。
(CSH(和tcsh)别名是更强大,但缺乏CSH功能 - 你正在使用bash反正)
注意名称argv
,你在你的问题的尝试中使用,在bash中并不意味着什么。参数(对于脚本或函数)被称为$1
,$2
等;参数的完整列表是$*
或[email protected]
。但是这不适用于别名。 bash文件解释了这一切。
glglgl's answer是正确的:使用函数。
以及背景发生在哪里? – glglgl 2013-04-25 15:44:25
@glglgl:我相信你可以调用'edit foo.sh&'。没有通过 – anubhava 2013-04-25 15:48:13
进行测试如果要输入'&',直接调用'emacs'就可以了。但是OP希望摆脱每次都输入'&... ... – glglgl 2013-04-25 15:51:06