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