function fish

function - ¿Cómo eliminar funciones de fishshell sin eliminar el archivo de función directamente?



(4)

He definido una función hello en fishshell:

function hello echo Hello end

Y guárdalo:

funcsave hello

Si quiero eliminarlo, puedo eliminar el archivo ~/.config/fish/functions/hello.fish .

¿Hay alguna otra forma de hacerlo? (como funcdel o funcrm )


Creé otra función de pez para eso.

function funcdel if test -e ~/.config/fish/functions/$argv[1].fish rm ~/.config/fish/functions/$argv[1].fish echo ''Deleted function '' $argv[1] else echo ''Not found function '' $argv[1] end end


La solución anterior de functions -e hello solo elimina hello en la sesión actual . Abre otro terminal, y la función sigue ahí.

Para eliminar la función de forma persistente , tuve que recurrir a eliminar el archivo ~/.config/fish/functions/hello.fish directamente. Hasta ahora, no conozco otra forma que elimine de forma persistente.


No, no hay ningún componente incorporado para eliminar el archivo, pero puede usar:

functions --erase hello

o

functions -e hello

para borrar la definición de la función de la sesión actual.

Ver también


una solución de creación propia más completa, autodefinida (y silenciosa), inspirada en la respuesta de @ Kanzee (copiar en el archivo ~/.config/fish/functions/funcdel.fish ):

function funcdel --description ''Deletes a fish function both permanently and from memory'' set -l fun_name $argv[1] set -l fun_file ~/.config/fish/functions/$fun_name.fish # Delete the in-memory function, if it exists functions --erase $fun_name # Delete the function permanently, # if it exists as a file in the regular location if test -e $fun_file rm $fun_file end end