Shell
魚:別名中的空格
我正在嘗試為目錄中的執行檔命名,其中包含空格。例如:
alias myfile="/home/ben/test case/myfile"
現在,這並沒有按照我想要的方式擴展(它認為
/home/ben/test
是執行檔)。在 bash 中,您可以添加額外的引號:alias myfile="'/home/ben/test case/myfile'"
可悲的是,在魚中這不起作用。我應該怎麼做?
fish中的 alias 只是函式 builtin的包裝,它的存在是為了向後兼容 POSIX shell。
alias
infish
不能用作POSIX 別名。如果你想要 POSIX 的等價物
alias
,你必須使用abbr,它是在fish 2.2.0中添加的:abbr -a myfile "'/home/ben/test case/myfile'"
或者:
abbr -a myfile "/home/ben/test\ case/myfile"
這個答案是從評論區遷移過來的。
fish’s
alias
只是一個熟悉的天真函式,它使用這個名稱(和 througheval
)創建函式,發現它有問題也就不足為奇了。我認為你最好學習如何編寫魚函式。對於您給出的範例,它轉換為以下行
eval
:function myfile --wraps /home/ben/test; /home/ben/test case/myfile $argv; end
因此使用
alias myfile="'/home/ben/test case/myfile'"
也無濟於事,因為它會給出一些愚蠢的輸出,例如--wraps 'home/ben/test; '/home/ben/test case/myfile'
(看看那個孤獨的單引號!)所以自己寫一個函式,你會發現 fish 就是這麼胡說八道,破壞了互動的樂趣和友好性:
function myfile --wraps '/home/ben/test case/myfile'; '/home/ben/test case/myfile' $argv; end
請注意,我還沒有真正測試過這個,只有當我對語法有正確的想法時它才有效。
f??????-id??tic-shell
實際上,當我第一次閱讀它的內置功能時,我已經在 40 分鐘內獲得了足夠的內容。