我对在 bash 中创建别名和函数非常陌生,所以我想要一些非常简单的东西
alias edit='emacs 'argv[0]'&'
所以我可以编辑 junk.txt
在后台编辑它,但不确定我是否真的需要为这样的东西创建一个函数。对于 Unix 人来说,这可能太明显了。
使用函数,而不是别名:
edit() {
emacs "$@" &
}
只需将此别名用作:
alias edit='emacs '
请注意引号前的空格,它可以让您将参数直接传递给 emacs 命令,然后您可以将此别名称为:
edit junk.txt
或者
edit foo.sh
你不能用别名做你想做的事情,至少不能在 bash 中。
引用bash 文档:
没有在替换文本中使用参数的机制,如在 csh 中。如果需要参数,则应使用外壳函数(请参阅外壳函数)。
别名只能用作简单命令的第一个字。没有办法扩展edit foo.txt
到emacs foo.txt &
.
(csh(和 tcsh)别名更强大,但 csh 缺少功能——而且你还是在使用 bash。)
请注意,argv
您在问题中尝试使用的名称在 bash 中并不意味着任何特别的含义。参数(脚本或函数)被称为$1
,$2
等;完整的参数列表是$*
or $@
。但这不适用于别名。bash 文档解释了这一切。
glglgl 的回答是正确的:使用函数。