如何在鱼壳中定义别名?


204

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

~/.config/fish/functions

但是当我重新启动外壳程序时,它们不会自动加载。有任何想法吗?


我认为下面的答案只有几票是正确的。./config/fish/functions中的自动加载仅在每个文件只有一个功能的情况下才起作用。
mc_electron 2015年

Answers:


360

只需使用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

有兴趣的人可能希望在官方手册中找到有关鱼类别名的更多信息。


3
还要注意,在fish中,别名只是功能周围的shellscript包装器。
user456584 2013年

@ user456584 ...这很糟糕,因为您不能做alias local "set -l";-(

13
只是要放入哪个文件的注释。我放入了我的文件,~/.config/fish/config.fish以便每次运行终端机时都会加载它。
Ira Herman

我们是否不需要"$argv"像处理bash一样引用引号来处理带有空格的参数"$@"
kyb

@kyb,不,鱼比bash更聪明。实际上,fish中的所有变量都是数组。转到Shell变量并向下滚动到Arrays子节
glenn jackman

117

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

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

谢谢杰鲁布。由于某种原因,在funcsave之后,它给了我一个错误:troff:致命错误:无法打开`/usr/share/fish/man/save_function.1':没有这样的文件或目录
armandino 2010年

7
您也可以使用来编辑功能funced。例如funced foo
丹尼斯

14
跑步funcsave {some_function_name}会将其保存在~/.config/fish/functions/{some_function_name}.fish
Hjulle

55

对于后代,鱼别名只是函数:

$ 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

9
创建函数后,可以执行操作funcsave foo。这会将函数保存到中~/.config/fish/functions/foo.fish,在第一次从新会话中调用Fish时,fish将自动加载该函数。
Lucretiel 2015年

1
alias foo="echo bar"到目前为止,这是最简单的解决方案
罗尼

16
  1. 如果没有config.fish〜/的.config /鱼/,做到这一点。
  2. 在那里你可以编写你的函数。function name; command; end

15

将文件另存为~/.config/fish/functions/{some_function_name}.fish,当您开始钓鱼时它们应该自动加载。


14

fish通过在〜/ .config / fish / config.fish中执行命令开始。如果不存在,可以创建它:

vim〜/ .config / fish / config.fish

并保存 :wq

第1步。制作配置文件(如.bashrc)

config.fish

第2步。像这样写你的别名;

别名rm =“ rm -i”



11

要从〜/ .config / fish / functions正确加载函数

您只能在文件和名称文件中设置与功能名称相同的一个功能,并添加.fish扩展名。

这种方式在打开的终端中更改文件内容重新加载功能(请注意,可能会延迟1-5秒)

这样,如果您通过命令行进行编辑

function name; function_content; end

然后

funcsave name

您在控制台中具有用户定义的功能,并且按相同顺序进行了定制。


0

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

function mkalias --argument key value
  echo alias $key=$value
  alias $key=$value
  funcsave $key
end

这将自动创建别名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.