使用函数路径中较早的函数
Use Function From Earlier in Function Path
在fish
中,是否可以在另一个同名函数中引用或使用一个函数?例如,fish
在 /usr/local/share/functions/ls.fish
有一个函数 ls
,它根据 OS 和 shell 是否有颜色设置一些默认参数。我想定义另一个函数,它将为我设置一些默认颜色,而不会破坏这个其他函数,以防我想使用更新版本的 fish
.
设置别名最简单的方法似乎是使用 command
,像这样:
function ls
command ls -F $argv
end
文件夹~/.config/fish/functions
中的文件ls.fish
。这是用户定义函数的默认文件夹。此文件夹和 ~/.config/fish/functions
都在 $fish_function_path
中,但 ~/.config/fish/functions
稍后出现,因此用户可以设置自己的功能来覆盖 fish
的默认功能。但是,正如 fish
文档所说,
command forces the shell to execute the program COMMANDNAME and ignore
any functions or builtins with the same name.
如何用稍后在 $fish_function_path
中定义的 alias/function 覆盖一个 alias/function,而不会覆盖 写入 ? 理想情况下,解决方案也将使用同名的内置命令,如 cd
,根据引用的文档,这也是不可能的,但这不是必需的。
最后,这是个好主意吗?如果fish
默认不这样做,那一定是有原因的,对吧?
通常的技巧是复制要覆盖的函数,然后从覆盖内调用副本:
functions --copy ls saved_ls
function ls
saved_ls
end
您不能在自动加载的 ls.fish
文件中执行此操作,因为它会导致无限循环,但您可以在 config.fish
.
中执行此操作
在fish
中,是否可以在另一个同名函数中引用或使用一个函数?例如,fish
在 /usr/local/share/functions/ls.fish
有一个函数 ls
,它根据 OS 和 shell 是否有颜色设置一些默认参数。我想定义另一个函数,它将为我设置一些默认颜色,而不会破坏这个其他函数,以防我想使用更新版本的 fish
.
设置别名最简单的方法似乎是使用 command
,像这样:
function ls
command ls -F $argv
end
文件夹~/.config/fish/functions
中的文件ls.fish
。这是用户定义函数的默认文件夹。此文件夹和 ~/.config/fish/functions
都在 $fish_function_path
中,但 ~/.config/fish/functions
稍后出现,因此用户可以设置自己的功能来覆盖 fish
的默认功能。但是,正如 fish
文档所说,
command forces the shell to execute the program COMMANDNAME and ignore
any functions or builtins with the same name.
如何用稍后在 $fish_function_path
中定义的 alias/function 覆盖一个 alias/function,而不会覆盖 写入 ? 理想情况下,解决方案也将使用同名的内置命令,如 cd
,根据引用的文档,这也是不可能的,但这不是必需的。
最后,这是个好主意吗?如果fish
默认不这样做,那一定是有原因的,对吧?
通常的技巧是复制要覆盖的函数,然后从覆盖内调用副本:
functions --copy ls saved_ls
function ls
saved_ls
end
您不能在自动加载的 ls.fish
文件中执行此操作,因为它会导致无限循环,但您可以在 config.fish
.