2017-01-09 92 views
1

我試圖創建LS的別名(應基本上只是映射到ls -lah) 我試過下面的代碼,但它不工作:如何創建魚類殼別名

function ls

ls -lah

end

funcsave ls

但是當我打電話給它時,我得到這個消息: 函數'ls'立即調用它自己,這會導致無限循環。 在函數'ls'中 在標準輸入上調用

回答

0

如果您需要製作ls的別名,那麼上面的答案是可以的。 但是,魚已經有ls -lah的命令,它是la

+0

不錯!謝謝,我不知道! :) – ners10100100

+0

@ners10100100如果你想檢查所有的魚特定的命令,你可以在終端,這將啓動web配置和功能選項卡下,你會發現很多有關的信息'fish_config'。 – keramzyt

2

您需要command關鍵字。此外,通過函數的參數ls

function ls 
    command ls -lah $argv 
end 
+0

謝謝!那是行得通的! – ners10100100

3

什麼你要找的是command命令。

我還建議將任何參數(存儲在)傳遞給別名命令。

所以,你的例子應該是:

function ls 
    ls -lah $argv 
end 

而要做到這一切與一個簡單的命令,你可以簡單地使用alias命令。

alias ls "command ls -lah" 


平時注意別名不會讓你漂亮的自動完成建議有助於的友好性。這種特殊的情況是個例外,因爲功能和原來的命令都以同樣的方式,但除此之外,這裏有兩種方式獲取落成反正:

  • 可以使用complete命令告訴你別名使用與別名相同的完成命令。
    balias插件 可用作alias的替代方法,並且可以做到這一點。

  • 還提供了一個abbr命令。它的工作原理略有不同,實際上將縮寫命令擴展爲命令行中的完整命令,然後將不會給您提供它所知的所有自動完成建議。

+0

非常感謝!別名/函數現在可用!你有什麼想法,當通過函數調用'ls -lah'的輸出的「着色」消失了嗎? – ners10100100

+0

我的猜測是你的'ls'命令已經被另一個函數包裝了。我個人使用'grc',所以我可以看到完全相同的效果。 首先,在一個沒有別名的''shell'中,運行'functions ls'並查看是否有一個帶有這個名字的函數。如果有的話,你可以像這樣重命名:'functions -c ls ls_color',然後在你的別名函數中,而不是'command ls $ argv',調用'ls-color $ argv'。 – oranja