\section function function - create a function
\subsection function-synopsis Synopsis
function [OPTIONS] NAME; BODY; end
\subsection function-description Description
- -d DESCRIPTION
or \c --description=DESCRIPTION is a description of what the function does, suitable as a completion description
- -e
or --on-event EVENT_NAME
tells fish to run this function when the specified named event is emitted. Fish internally generates named events e.g. when showing the prompt.
- -j PID
or --on-job-exit PID
tells fish to run this function when the job with group id PID exits. Instead of PID, the string 'caller' can be specified. This is only legal when in a command substitution, and will result in the handler being triggered by the exit of the job which created this command substitution.
- -p PID
or --on-process-exit PID
tells fish to run this function when the fish child process with process id PID exits
- -s
or --on-signal SIGSPEC
tells fish to run this function when the signal SIGSPEC is delivered. SIGSPEC can be a signal number, or the signal name, such as SIGHUP (or just HUP)
- -v
or --on-variable VARIABLE_NAME
tells fish to run this function when the variable VARIABLE_NAME changes value
This builtin command is used to create a new function. A function is a
list of commands that will be executed when the name of the function
is entered. The function
function hi echo hello endwill write
hello
whenever the user enters \c hi.
If the user enters any additional arguments after the function, they
are inserted into the environment variable array argv.
By using one of the event handler switches, a function can be made to run automatically at specific events. The user may generate new events using the emit builtin. Fish generates the following named events:
- \c fish_prompt, which is emitted whenever a new fish prompt is about to be displayed
- \c fish_command_not_found, which is emitted whenever a command lookup failed
\subsection function-example Example
function ll ls -l $argv endwill run the \c ls command, using the \c -l option, while passing on any additional files and switches to \c ls.
function mkdir -d "Create a directory and set CWD" command mkdir $argv if test $status = 0 switch $argv[(count $argv)] case '-*' case '*' cd $argv[(count $argv)] return end end endwill run the mkdir command, and if it is successful, change the current working directory to the one just created.