如何在鱼壳中定义别名?

时间:2010-05-04 05:26:35

标签: linux shell fish

我想在鱼中定义一些别名。显然应该可以在

中定义它们
~/.config/fish/functions

但是当我重新启动shell时它们不会自动加载。有什么想法吗?

11 个答案:

答案 0 :(得分:289)

只需使用alias即可。这是一个基本的例子:

# Define alias in shell
alias rmi "rm -i"

# Define alias in config file
alias rmi="rm -i"

# This is equivalent to entering the following function:
function rmi
    rm -i $argv
end

# Then, to save it across terminal sessions:
funcsave rmi

最后一个命令创建文件~/.config/fish/functions/rmi.fish

感兴趣的人可能希望在the official manual中找到有关鱼类别名的更多信息。

答案 1 :(得分:109)

这是我定义新函数foo,运行它并持久保存的方法。

sthorne@pearl~> function foo
                    echo 'foo was here'
                end
sthorne@pearl~> foo
foo was here
sthorne@pearl~> funcsave foo

答案 2 :(得分:48)

对于子孙后代,鱼别名只是功能:

$ alias foo="echo bar"
$ type foo
foo is a function with definition
function foo
    echo bar $argv; 
end

删除它

$ unalias foo
/usr/bin/unalias: line 2: unalias: foo: not found
$ functions -e foo
$ type foo
type: Could not find “foo”

答案 3 :(得分:15)

  1. 如果〜/ .config / fish / 中没有 config.fish ,请点击它。
  2. 你可以写你的功能。function name command end

答案 4 :(得分:13)

将文件保存为 ~/.config/fish/functions/{some_function_name}.fish ,并在开始钓鱼时自动加载。

答案 5 :(得分:10)

〜/ .config / fish / functions

正确加载功能

您可以在文件和名称文件中仅设置 ONE 功能,与功能名称+添加.fish扩展名相同。

这样可以在打开的终端中更改文件内容重新加载功能(注意某些延迟可能会发生~1-5s)

如果您通过命令行编辑

,那就是这样
function name; function_content; end

然后

funcsave name

您在控制台中拥有用户定义的功能,并以相同的顺序定制。

答案 6 :(得分:8)

fish通过执行〜/ .config / fish / config.fish中的命令启动。 如果它不存在,您可以创建它。

步骤1。 make配置文件(如.bashrc)

  

config.fish

步骤2。只需写下你的别名;

  

别名rm =" rm -i"

答案 7 :(得分:1)

在名为mkalias.fish的〜/ .config / fish /函数中创建一个函数并将其放入

Client client1 = new Client("John", product1);

这将自动创建别名。

答案 8 :(得分:1)

如果您添加abbr而不是alias,则会获得更好的自动完成功能。在鱼中,abbr与bash别名的行为更接近。

abbr -a gco git checkout

-a dd新的abbr别名gco扩展到git checkout

Here's a video demo of the resulting auto-complete features

答案 9 :(得分:0)

@bozhidar-batsov 给出了一个绝对完整的答案,可以帮助人们理解 fish 中别名/函数的内部工作原理。为别名阅读fish文档,还有一个-s标志,使用起来非常方便,但我没有看到有人提到它。

<块引用>

-s 或 --save 使用 funcsave 自动将别名创建的函数保存到您的 fish 配置目录中。

定义和保存别名的单行解决方案(例如): alias cl 'clear' -s。立即适用于所有会话并保持不变。

导航到 ~/.config/fish/functions/,您将看到 cl.fish 文件。

# Defined via `source`
function cl --wraps=clear --description 'alias cl clear'
  clear $argv;
end

答案 10 :(得分:-1)

我发现先前的答案和评论不必要地不完整和/或令人困惑。我需要做的至少是:

  1. 创建~/.config/fish/config.fish。该文件可以选择是软链接。
  2. 在其中添加alias myalias echo foo bar行。
  3. 重新启动fish。要确认定义,请尝试type myalias。尝试使用别名。