我正在尝试进行以下工作:
alias banana='emacs /usr/local/nagios/etc/objects/'
所以我只想输入“bananafirewall.cfg”来编辑这个文件(/usr/local/nagios/etc/objects/firewall.cfg)。如果我输入该内容,emacs 将打开两个缓冲区,一个用于目录编辑模式下的“/usr/local/nagios/etc/objects”,另一个则作为名为firewall.cfg 的空白第二个文件,这是预期的,显然命令“bananafirewall.cfg”不起作用。
我已经挠头30分钟了。别名是否是正确的命令?我想我可以 ln -s 所有这些文件到 /root,但是还有其他建议吗?
答案1
别名非常适合为命令指定另一个名称,或者用于传递默认参数。除此之外,它们并不擅长,例如修改论点。使用函数代替。
为了轻松支持多个文件名,请先切换到目标目录。使用圆括号而不是大括号来创建子 shell,这样目录更改就不会影响父 shell。
banana () (
cd /usr/local/nagios/etc/objects/ &&
emacs "$@"
)
答案2
您可能想使用这样的 shell 函数:
banana () { emacs /usr/local/nagios/etc/objects/"$1"; }
仅适用于一个文件名。支持多个会使事情变得更加复杂。