mirror of
https://github.com/fish-shell/fish-shell.git
synced 2025-02-14 04:23:31 +08:00
![David Adam (zanchey)](/assets/img/avatar_default.png)
Large list of changes, including formatting and typos for most commands. More substantive changes have been made to alias, bind, block, break, builtin, case, cd, commandline, count, else, emit, fish_config, funced, function, functions, history, math, mimedb, nextd, not, popd, prevd, pushd, pwd, random, read, set, set_color, switch, test, trap, type, ulimit, umask, and while.
59 lines
2.6 KiB
Plaintext
59 lines
2.6 KiB
Plaintext
\section function function - create a function
|
|
|
|
\subsection function-synopsis Synopsis
|
|
<code>function [OPTIONS] NAME; BODY; end </code>
|
|
|
|
\subsection function-description Description
|
|
|
|
\c function creates a new function \c NAME with the body <code>BODY</code>.
|
|
|
|
A function is a list of commands that will be executed when the name of the
|
|
function is given as a command.
|
|
|
|
The following options are available:
|
|
|
|
- <code>-d DESCRIPTION</code> or \c --description=DESCRIPTION is a description of what the function does, suitable as a completion description.
|
|
- <code>-e</code> or <code>--on-event EVENT_NAME</code> tells fish to run this function when the specified named event is emitted. Fish internally generates named events e.g. when showing the prompt.
|
|
- <code>-j PID</code> or <code> --on-job-exit PID</code> 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.
|
|
- <code>-p PID</code> or <code> --on-process-exit PID</code> tells fish to run this function when the fish child process with process ID PID exits.
|
|
- <code>-s</code> or <code>--on-signal SIGSPEC</code> 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).
|
|
- <code>-v</code> or <code>--on-variable VARIABLE_NAME</code> tells fish to run this function when the variable VARIABLE_NAME changes value.
|
|
|
|
If the user enters any additional arguments after the function, they
|
|
are inserted into the environment <a href="index.html#variables-arrays">variable array</a>
|
|
<code>$argv</code>.
|
|
|
|
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 <a href="#emit">emit</a> 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
|
|
|
|
<pre>
|
|
function ll
|
|
ls -l $argv
|
|
end
|
|
</pre>
|
|
|
|
will run the \c ls command, using the \c -l option, while passing on any additional files and switches to \c ls.
|
|
|
|
<pre>
|
|
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
|
|
end
|
|
</pre>
|
|
|
|
will run the mkdir command, and if it is successful, change the
|
|
current working directory to the one just created.
|
|
|