如何在 fish shell 中创建别名

How to create a alias in fish shell

我尝试为 ls 创建一个别名(基本上应该映射到 ls -lah) 我尝试了以下代码,但它不起作用:

function ls

ls -lah

end

funcsave ls

但是当我调用它时,我收到这条消息:

The function 'ls' calls itself immediately, which would result in an infinite loop. in function 'ls' called on standard input

您需要 command 关键字。此外,将函数的参数传递给 ls

function ls
    command ls -lah $argv
end

您要查找的是 command 命令。

我还建议将任何参数(存储在 $argv 中)传递给别名命令。

所以你的例子应该是:

function ls
  command ls -lah $argv
end

要使用一个简单的命令完成所有这些操作,您只需使用 alias 命令即可。

alias ls "command ls -lah"

请注意,通常别名不会为您提供有助于 _fish_ 友好性的自动完成建议。这种特定情况是一个例外,因为函数和原始命令具有相同的方式,但除此之外,这里有两种方法可以完成:
  • 您可以使用 complete 命令告诉 fish 您的别名使用与别名命令相同的完成。
    balias 插件 可以作为 alias 的替代品并做到这一点。

  • fish 还提供了一个 abbr 命令。它的工作方式略有不同,实际上会将缩写命令扩展为命令行中的完整命令,然后 fish 将毫无问题地为您提供它知道的所有自动完成建议。

如果你需要为ls做别名,那么以上答案都可以。 但是,fish 已经有了 ls -lah 的命令,即 la.