'emacs /usr/local/nagios/etc/objects' 的别名

'emacs /usr/local/nagios/etc/objects' 的别名

我正在尝试进行以下工作:

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"; }

仅适用于一个文件名。支持多个会使事情变得更加复杂。

相关内容