我很擅长在bash中创建别名和函数,所以我想要一些非常简单的东西 简而言之
alias edit='emacs 'argv[0]'&'
所以我可以编辑junk.txt
在后台编辑它,但不确定我是否真的需要为这样的东西创建一个函数。这对于unix人来说可能太明显了。
答案 0 :(得分:2)
使用函数,而不是别名:
edit() {
emacs "$@" &
}
答案 1 :(得分:1)
只需将此别名用作:
alias edit='emacs '
在引号之前注意一个空格,它允许您将参数直接传递给emacs命令,然后您可以将此别名称为:
edit junk.txt
OR
edit foo.sh
答案 2 :(得分:0)
你不能用别名来做你想做的事情,至少不是用bash做的。
在替换文本中没有使用参数的机制,就像在csh中一样。如果需要参数,则应使用shell函数(请参阅Shell函数)。
别名只能用作简单命令的第一个单词。无法将edit foo.txt
扩展为emacs foo.txt &
。
(csh(和tcsh)别名更强大,但csh缺少函数 - 无论如何你都在使用bash。)
请注意,您在问题中尝试使用的名称argv
并不代表bash中的任何内容。参数(对于脚本或函数)称为$1
,$2
等;参数的完整列表是$*
或$@
。但这不适用于别名。 bash文档解释了所有这些。
glglgl's answer是正确的:使用函数。