Back to Fish

functions - print or erase functions¶

site/docs/3.1/cmds/functions.html

latest2.9 KB
Original Source

functions - print or erase functions

Synopsis

functions [-a | --all] [-n | --names]functions [-D | --details] [-v] FUNCTIONfunctions -c OLDNAME NEWNAMEfunctions -d DESCRIPTION FUNCTIONfunctions [-e | -q] FUNCTIONS...

Description

functions prints or erases functions.

The following options are available:

  • -a or --all lists all functions, even those whose name starts with an underscore.

  • -c OLDNAME NEWNAME or --copy OLDNAME NEWNAME creates a new function named NEWNAME, using the definition of the OLDNAME function.

  • -d DESCRIPTION or --description=DESCRIPTION changes the description of this function.

  • -e or --erase causes the specified functions to be erased. This also means that it is prevented from autoloading.

  • -D or --details reports the path name where each function is defined or could be autoloaded, stdin if the function was defined interactively or on the command line or by reading stdin, - if the function was created via source, and n/a if the function isn't available. (Functions created via alias will return -, because alias uses source internally.) If the --verbose option is also specified then five lines are written:

You should not assume that only five lines will be written since we may add additional information to the output in the future.

  • -n or --names lists the names of all defined functions.
  • -q or --query tests if the specified functions exist.
  • -v or --verbose will make some output more verbose.
  • -H or --handlers will show all event handlers.
  • -t or --handlers-type TYPE will show all event handlers matching the given type

The default behavior of functions, when called with no arguments, is to print the names of all defined functions. Unless the -a option is given, no functions starting with underscores are not included in the output.

If any non-option parameters are given, the definition of the specified functions are printed.

Automatically loaded functions cannot be removed using functions -e. Either remove the definition file or change the $fish_function_path variable to remove autoloaded functions.

Copying a function using -c copies only the body of the function, and does not attach any event notifications from the original function.

Only one function's description can be changed in a single invocation of functions -d.

The exit status of functions is the number of functions specified in the argument list that do not exist, which can be used in concert with the -q option.

Examples

functions -n# Displays a list of currently-defined functionsfunctions -c foo bar# Copies the 'foo' function to a new function called 'bar'functions -e bar# Erases the function ``bar``