Alias

“emacs /usr/local/nagios/etc/objects”的別名

  • October 23, 2013

我正在嘗試使以下工作:

alias banana='emacs /usr/local/nagios/etc/objects/'

所以我只想輸入“banana firewall.cfg”來編輯這個文件(/usr/local/nagios/etc/objects/firewall.cfg)。如果我鍵入它,emacs 會打開兩個緩衝區,一個用於目錄編輯模式下的“/usr/local/nagios/etc/objects”,另一個作為名為 firewall.cfg 的空白第二個文件,這是預期的,顯然命令“bananafirewall.cfg”不起作用。

我已經撓頭整整 30 分鐘了。別名甚至是正確的命令嗎?我想我可以 ln -s 所有這些文件到 /root,但還有其他建議嗎?

別名適用於為命令提供另一個名稱,或用於傳遞預設參數。除此之外,它們並不好,例如修改參數。改用函式。

要輕鬆支持多個文件名,請先切換到目標目錄。使用括號而不是大括號來創建子 shell,以便目錄更改不會影響父 shell。

banana () (
 cd /usr/local/nagios/etc/objects/ &&
 emacs "$@"
)

您可能想要使用這樣的 shell 函式:

banana () { emacs /usr/local/nagios/etc/objects/"$1"; }

僅適用於一個文件名。支持多個會使它變得更加複雜。

引用自:https://unix.stackexchange.com/questions/97180