Help cleanup

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.
This commit is contained in:
David Adam (zanchey) 2013-05-12 15:56:01 +08:00 committed by ridiculousfish
parent 91aab03b90
commit 1287b9d823
70 changed files with 726 additions and 509 deletions

View file

@ -6,13 +6,29 @@ alias NAME=DEFINITION</pre>
\subsection alias-description Description \subsection alias-description Description
Alias is a shellscript wrapper around the function builtin. \c alias is a simple wrapper for the \c function builtin.
It exists for backwards compatibility with Posix It exists for backwards compatibility with Posix
shells. For other uses, it is recommended to define a <a shells. For other uses, it is recommended to define a <a
href='#function'>function</a>. href='#function'>function</a>.
Alias does not keep track of which functions have been defined using \c fish does not keep track of which functions have been defined using
alias, nor does it allow erasing of aliases. \c alias. They must be erased using <code>functions -e</code>.
- NAME is the name of the alias
- DEFINITION is the actual command to execute. The string " $argv" will be appended.
You cannot create an alias to a function with the same name.
\subsection alias-example Example
The following code will create \c rmi, which runs \c rm with additional
arguments on every invocation.
<code>alias rmi "rm -i"</code>
This is equivalent to entering the following function:
<pre>function rmi
rm -i $argv
end</pre>
- NAME is the name of the function to define
- DEFINITION is the body of the function. The string " $argv" will be appended to the body.

View file

@ -5,10 +5,10 @@
\subsection and-description Description \subsection and-description Description
The \c and builtin is used to execute a command if the current exit \c and is used to execute a command if the current exit
status (as set by the last previous command) is 0. status (as set by the last previous command) is 0.
The and command does not change the current exit status. \c and does not change the current exit status.
The exit status of the last foreground command to exit can always be The exit status of the last foreground command to exit can always be
accessed using the <a href="index.html#variables-status">$status</a> accessed using the <a href="index.html#variables-status">$status</a>
@ -16,10 +16,10 @@ variable.
\subsection and-example Example \subsection and-example Example
The following code runs the \c make command to build a program, if the The following code runs the \c make command to build a program. If the
build succeeds, the program is installed. If either step fails, build succeeds, <code>make</code>'s exit status is 0, and the program is installed. If either step fails,
<tt>make clean</tt> is run, which removes the files created by the the exit status is 1, and <tt>make clean</tt> is run, which removes the files created by the.
build process build process.
<pre> <pre>
make; and make install; or make clean make; and make install; or make clean

View file

@ -5,15 +5,18 @@
\subsection begin-description Description \subsection begin-description Description
The \c begin builtin is used to create a new block of code. The block \c begin is used to create a new block of code.
The block
is unconditionally executed. <code>begin; ...; end</tt> is equivalent is unconditionally executed. <code>begin; ...; end</tt> is equivalent
to <tt>if true; ...; end</tt>. The begin command is used to group any to <tt>if true; ...; end</tt>.
number of commands into a block. The reason for doing so is usually
either to introduce a new variable scope, to redirect the input or \c begin is used to group a number of commands into a block.
This allows the introduction of a new variable scope, redirection of the input or
output of a set of commands as a group, or to specify precedence when output of a set of commands as a group, or to specify precedence when
using the conditional commands like \c and. using the conditional commands like \c and.
The \c begin command does not change the current exit status. \c begin does not change the current exit status.
\subsection begin-example Example \subsection begin-example Example

View file

@ -1,16 +1,17 @@
\section bg bg - send to background \section bg bg - send jobs to background
\subsection bg-synopsis Synopsis \subsection bg-synopsis Synopsis
<tt>bg [PID...]</tt> <tt>bg [PID...]</tt>
\subsection bg-description Description \subsection bg-description Description
Sends the specified jobs to the background. A background job is
\c bg sends <a href="index.html#syntax-job-control">jobs</a> to the background, resuming them if they are stopped. A background job is
executed simultaneously with fish, and does not have access to the executed simultaneously with fish, and does not have access to the
keyboard. If no job is specified, the last job to be used is put in the background. If PID is specified, the jobs with the specified group ids are put in the background. keyboard. If no job is specified, the last job to be used is put in the background. If PID is specified, the jobs with the specified process group IDs are put in the background.
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>. The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>.
\subsection bg-example Example \subsection bg-example Example
<tt>bg \%0</tt> will put the job with job id 0 in the background. <tt>bg \%1</tt> will put the job with job ID 1 in the background.

View file

@ -5,33 +5,34 @@
\subsection bind-description Description \subsection bind-description Description
The <tt>bind</tt> builtin causes fish to add a key binding from the specified sequence. <tt>bind</tt> adds a binding for the specified key sequence to the
specified command.
SEQUENCE is the character sequence to bind to. Usually, one would use SEQUENCE is the character sequence to bind to. These should be written as
fish escape sequences to express them. For example, because pressing <a href="index.html#escapes">fish escape sequences</a>. For example, because pressing
the Alt key and another character sends that character prefixed with the Alt key and another character sends that character prefixed with
an escape character, Alt-based key bindings can be written using the an escape character, Alt-based key bindings can be written using the
\c \\e escape. For example, Alt-w can be written as \c \\e escape. For example, Alt-w can be written as
<tt>\\ew</tt>. Control character can be written in much the same way <tt>\\ew</tt>. The control character can be written in much the same way
using the \c \\c escape, for example Control-x can be written as using the \c \\c escape, for example Control-x (^X) can be written as
<tt>\\cx</tt>. Note that Alt-based key bindings are case sensitive and <tt>\\cx</tt>. Note that Alt-based key bindings are case sensitive and
Control base key bindings are not. This is not a design choice in Control-based key bindings are not. This is a constraint of text-based
fish, it is simply how terminals work. termainls, not \c fish.
If SEQUENCE is the empty string, i.e. an empty set of quotes, this is The default key binding can be set by specifying a SEQUENCE of the empty
interpreted as the default keybinding. It will be used whenever no string (that is, <code>''</code>). It will be used whenever no
other binding matches. For most key bindings, it makes sense to use other binding matches. For most key bindings, it makes sense to use
the \c self-insert function (i.e. <tt>bind '' self-insert</tt> as the the \c self-insert function (i.e. <tt>bind '' self-insert</tt> as the
default keybinding. This will insert any keystrokes not specifically default keybinding. This will insert any keystrokes not specifically
bound to into the editor. Non-printable characters are ignored by the bound to into the editor. Non-printable characters are ignored by the
editor, so this will not result in e.g. control sequences being editor, so this will not result in control sequences being
printable. printable.
If the -k switch is used, the name of the key (such as down, up or If the -k switch is used, the name of the key (such as down, up or
backspace) is used instead of a sequence. The names used are the same backspace) is used instead of a sequence. The names used are the same
as the corresponding curses variables, but without the 'key_' as the corresponding curses variables, but without the 'key_'
prefix. (See man 5 terminfo for more information, or use <tt>bind prefix. (See \c terminfo(5) for more information, or use <tt>bind
--key-names</tt> for a list of all available named keys) --key-names</tt> for a list of all available named keys.)
COMMAND can be any fish command, but it can also be one of a set of COMMAND can be any fish command, but it can also be one of a set of
special input functions. These include functions for moving the special input functions. These include functions for moving the
@ -45,19 +46,19 @@ bind to the function name. This way it becomes significantly easier to
test the function while editing, and the result is usually more test the function while editing, and the result is usually more
readable as well. readable as well.
If you want to autoload bindings each time you start shell, you should Key bindings are not saved between sessions by default. To save custom
define them inside fish_user_key_bindings function. keybindings, edit the \c fish_user_key_bindings function and insert the
appropirate \c bind statements.
The following parameters are available:
- <tt>-a</tt> or <tt>--all</tt> If --key-names is specified, show all key names, not only the ones that actually are defined for the current terminal. If erase mode is specified, this switch will cause all current bindings to be erased.
- <tt>-e</tt> or <tt>--erase</tt> Erase mode. All non-switch arguments are interpreted as character sequences and any commands associated with those sequences are erased.
- <tt>-h</tt> or <tt>--help</tt> Display help and exit
- <tt>-k</tt> or <tt>--key</tt> Specify a key name, such as 'left' or 'backspace' instead of a character sequence - <tt>-k</tt> or <tt>--key</tt> Specify a key name, such as 'left' or 'backspace' instead of a character sequence
- <tt>-K</tt> or <tt>--key-names</tt> Display a list of available key names - <tt>-K</tt> or <tt>--key-names</tt> Display a list of available key names
- <tt>-f</tt> or <tt>--function-names</tt> Display a list of available input functions - <tt>-f</tt> or <tt>--function-names</tt> Display a list of available input functions
\subsection bind-example Example \subsection bind-example Examples
<tt>bind \\cd 'exit'</tt> causes fish to exit on Control-d <tt>bind \\cd 'exit'</tt> causes \c fish to exit when Control-d is pressed.
<tt>bind -k ppage history-search-backward</tt> Causes fish to perform a history search when the page up key is pressed <tt>bind -k ppage history-search-backward</tt> performs a history search when the Page Up key is pressed.

View file

@ -5,15 +5,36 @@
\subsection block-description Description \subsection block-description Description
- <tt>-l</tt> or <tt>--local</tt> Release the block at the end of the currently innermost block scope \c block prevents events triggered by \c fish or the
<a href="commands.html#emit"><code>emit</code></a> command from
being delivered and acted upon while the block is in place.
In functions, \c block can be useful while performing work that
should not be interrupted by the shell.
The block can be removed. Any events which triggered while the
block was in place will then be delivered.
Event blocks should not be confused with code blocks, which are created
with <code>begin</code>, <code>if</code>, <code>while</code> or
<code>for</code>
The following parameters are available:
- <tt>-l</tt> or <tt>--local</tt> Release the block automatically at the end of the current innermost code block scope
- <tt>-g</tt> or <tt>--global</tt> Never automatically release the lock - <tt>-g</tt> or <tt>--global</tt> Never automatically release the lock
- <tt>-e</tt> or <tt>--erase</tt> Release global block - <tt>-e</tt> or <tt>--erase</tt> Release global block
\subsection block-example Example \subsection block-example Example
<pre> <pre>
# Create a function that listens for events
function --on-event foo foo; echo 'foo fired'; end
# Block the delivery of events
block -g block -g
\#Do something that should not be interrupted emit foo
# No output will be produced
block -e block -e
# 'foo fired' will now be printed
</pre> </pre>

View file

@ -1,13 +1,16 @@
\section break break - stop the innermost currently evaluated loop \section break break - stop the current inner loop
\subsection break-synopsis Synopsis \subsection break-synopsis Synopsis
<tt>LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end</tt> <tt>LOOP_CONSTRUCT; [COMMANDS...] break; [COMMANDS...] end</tt>
\subsection break-description Description \subsection break-description Description
The \c break builtin is used to halt a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
\c break halts a currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
There are no parameters for <code>break</code>.
\subsection break-example Example \subsection break-example Example
The following code searches all .c files for smurfs, and halts at the first occurrence. The following code searches all .c files for "smurf", and halts at the first occurrence.
<pre> <pre>
for i in *.c for i in *.c

View file

@ -5,6 +5,10 @@
\subsection breakpoint-description Description \subsection breakpoint-description Description
The \c breakpoint builtin is used to halt a running script and launch \c breakpoint is used to halt a running script and launch
an interactive debug prompt. an interactive debugging prompt.
For more details, see <a href="index.html#debugging">Debugging fish
scripts</a> in the \c fish manual.
There are no parameters for <code>breakpoint</code>.

View file

@ -5,12 +5,12 @@
\subsection builtin-description Description \subsection builtin-description Description
- <tt>-n</tt> or <tt>--names</tt> List the names of all defined builtins \c builtin forces the shell to use a builtin command, rather than a function or program.
Prefixing a command with the word 'builtin' forces fish to ignore any functions with the same name. The following parameters are available:
- <tt>-n</tt> or <tt>--names</tt> List the names of all defined builtins
\subsection builtin-example Example \subsection builtin-example Example
<tt>builtin jobs</tt> <tt>builtin jobs</tt> executes the jobs builtin, even if a function named jobs exists.
causes fish to execute the jobs builtin, even if a function named jobs exists.

View file

@ -5,27 +5,24 @@
\subsection case-description Description \subsection case-description Description
The \c switch statement is used to perform one of several blocks of \c switch performs one of several blocks of commands, depending on whether
commands depending on whether a specified value equals one of several a specified value equals one of several wildcarded values. \c case is used
wildcarded values. The \c case statement is used together with the \c together with the \c switch statement in order to determine which block should
switch statement in order to determine which block should be be executed.
performed.
Each \c case command is given one or more parameter. The first \c case Each \c case command is given one or more parameters. The first \c case
command with a parameter that matches the string specified in the command with a parameter that matches the string specified in the
switch command will be evaluated. \c case parameters may contain switch command will be evaluated. \c case parameters may contain
wildcards. These need to be escaped or quoted in order to avoid wildcards. These need to be escaped or quoted in order to avoid
regular wildcard expansion using filenames. regular wildcard expansion using filenames.
Note that fish does not fall through on case statements. Though the Note that fish does not fall through on case statements. Only the
syntax may look a bit like C switch statements, it behaves more like first matching case is executed.
the case statements of traditional shells.
Also note that command substitutions in a case statement will be Note that command substitutions in a case statement will be
evaluated even if it's body is not taken. This may seem evaluated even if its body is not taken. All substitutions, including
counterintuitive at first, but it is unavoidable, since it would be command substitutions, must be performed before the value can be compared
impossible to know if a case command will evaluate to true before all against the parameter.
forms of parameter expansion have been performed for the case command.
\subsection case-example Example \subsection case-example Example
@ -42,6 +39,7 @@ switch $animal
echo bird echo bird
case shark trout stingray case shark trout stingray
echo fish echo fish
# Note that the next case has a wildcard which is quoted
case '*' case '*'
echo I have no idea what a $animal is echo I have no idea what a $animal is
end end

View file

@ -4,8 +4,21 @@
<tt>cd [DIRECTORY]</tt> <tt>cd [DIRECTORY]</tt>
\subsection cd-description Description \subsection cd-description Description
Changes the current directory. If <tt>DIRECTORY</tt> is supplied it will become \c cd changes the current working directory.
the new directory. If \c DIRECTORY is a relative path, the paths found in the
CDPATH environment variable array will be tried as prefixes for the specified If \c DIRECTORY is supplied, it will become the new directory. If no parameter
path. If CDPATH is not set, it is assumed to be '.'. If \c DIRECTORY is not is given, the contents of the \c HOME environment variable will be used.
specified, \$HOME will be the new directory.
If \c DIRECTORY is a relative path, the paths found in the
\c CDPATH environment variable array will be tried as prefixes for the specified
path.
Note that the shell will attempt to change directory without requiring \c cd
if the name of a directory is provided (starting with '.', '/' or '~').
\subsection cd-example Examples
\c cd changes the working directory to your home directory.
<code>cd /usr/src/fish-shell</code> changes the working directory to
<code>/usr/src/fish-shell</code>.

View file

@ -4,11 +4,9 @@
<tt>command COMMANDNAME [OPTIONS...]</tt> <tt>command COMMANDNAME [OPTIONS...]</tt>
\subsection command-description Description \subsection command-description Description
prefixing a command with the word 'command' forces fish to ignore any functions or builtins with the same name.
\c command forces the shell to execute the program \c COMMANDNAME and ignore any functions or builtins with the same name.
\subsection command-example Example \subsection command-example Example
<tt>command ls</tt> causes fish to execute the \c ls program, even if an 'ls' function exists.
<tt>command ls</tt>
causes fish to execute the ls program, even if there exists a 'ls' function.

View file

@ -1,32 +1,34 @@
\section commandline commandline - set or get the current commandline buffer \section commandline commandline - set or get the current command line buffer
\subsection commandline-synopsis Synopsis \subsection commandline-synopsis Synopsis
<tt>commandline [OPTIONS] [CMD]</tt> <tt>commandline [OPTIONS] [CMD]</tt>
\subsection commandline-description Description \subsection commandline-description Description
\c commandline can be used to set or get the current contents of the command
line buffer.
- \c CMD is the new value of the commandline. If unspecified, the With no parameters, \c commandline returns the current value of the command
current value of the commandline is written to standard output. All line.
output from the commandline builtin is escaped, i.e. quotes are
removed, backslash escapes are expanded, etc..
The following switches change what the commandline builtin does With \c CMD specified, the command line buffer is erased and replaced with
the contents of \c CMD.
The following options are available:
- \c -C or \c --cursor set or get the current cursor position, not - \c -C or \c --cursor set or get the current cursor position, not
the contents of the buffer. If no argument is given, the current the contents of the buffer. If no argument is given, the current
cursor position is printed, otherwise the argument is interpreted cursor position is printed, otherwise the argument is interpreted
as the new cursor position. as the new cursor position.
- \c -f or \c --function inject readline functions into the - \c -f or \c --function inject readline functions into the
reader. This option can not be combined with any other option. It reader. This option cannot be combined with any other option. It
will cause any additional arguments to be interpreted as readline will cause any additional arguments to be interpreted as readline
functions, and these functions will be injected into the reader, so functions, and these functions will be injected into the reader, so
that they will be returned to the reader before any additional that they will be returned to the reader before any additional
actual key presses are read. actual key presses are read.
The following options change the way \c commandline updates the
The following switches change the way \c commandline updates the command line buffer:
commandline buffer
- \c -a or \c --append do not remove the current commandline, append - \c -a or \c --append do not remove the current commandline, append
the specified string at the end of it the specified string at the end of it
@ -35,29 +37,27 @@ commandline buffer
- \c -r or \c --replace remove the current commandline and replace it - \c -r or \c --replace remove the current commandline and replace it
with the specified string (default) with the specified string (default)
The following switches change what part of the commandline is printed The following options change what part of the commandline is printed
or updated or updated:
- \c -b or \c --current-buffer select the entire buffer (default) - \c -b or \c --current-buffer select the entire buffer (default)
- \c -j or \c --current-job select the current job - \c -j or \c --current-job select the current job
- \c -p or \c --current-process select the current process - \c -p or \c --current-process select the current process
- \c -t or \c --current-token select the current token. - \c -t or \c --current-token select the current token.
The following switch changes the way \c commandline prints the current The following options change the way \c commandline prints the current
commandline buffer commandline buffer:
- \c -c or \c --cut-at-cursor only print selection up until the - \c -c or \c --cut-at-cursor only print selection up until the
current cursor position current cursor position
- \c -o or \c --tokenize tokenize the selection and print one string-type token per line - \c -o or \c --tokenize tokenize the selection and print one string-type token per line
If commandline is called during a call to complete a given string If \c commandline is called during a call to complete a given string
using <code>complete -C STRING</code>, commandline will consider the using <code>complete -C STRING</code>, \c commandline will consider the
specified string to be the current contents of the commandline. specified string to be the current contents of the command line.
\subsection commandline-example Example \subsection commandline-example Example
<tt>commandline -j $history[3]</tt> <tt>commandline -j $history[3]</tt> replaces the job under the cursor with the
third item from the command line history.
replaces the job under the cursor with the third item from the
commandline history.

View file

@ -1,12 +1,12 @@
\section complete complete - edit command specific tab-completions. \section complete complete - edit command specific tab-completions
\subsection complete-synopsis Synopsis \subsection complete-synopsis Synopsis
<tt>complete (-c|--command|-p|--path) COMMAND [(-s|--short-option) SHORT_OPTION] [(-l|--long-option|-o|--old-option) LONG_OPTION [(-a||--arguments) OPTION_ARGUMENTS] [(-d|--description) DESCRIPTION] </tt> <tt>complete (-c|--command|-p|--path) COMMAND [(-s|--short-option) SHORT_OPTION] [(-l|--long-option|-o|--old-option) LONG_OPTION [(-a||--arguments) OPTION_ARGUMENTS] [(-d|--description) DESCRIPTION] </tt>
\subsection complete-description Description \subsection complete-description Description
For an introduction to how to specify completions, see the section <a For an introduction to specifying completions, see <a
href='index.html#completion-own'>Writing your own completions</a> of href='index.html#completion-own'>Writing your own completions</a> in
the fish manual. the fish manual.
- <tt>COMMAND</tt> is the name of the command for which to add a completion - <tt>COMMAND</tt> is the name of the command for which to add a completion

View file

@ -5,13 +5,15 @@
\subsection contains-description Description \subsection contains-description Description
\c contains tests whether the set \c VALUES contains the string
<code>KEY</code>. If so, \c contains exits with status 0; if not, it exits
with status 1.
The following options are available:
- \c -i or \c --index print the word index - \c -i or \c --index print the word index
- \c -h or \c --help display this message - \c -h or \c --help display this message
Test if the set VALUES contains the string KEY. Return status is 0 if
yes, 1 otherwise
\subsection contains-example Example \subsection contains-example Example
<pre> <pre>
for i in ~/bin /usr/local/bin for i in ~/bin /usr/local/bin
@ -21,4 +23,4 @@ for i in ~/bin /usr/local/bin
end end
</pre> </pre>
The above code tests if ~/bin and /usr/local/bin are in the path and if they are not, they are added. The above code tests if \c ~/bin and \c /usr/local/bin are in the path and adds them if not.

View file

@ -1,13 +1,13 @@
\section continue continue - skip the rest of the current lap of the innermost currently evaluated loop \section continue continue - skip the remainder of the current iteration of the current inner loop
\subsection continue-synopsis Synopsis \subsection continue-synopsis Synopsis
<tt>LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end</tt> <tt>LOOP_CONSTRUCT; [COMMANDS...;] continue; [COMMANDS...;] end</tt>
\subsection continue-description Description \subsection continue-description Description
The \c continue builtin is used to skip the current lap of the innermost currently running loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement. \c continue skips the remainder of the current iteration of the current inner loop, such as a <a href="#for">for</a> loop or a <a href="#while">while</a> loop. It is usually added inside of a conditional block such as an <a href="#if">if</a> statement or a <a href="#switch">switch</a> statement.
\subsection continue-example Example \subsection continue-example Example
The following code removes all tmp files without smurfs. The following code removes all tmp files that do not contain the word smurf.
<pre> <pre>
for i in *.tmp for i in *.tmp

View file

@ -5,20 +5,13 @@
\subsection count-description Description \subsection count-description Description
The <tt>count</tt> builtin prints the number of arguments that were <tt>count</tt> prints the number of arguments that were
passed to it. This is usually used to find out how many elements an passed to it. This is usually used to find out how many elements an
environment variable array contains, but this is not the only environment variable array contains.
potential usage for the count command.
The count command does not accept any options, not even '-h'. This way \c count does not accept any options, including '-h'.
the user does not have to worry about an array containing elements
such as dashes. \c fish performs a special check when invoking the
count command, and if the user uses a help option, this help page is
displayed, but if a help option is contained inside of a variable or
is the result of expansion, it will simply be counted like any other
argument.
Count exits with a non-zero exit status if no arguments were passed \c count exits with a non-zero exit status if no arguments were passed
to it, and with zero if at least one argument was passed. to it, and with zero if at least one argument was passed.
\subsection count-example Example \subsection count-example Example

View file

@ -4,5 +4,9 @@
<tt>dirh</tt> <tt>dirh</tt>
\subsection dirh-description Description \subsection dirh-description Description
<tt>dirh</tt> prints the current directory history. The current position in the <tt>dirh</tt> prints the current directory history. The current position in the
history is highlighted using <tt>$fish_color_history_current</tt>. history is highlighted using the color defined in the
<tt>fish_color_history_current</tt> environment variable.
\c dirh does not accept any parameters.

View file

@ -4,4 +4,7 @@
<tt>dirs</tt> <tt>dirs</tt>
\subsection dirs-description Description \subsection dirs-description Description
<tt>dirs</tt> prints the current directory stack. <tt>dirs</tt> prints the current directory stack, as created by the
<code><a href="#pushd">pushd</a></code> command.
\c dirs does not accept any parameters.

View file

@ -3,19 +3,21 @@
\subsection echo-synopsis Synopsis \subsection echo-synopsis Synopsis
<tt>echo [STRING]</tt> <tt>echo [STRING]</tt>
\subsection echo-description Description \subsection echo-description Description
Display a line of text. \c echo displays a string of text.
The following options are available:
- \c -n, \c Do not output a newline - \c -n, \c Do not output a newline
- \c -s, \c Do not separate arguments with spaces - \c -s, \c Do not separate arguments with spaces
- \c -E, \c Disable interpretation of backslash escapes (default) - \c -E, \c Disable interpretation of backslash escapes (default)
- \c -e, \c Enable interpretation of backslash escapes - \c -e, \c Enable interpretation of backslash escapes
- \c -h, \c --help Display this help - \c -h, \c --help Display this help
\subsection echo-escapes Escape Sequences \subsection echo-escapes Escape Sequences
If -e is in effect, the following sequences are recognized: If \c -e is used, the following sequences are recognized:
- \c \\\\ \c backslash - \c \\\\ \c backslash
- \\a alert (BEL) - \\a alert (BEL)

View file

@ -4,14 +4,18 @@
<tt>if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end</tt> <tt>if CONDITION; COMMANDS_TRUE...; [else; COMMANDS_FALSE...;] end</tt>
\subsection else-description Description \subsection else-description Description
<tt>if</tt> will execute the command CONDITION. If the condition's exit <tt>if</tt> will execute the command \c CONDITION. If the condition's exit
status is 0, the commands COMMANDS_TRUE will execute. If it is not 0 and status is 0, the commands \c COMMANDS_TRUE will execute. If it is not 0 and
<tt>else</tt> is given, COMMANDS_FALSE will be executed. Hint: use <tt>else</tt> is given, \c COMMANDS_FALSE will be executed.
<a href="#begin"><tt>begin; ...; end</tt></a> for complex conditions.
\subsection else-example Example \subsection else-example Example
The command <tt>if test -f foo.txt; echo foo.txt exists; else; echo foo.txt does not exist; end</tt> The following code tests whether a file \c foo.txt exists as a regular file.
will print <tt>foo.txt exists</tt> if the file foo.txt
exists and is a regular file, otherwise it will print <pre>
<tt>foo.txt does not exist</tt>. if test -f foo.txt
echo foo.txt exists
else
echo foo.txt does not exist
end
</pre>

View file

@ -5,7 +5,7 @@
\subsection emit-description Description \subsection emit-description Description
The emit builtin fires a generic fish event. Such events can be caught by special functions called event handlers. The arguments are passed to the event handlers as function arguments. \c emit emits, or fires, an event. Events are delivered to, or caught by, special functions called event handlers. The arguments are passed to the event handlers as function arguments.
\subsection emit-example Example \subsection emit-example Example

View file

@ -10,7 +10,9 @@ switch VALUE; [case [WILDCARD...]; [COMMANDS...]; ...] end
</pre> </pre>
\subsection end-description Description \subsection end-description Description
<tt>end</tt> ends a block of commands. For more information, read the <tt>end</tt> ends a block of commands.
For more information, read the
documentation for the block constructs, such as \c if, \c for and \c documentation for the block constructs, such as \c if, \c for and \c
while. while.

View file

@ -4,13 +4,16 @@
<tt>eval [COMMANDS...]</tt> <tt>eval [COMMANDS...]</tt>
\subsection eval-description Description \subsection eval-description Description
The <tt>eval</tt> function causes fish to evaluate the specified parameters as a command. If more than one parameter is specified, all parameters will be joined using a space character as a separator. <tt>eval</tt> evaluates the specified parameters as a command. If more than one parameter is specified, all parameters will be joined using a space character as a separator.
\subsection eval-example Example \subsection eval-example Example
The folloing code will call the ls command. Note that \c fish does not
support the use of environment variables as direct commands; \c eval can
be used to work around this.
<pre> <pre>
set cmd ls set cmd ls
eval $cmd eval $cmd
</pre> </pre>
will call the ls command.

View file

@ -5,11 +5,11 @@
\subsection exec-description Description \subsection exec-description Description
The \c exec builtin is used to replace the currently running shells \c exec replaces the currently running shell with a new command.
process image with a new command. On successful completion, exec never On successful completion, \c exec never returns. \c exec cannot be used
returns. exec can not be used inside a pipeline. inside a pipeline.
\subsection exec-example Example \subsection exec-example Example
<tt>exec emacs</tt> starts up the emacs text editor. When emacs exits, <tt>exec emacs</tt> starts up the emacs text editor, and exits \c fish.
the session will terminate. When emacs exits, the session will terminate.

View file

@ -1,13 +1,13 @@
\section exit exit - exit the shell. \section exit exit - exit the shell
\subsection exit-synopsis Synopsis \subsection exit-synopsis Synopsis
<tt>exit [STATUS]</tt> <tt>exit [STATUS]</tt>
\subsection exit-description Description \subsection exit-description Description
The <tt>exit</tt> builtin causes fish to exit. If <tt>STATUS</tt> is \c exit causes fish to exit. If <tt>STATUS</tt> is
supplied, it will be converted to an integer and used as the exit supplied, it will be converted to an integer and used as the exit
code. Otherwise the exit code will be that of the last command executed. code. Otherwise, the exit code will be that of the last command executed.
If exit is called while sourcing a file (using the <a If exit is called while sourcing a file (using the <a
href="#source">.</a> builtin) the rest of the file will be skipped, href="#source">.</a> builtin) the rest of the file will be skipped,

View file

@ -1,14 +1,14 @@
\section fg fg - send job to foreground \section fg fg - bring job to foreground
\subsection fg-synopsis Synopsis \subsection fg-synopsis Synopsis
<tt>fg [PID]</tt> <tt>fg [PID]</tt>
\subsection fg-description Description \subsection fg-description Description
Sends the specified job to the foreground. While a foreground job is \c fg brings the specified <a href="index.html#syntax-job-control">job</a> to the foreground, resuming it if it is stopped. While a foreground job is
executed, fish is suspended. If no job is specified, the last job to be used is put in the foreground. If PID is specified, the job with the specified group id is put in the foreground. executed, fish is suspended. If no job is specified, the last job to be used is put in the foreground. If PID is specified, the job with the specified group ID is put in the foreground.
The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>. The PID of the desired process is usually found by using <a href="index.html#expand-process">process expansion</a>.
\subsection fg-example Example \subsection fg-example Example
<tt>fg \%0</tt> will put the job with job id 0 in the foreground. <tt>fg \%1</tt> will put the job with job ID 1 in the foreground.

View file

@ -5,10 +5,12 @@ fish [-h] [-v] [-c command] [FILE [ARGUMENTS...]]
\subsection fish-description Description \subsection fish-description Description
A commandline shell written mainly with interactive use in mind. The \c fish is a command-line shell written mainly with interactive use in mind. The
full manual is available <a href='index.html'>in HTML</a> by using the full manual is available <a href='index.html'>in HTML</a> by using the
<a href='#help'>help</a> command from inside fish. <a href='#help'>help</a> command from inside fish.
The following options are available:
- <code>-c</code> or <code>--command=COMMANDS</code> evaluate the specified commands instead of reading from the commandline - <code>-c</code> or <code>--command=COMMANDS</code> evaluate the specified commands instead of reading from the commandline
- <code>-d</code> or <code>--debug-level=DEBUG_LEVEL</code> specify the verbosity level of fish. A higher number means higher verbosity. The default level is 1. - <code>-d</code> or <code>--debug-level=DEBUG_LEVEL</code> specify the verbosity level of fish. A higher number means higher verbosity. The default level is 1.
- <code>-h</code> or <code>--help</code> display help and exit - <code>-h</code> or <code>--help</code> display help and exit

View file

@ -1,5 +1,22 @@
\section fish_config fish_config - Start up the web-based configuration interface \section fish_config fish_config - start the web-based configuration interface
\subsection fish_config-description Description \subsection fish_config-description Description
This command starts up the web-based configuration interface, which allows you to edit your colors and view your functions, variables, and history. \c fish_config starts the web-based configuration interface.
The web interface allows you to view your functions, variables and history, and
to make changes to your prompt and color configuration.
\c fish_config starts a local web server and then opens a web browser window; when
you have finished, close the browser window and then press the Enter key to
terminate the configuration session.
There are no parameters for <code>fish_config</code>.
If the \c BROWSER environment variable is set, it will be used as the name
of the web browser to open instead of the system default.
\subsection fish_config-example Example
\c fish_config opens a new web browser window and allows you to configure certain
fish settings.

View file

@ -5,11 +5,11 @@
\subsection fish_indent-description Description \subsection fish_indent-description Description
\c fish_indent is used to indent or otherwise prettify a piece of fish \c fish_indent is used to indent a piece of fish
code. \c fish_indent reads commands from standard input and outputs code. \c fish_indent reads commands from standard input and outputs
them to standard output. them to standard output.
\c fish_indent understands the following options: The following options are available:
- <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits - <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits
- <tt>-i</tt> or <tt>--no-indent</tt> do not indent commands - <tt>-i</tt> or <tt>--no-indent</tt> do not indent commands

View file

@ -2,7 +2,6 @@
\subsection fish_pager-description Description \subsection fish_pager-description Description
This command is used internally by fish to display a list of \c fish_pager is used internally by fish. It should not be used by other
completions. It should not be used by other commands, as it's commands, as its interface is liable to change in the future.
interface is liable to change in the future.

View file

@ -11,7 +11,10 @@ By defining the \c fish_prompt function, the user can choose a custom
prompt. The \c fish_prompt function is executed when the prompt is to prompt. The \c fish_prompt function is executed when the prompt is to
be shown, and the output is used as a prompt. be shown, and the output is used as a prompt.
The exit status of commands within \c fish_prompt will not modify the <a href="index.html#variables-status">$status</a> seen outside of fish_prompt. The exit status of commands within \c fish_prompt will not modify the value of <a href="index.html#variables-status">$status</a> outside of the \c fish_prompt function.
\c fish ships with a number of example prompts that can be chosen with the
\c fish_config command.
\subsection fish_prompt-example Example \subsection fish_prompt-example Example

View file

@ -1,6 +1,9 @@
\section fish_update_completions fish_update_completions - Update man-page completions \section fish_update_completions fish_update_completions - Update completions using manual pages
\subsection fish_update_completions-description Description \subsection fish_update_completions-description Description
This command parses your installed man pages and writes completion files to the fish config directory. This does not overwrite custom completions. \c fish_update_completions parses manual pages installed on the system, and attempts to create completion files in the \c fish configuration directory.
This does not overwrite custom completions.
There are no parameters for <code>fish_update_completions</code>.

View file

@ -6,26 +6,28 @@
\subsection fishd-description Description \subsection fishd-description Description
The \c fishd daemon is used to load, save and distribute universal The \c fishd daemon is used to load, save and distribute universal
variable information. fish automatically connects to fishd via a socket variable information. \c fish automatically connects to \c fishd via a socket
on startup. If no instance of fishd is running, fish spawns a new on startup.
fishd instance. fishd will create a socket in /tmp, and wait for
incoming connections from universal variable clients, such as fish, \c fishd is started and stopped automatically.
When no clients are connected, fishd will automatically shut down.
The following options are available if starting \c fishd manually:
- <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits - <tt>-h</tt> or <tt>--help</tt> displays this help message and then exits
- <tt>-v</tt> or <tt>--version</tt> displays the current fish version and then exits - <tt>-v</tt> or <tt>--version</tt> displays the current fish version and then exits
\subsection fishd-files Files \subsection fishd-files Files
\c ~/.config/fish/fishd.MACHINE_ID permanent storage location for universal - \c ~/.config/fish/fishd.MACHINE_ID - permanent storage location for universal
variable data. MACHINE_ID is generally based on the machine's MAC address. variable data. \c MACHINE_ID is generally based on the machine's MAC address.
The data is stored as a set of \c set and \c set_export commands such as
would be parsed by fishd. The file must always be stored in ASCII format.
If an instance of fishd is running (which is generally the case), manual
modifications to ~/.fishd.MACHINE_ID will be lost. Do NOT edit this file manually!
\c /tmp/fishd.socket.USERNAME the socket which fishd uses to communicate The data is stored as a set of \c set and \c set_export commands such as
would be parsed by fishd. The file must always be stored in YAML format.
If an instance of fishd is running (which is generally the case), manual
modifications to \c ~/.fishd.MACHINE_ID will be lost. Do NOT edit this file manually!
- \c /tmp/fishd.socket.USERNAME - the socket which fishd uses to communicate
with all clients. with all clients.
/tmp/fishd.log.USERNAME the fishd log file - /tmp/fishd.log.USERNAME - the fishd log file

View file

@ -5,8 +5,8 @@
\subsection for-description Description \subsection for-description Description
<tt>for</tt> is a loop construct. It will perform the commands specified by <tt>for</tt> is a loop construct. It will perform the commands specified by
COMMANDS multiple times. Each time the environment variable specified by \c COMMANDS multiple times. On each iteration, the environment variable specified by
VARNAME is assigned a new value from VALUES. If VALUES is empty, COMMANDS will \c VARNAME is assigned a new value from \c VALUES. If \c VALUES is empty, \c COMMANDS will
not be executed at all. not be executed at all.
\subsection for-example Example \subsection for-example Example

View file

@ -5,13 +5,14 @@
\subsection funced-description Description \subsection funced-description Description
Use the funced command to edit the definition of a function. If there is no \c funced provides an interface to edit the definition of the function
function with the name specified, a skeleton function is inserted. If the <code>NAME</code>.
function exists, its definition will be shown in your editor or on the command
line.
By default, funced edits functions using the text editor in your $EDITOR If the \c $EDITOR environment variable is set, it will be used as the program
variable, if set; otherwise it uses the built-in editor. to edit the function. Otherwise, a built-in editor will be used.
If there is no function called \c NAME a new function will be created with
the specified name
- <code>-e command</code> or <code>--editor command</code> Open the function - <code>-e command</code> or <code>--editor command</code> Open the function
body inside the text editor given by the command (for example, "vi"). The body inside the text editor given by the command (for example, "vi"). The

View file

@ -1,12 +1,13 @@
\section funcsave funcsave - save the definition of a function to the user's autoload directory \section funcsave funcsave - save the definition of a function to the user's autoload directory
\subsection funcsave-synopsis Synopsis \subsection funcsave-synopsis Synopsis
<tt>funcsave FUNCTION_NAME</tt> <tt>funcsave FUNCTION_NAME</tt>
\subsection funcsave-description Description \subsection funcsave-description Description
funcsave is used to save the current definition of a function to \c funcsave saves the current definition of a function to
a file which will be autoloaded by current and future fish a file in the fish configuration directory. This function will be automatically
loaded by current and future fish
sessions. This can be useful if you have interactively created a new sessions. This can be useful if you have interactively created a new
function and wish to save it for later use. function and wish to save it for later use.

View file

@ -5,32 +5,28 @@
\subsection function-description Description \subsection function-description Description
- <code>-d DESCRIPTION</code> or \c --description=DESCRIPTION is a description of what the function does, suitable as a completion 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>-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>-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>-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>-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 - <code>-v</code> or <code>--on-variable VARIABLE_NAME</code> 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
<pre>
function hi
echo hello
end
</pre>
will write <code>hello</code> whenever the user enters \c hi.
If the user enters any additional arguments after the function, they 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> argv. 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: 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_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 - \c fish_command_not_found, which is emitted whenever a command lookup failed.
\subsection function-example Example \subsection function-example Example

View file

@ -1,31 +1,51 @@
\section functions functions - print or erase functions \section functions functions - print or erase functions
\subsection function-synopsis Synopsis \subsection function-synopsis Synopsis
<code>functions [-e] FUNCTIONS...</code> <pre>functions [-n]
functions -c OLDNAME NEWNAME
functions -d DESCRIPTION FUNCTION
functions [-eq] FUNCTIONS...</pre>
\subsection functions-description Description \subsection functions-description Description
This builtin command is used to print or erase functions. \c functions prints or erases functions.
- <code>-a</code> or <code>--all</code> list all functions, even those whose name start with an underscore. The following options are available:
- <code>-a</code> or <code>--all</code> lists all functions, even those whose name start with an underscore.
- <code>-c OLDNAME NEWNAME</code> or <code>--copy OLDNAME NEWNAME</code> creates a new function named NEWNAME, using the definition of the OLDNAME function. - <code>-c OLDNAME NEWNAME</code> or <code>--copy OLDNAME NEWNAME</code> creates a new function named NEWNAME, using the definition of the OLDNAME function.
- <code>-d DESCRIPTION</code> or <code>--description=DESCRIPTION</code> change the description of this function - <code>-d DESCRIPTION</code> or <code>--description=DESCRIPTION</code> changes the description of this function.
- <code>-e</code> or <code>--erase</code> causes the specified functions to be erased. - <code>-e</code> or <code>--erase</code> causes the specified functions to be erased.
- <code>-h</code> or <code>--help</code> display a help message and exit - <code>-h</code> or <code>--help</code> displays a help message and exits.
- <code>-n</code> or <code>--names</code> list only the names of all defined functions, not their definition - <code>-n</code> or <code>--names</code> lists the names of all defined functions.
- <code>-q</code> or <code>--query</code> test if the specified functions exist. Does not output anything, but the builtins exit status is the number of functions specified that were not defined. - <code>-q</code> or <code>--query</code> tests if the specified functions exist.
The default behavior of \c functions when called with no arguments, The default behavior of <code>functions</code>, when called with no arguments,
is to print the names and definitions of all defined functions. If any is to print the names of all defined functions. Unless the \c -a option is
non-switch parameters are given, only the definition of the specified 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. functions are printed.
Automatically loaded functions can not be removed using functions Automatically loaded functions cannot be removed using <code>functions
-e. Either remove the definition file or change the -e</code>. Either remove the definition file or change the
$fish_function_path variable to remove autoloaded functions. $fish_function_path variable to remove autoloaded functions.
Function copies, created with -c, will not have any event/signal/on-exit Copying a function using \c -c copies only the body of the function, and
notifications that the original may have had. does not attach any event notifications from the original function.
The exit status of the functions builtin is the number functions Only one function's description can be changed in a single invocation
specified in the argument list that do not exist. of <code>functions -d</code>.
The exit status of \c functions is the number of functions
specified in the argument list that do not exist, which can be used in
concert with the \c -q option.
\subsection functions-example Examples
<code>functions -n</code> displays a list of currently-defined functions.
<code>functions -c foo bar</code> copies the \c foo function to a new function called
<code>bar</code>.
<code>functions -e bar</code> erases the function <code>bar</code>.

View file

@ -5,12 +5,14 @@
\subsection help-description Description \subsection help-description Description
The \c help command is used to display a section of the fish help documentation. \c help displays the fish help documentation.
If a \c SECTION is specified, the help for that command is shown.
If the BROWSER environment variable is set, it will be used to display the If the BROWSER environment variable is set, it will be used to display the
documentation, otherwise fish will search for a suitable browser. documentation. Otherwise, fish will search for a suitable browser.
Note also that most builtin commands display their help in the terminal when Note that most builtin commands display their help in the terminal when
given the <tt>--help</tt> option. given the <tt>--help</tt> option.
\subsection help-example Example \subsection help-example Example

View file

@ -1,4 +1,4 @@
\section history history - Show and manipulate user's command history \section history history - Show and manipulate command history
\subsection history-synopsis Synopsis \subsection history-synopsis Synopsis
<pre> <pre>
@ -8,29 +8,37 @@ history (--search | --delete ) (--prefix "prefix string" | --contains "search st
\subsection history-description Description \subsection history-description Description
history is used to list, search and delete user's command history \c history is used to list, search and delete the history of commands used.
The following options are available:
- \c --save saves all changes in the history file. The shell automatically
saves the history file; this option is provided for internal use.
- \c --clear clears the history file. A prompt is displayed before the history
is erased.
- \c --search returns history items in keeping with the \c --prefix or
\c --contains options.
- \c --delete deletes history items.
- \c --prefix searches or deletes items in the history that begin with the
specified text string.
- \c --contains searches or deletes items in the history that contain the
specified text string.
If \c --search is specified without \c --contains or <code>--prefix</code>,
\c --contains will be assumed.
If \c --delete is specified without \c --contains or <code>--prefix</code>,
only a history item which exactly matches the parameter will be erased. No
prompt will be given. If \c --delete is specified with either of these
parameters, an interactive prompt will be displayed before any items are
deleted.
\subsection history-examples Example \subsection history-examples Example
<pre> <code>history --clear</code> deletes all history items
history --save
Save all changes in history file
history --clear <code>history --search --contains "foo"</code> outputs a list of all previous
Delete all history items commands containing the string "foo".
history --search --contains "foo" <code>history --delete --prefix "foo"</code> interactively deletes the record
Searches commands containing "foo" string of previous commands which start with "foo".
history --search --prefix "foo"
Searches for commands with prefix "foo"
history --delete --contains "foo"
Interactively delete commands containing string "foo"
history --delete --prefix "foo"
Interactively delete commands with prefix "foo"
history --delete "foo"
Delete command "foo" from history
</pre>

View file

@ -5,15 +5,15 @@
\subsection if-description Description \subsection if-description Description
<tt>if</tt> will execute the command CONDITION. If the condition's <tt>if</tt> will execute the command \c CONDITION. If the condition's
exit status is 0, the commands COMMANDS_TRUE will execute. If the exit status is 0, the commands \c COMMANDS_TRUE will execute. If the
exit status is not 0 and <tt>else</tt> is given, COMMANDS_FALSE will exit status is not 0 and <tt>else</tt> is given, \c COMMANDS_FALSE will
be executed. be executed.
In order to use the exit status of multiple commands as the condition In order to use the exit status of multiple commands as the condition
of an if block, use <a href="#begin"><tt>begin; ...; end</tt></a> and of an if block, use <a href="#begin"><tt>begin; ...; end</tt></a> and
the short circuit commands <a href="commands.html#and">and</a> and <a the short circuit commands <a href="commands.html#and"><tt>and</tt></a>
href="commands.html#or">or</a>. and <a href="commands.html#or"><tt>or</tt></a>.
The exit status of the last foreground command to exit can always be The exit status of the last foreground command to exit can always be
accessed using the <a href="index.html#variables-status">$status</a> accessed using the <a href="index.html#variables-status">$status</a>

View file

@ -4,12 +4,11 @@
<tt>isatty [FILE DESCRIPTOR]</tt> <tt>isatty [FILE DESCRIPTOR]</tt>
\subsection isatty-description Description \subsection isatty-description Description
The <tt>isatty</tt> command is used to test if a file descriptor is a tty. <tt>isatty</tt> tests if a file descriptor is a tty.
FILE DESCRIPTOR may be either the number of a file descriptor, or one of the <tt>FILE DESCRIPTOR</tt> may be either the number of a file descriptor, or one of the
strings stdin, stdout and stderr. strings <tt>stdin</tt>, \c stdout and <tt>stderr</tt>.
If the specified file descriptor is a tty, the exit status of the command is If the specified file descriptor is a tty, the exit status of the command is
zero, otherwise, it is non-zero. zero. Otherwise, it is non-zero.

View file

@ -4,18 +4,22 @@
<code>jobs [OPTIONS] [PID]</code> <code>jobs [OPTIONS] [PID]</code>
\subsection jobs-description Description \subsection jobs-description Description
The <code>jobs</code> builtin causes fish to print a list of the currently <code>jobs</code> prints a list of the currently
running jobs and their status. running <a href="index.html#syntax-job-control">jobs</a> and their status.
jobs accepts the following switches: jobs accepts the following switches:
- <code>-c</code> or <code>--command</code> print the command name for each process in jobs - <code>-c</code> or <code>--command</code> prints the command name for each process in jobs.
- <code>-g</code> or <code>--group</code> only print the group id of each job - <code>-g</code> or <code>--group</code> only prints the group ID of each job.
- <code>-h</code> or <code>--help</code> display a help message and exit - <code>-h</code> or <code>--help</code> displays a help message and exits.
- <code>-l</code> or <code>--last</code> only the last job to be started is printed - <code>-l</code> or <code>--last</code> prints only the last job to be started.
- <code>-p</code> or <code>--pid</code> print the process id for each process in all jobs - <code>-p</code> or <code>--pid</code> prints the process ID for each process in all jobs.
On systems that supports this feature, jobs will print the CPU usage On systems that supports this feature, jobs will print the CPU usage
of each job since the last command was executed. The CPU usage is of each job since the last command was executed. The CPU usage is
expressed as a percentage of full CPU activity. Note that on expressed as a percentage of full CPU activity. Note that on
multiprocessor systems, the total activity may be more than 100\%. multiprocessor systems, the total activity may be more than 100\%.
\subsection jobs-example Example
<code>jobs</code> outputs a summary of the current jobs.

View file

@ -6,10 +6,10 @@
\subsection math-description Description \subsection math-description Description
math is used to perform mathematical calculations. It is only a very \c math is used to perform mathematical calculations. It is a very
thin wrapper for the bc program, that makes it possible to specify an thin wrapper for the bc program, which makes it possible to specify an
expression from the command line without using non-standard extensions expression from the command line without using non-standard extensions
or a pipeline. Simply use a command like <code>math 1+1</code>. or a pipeline.
For a description of the syntax supported by math, see the manual for For a description of the syntax supported by math, see the manual for
the bc program. Keep in mind that parameter expansion takes place on the bc program. Keep in mind that parameter expansion takes place on
@ -18,3 +18,9 @@ order to perform calculations involving environment variables or the
output of command substitutions, but it also means that parenthesis output of command substitutions, but it also means that parenthesis
have to be escaped. have to be escaped.
\subsection math-example Examples
<code>math 1+1</code> outputs 2.
<code>math $status-128</code> outputs the numerical exit status of the
last command minus 128.

View file

@ -5,21 +5,22 @@
\subsection mimedb-description Description \subsection mimedb-description Description
- \c FILES is a list of files to analyse \c mimedb queries the MIME type database and the \c .desktop files
- \c -t, \c --input-file-data the specified files type should be determined both by their filename and by their contents (Default) installed on the system in order to find information on
- \c -f, \c --input-filename the specified files type should be determined by their filename the files listed in <code>FILES</code>. The information that \c mimedb
- \c -i, \c --input-mime the arguments are not files but mimetypes can retrieve includes the MIME type for a file, a description of the type,
- \c -m, \c --output-mime the output will be the mimetype of each file (Default) and the default action that can be performed on the file. \c mimedb can also
- \c -f, \c --output-description the output will be the description of each mimetype be used to launch the default action for this file.
- \c -a, \c --output-action the output will be the default action of each mimetype
- \c -l, \c --launch launch the default action for the specified file(s)
- \c -h, \c --help display a help message and exit
- \c -v, \c --version display version number and exit
The mimedb command is used to query the mimetype database and the The following options are available:
.desktop files installed on the system in order to find information on
a file. The information that mimedb can retrieve includes the mimetype - \c -t, \c --input-file-data determines the files' type both by their filename and by their contents (default behaviour).
for a file, a description of the type and what its default action - \c -f, \c --input-filename determines the files' type by their filename.
is. mimedb can also be used to launch the default action for this - \c -i, \c --input-mime specifies that the arguments are not files, but MIME types.
file. - \c -m, \c --output-mime outputs the MIME type of each file (default behaviour).
- \c -f, \c --output-description outputs the description of each MIME type.
- \c -a, \c --output-action outputs the default action of each MIME type.
- \c -l, \c --launch launches the default action for the specified files.
- \c -h, \c --help displays a help message and exit.
- \c -v, \c --version displays the version number and exits.

View file

@ -1,10 +1,22 @@
\section nextd nextd - move forward through directory history \section nextd nextd - move forward through directory history
\subsection nextd-synopsis Synopsis \subsection nextd-synopsis Synopsis
<tt>nextd [-l | --list] [pos]</tt> <tt>nextd [-l | --list] [POS]</tt>
\subsection nextd-description Description \subsection nextd-description Description
<tt>nextd</tt> moves forwards <tt>pos</tt> positions in the history of visited <tt>nextd</tt> moves forwards <tt>POS</tt> positions in the history of visited
directories; if the end of the history has been hit, a warning is printed. If directories; if the end of the history has been hit, a warning is printed.
the <code>-l></code> or <code>--list</code> flag is specified, the current
history is also displayed. If the <code>-l></code> or <code>--list</code> flag is specified, the current
directory history is also displayed.
\subsection nextd-example Example
<pre>cd /usr/src
# Working directory is now /usr/src
cd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
prevd
# Working directory is now /usr/src
nextd
# Working directory is now /usr/src/fish-shell</pre>

View file

@ -5,11 +5,13 @@
\subsection not-description Description \subsection not-description Description
The \c not builtin is used to negate the exit status of another command. \c not negates the exit status of another command. If the exit status
is zero, \c not returns 1. Otherwise, \c not returns 0.
\subsection not-example Example \subsection not-example Example
The following code reports an error and exits if no file named spoon can be found. The following code reports an error and exits if no file named spoon can be found.
<pre> <pre>
if not test -f spoon if not test -f spoon
echo There is no spoon echo There is no spoon

View file

@ -5,7 +5,7 @@
\subsection open-description Description \subsection open-description Description
The \c open command is used to open a file in its default application. \c open is implemented using the \c xdg-open command if it exists, or else the <a href="commands.html#mimedb">mimedb</a> command. \c open opens a file in its default application, using the \c xdg-open command if it exists, or else the <a href="commands.html#mimedb">mimedb</a> command.
\subsection open-example Example \subsection open-example Example

View file

@ -5,10 +5,10 @@
\subsection or-description Description \subsection or-description Description
The \c or builtin is used to execute a command if the current exit \c or is used to execute a command if the current exit
status (as set by the last previous command) is not 0. status (as set by the last previous command) is not 0.
The or command does not change the current exit status. \c or does not change the current exit status.
The exit status of the last foreground command to exit can always be The exit status of the last foreground command to exit can always be
accessed using the <a href="index.html#variables-status">$status</a> accessed using the <a href="index.html#variables-status">$status</a>
@ -16,10 +16,10 @@ variable.
\subsection or-example Example \subsection or-example Example
The following code runs the \c make command to build a program, if the The following code runs the \c make command to build a program. If the
build succeeds, the program is installed. If either step fails, build succeeds, the program is installed. If either step fails,
<tt>make clean</tt> is run, which removes the files created by the <tt>make clean</tt> is run, which removes the files created by the
build process build process.
<pre> <pre>
make; and make install; or make clean make; and make install; or make clean

View file

@ -4,5 +4,21 @@
<tt>popd</tt> <tt>popd</tt>
\subsection popd-description Description \subsection popd-description Description
<tt>popd</tt> removes the top directory from the directory stack and <tt>popd</tt> removes the top directory from the directory stack and
cd's to the new top directory. changes the working directory to the new top directory. Use <a
href="#pushd"><tt>pushd</tt></a> to add directories to the stack.
\subsection popd-example Example
<pre>
pushd /usr/src
# Working directory is now /usr/src
# Directory stack contains /usr/src
pushd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
# Directory stack contains /usr/src /usr/src/fish-shell
popd
# Working directory is now /usr/src
# Directory stack contains /usr/src
</pre>

View file

@ -1,11 +1,24 @@
\section prevd prevd - move backward through directory history \section prevd prevd - move backward through directory history
\subsection prevd-synopsis Synopsis \subsection prevd-synopsis Synopsis
<tt>prevd [-l | --list] [pos]</tt> <tt>prevd [-l | --list] [POS]</tt>
\subsection prevd-description Description \subsection prevd-description Description
<tt>prevd</tt> moves backwards <tt>pos</tt> positions in the history <tt>prevd</tt> moves backwards <tt>POS</tt> positions in the history
of visited directories; if the beginning of the history has been hit, of visited directories; if the beginning of the history has been hit,
a warning is printed. If the <code>-l</code> or <code>--list</code> a warning is printed.
flag is specified, the current history is also displayed.
If the <code>-l</code> or <code>--list</code> flag is specified, the current
history is also displayed.
\subsection prevd-example Example
<pre>cd /usr/src
# Working directory is now /usr/src
cd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
prevd
# Working directory is now /usr/src
nextd
# Working directory is now /usr/src/fish-shell</pre>

View file

@ -11,12 +11,12 @@ send the output of a command into the calling command, much like
command substitution, but with the difference that the output is not command substitution, but with the difference that the output is not
sent through commandline arguments but through a named pipe, with the sent through commandline arguments but through a named pipe, with the
filename of the named pipe sent as an argument to the calling filename of the named pipe sent as an argument to the calling
program. The psub shellscript function, which when combined with a program. \c psub combined with a
regular command substitution provides the same functionality. regular command substitution provides the same functionality.
If the \c -f or \c --file switch is given to psub, psub will use a If the \c -f or \c --file switch is given to <tt>psub</tt>, \c psub will use a
regular file instead of a named pipe to communicate with the calling regular file instead of a named pipe to communicate with the calling
process. This will cause psub to be significantly slower when large process. This will cause \c psub to be significantly slower when large
amounts of data are involved, but has the advantage that the reading amounts of data are involved, but has the advantage that the reading
process can seek in the stream. process can seek in the stream.

View file

@ -4,6 +4,20 @@
<tt>pushd [DIRECTORY]</tt> <tt>pushd [DIRECTORY]</tt>
\subsection pushd-description Description \subsection pushd-description Description
The <tt>pushd</tt> function adds DIRECTORY to the top of the directory stack The <tt>pushd</tt> function adds \c DIRECTORY to the top of the directory stack
and makes it the current directory. Use <tt>popd</tt> to pop it off and and makes it the current working directory. <a href="#popd"><tt>popd</tt></a> will pop it off and
return to the original directory. return to the original directory.
\subsection pushd-example Example
<pre>
pushd /usr/src
# Working directory is now /usr/src
# Directory stack contains /usr/src
pushd /usr/src/fish-shell
# Working directory is now /usr/src/fish-shell
# Directory stack contains /usr/src /usr/src/fish-shell
popd
# Working directory is now /usr/src
# Directory stack contains /usr/src
</pre>

View file

@ -1,8 +1,10 @@
\section pwd pwd - returns the current directory \section pwd pwd - output the current working directory
\subsection pwd-synopsis Synopsis \subsection pwd-synopsis Synopsis
<tt>pwd</tt> <tt>pwd</tt>
\subsection pwd-description Description \subsection pwd-description Description
Returns the current directory. Note that fish always resolves symbolic links in the current directory path. \c pwd outputs (prints) the current working directory.
Note that \c fish always resolves symbolic links in the current directory path.

View file

@ -5,10 +5,11 @@
\subsection random-description Description \subsection random-description Description
The \c random command is used to generate a random number in the \c random outputs a random number from 0 to 32766, inclusive.
interval 0<=N<32767. If an argument is given, it is used to seed the
random number generator. This can be useful for debugging purposes, If a \c SEED value is provided, it is used to seed the random number
where it can be desirable to get the same random number sequence generator, and no output will be produced. This can be useful for debugging
purposes, where it can be desirable to get the same random number sequence
multiple times. If the random number generator is called without first multiple times. If the random number generator is called without first
seeding it, the current time will be used as the seed. seeding it, the current time will be used as the seed.

View file

@ -5,27 +5,29 @@
\subsection read-description Description \subsection read-description Description
The <tt>read</tt> builtin causes fish to read one line from standard <tt>read</tt> reads one line from standard
input and store the result in one or more environment variables. input and stores the result in one or more environment variables.
- <tt>-c CMD</tt> or <tt>--command=CMD</tt> specifies that the initial string in the interactive mode command buffer should be CMD. The following options are available:
- <tt>-g</tt> or <tt>--global</tt> specifies that the variables will be made global.
- <tt>-l</tt> or <tt>--local</tt> specifies that the variables will be made local. - <tt>-c CMD</tt> or <tt>--command=CMD</tt> sets the initial string in the interactive mode command buffer to <tt>CMD</tt>.
- <tt>-g</tt> or <tt>--global</tt> makes the variables global (default behaviour).
- <tt>-l</tt> or <tt>--local</tt> makes the variables local.
- <tt>-m NAME</tt> or <tt>--mode-name=NAME</tt> specifies that the name NAME should be used to save/load the history file. If NAME is fish, the regular fish history will be available. - <tt>-m NAME</tt> or <tt>--mode-name=NAME</tt> specifies that the name NAME should be used to save/load the history file. If NAME is fish, the regular fish history will be available.
- <tt>-p PROMPT_CMD</tt> or <tt>--prompt=PROMPT_CMD</tt> specifies that the output of the shell command PROMPT_CMD should be used as the prompt for the interactive mode prompt. The default prompt command is <tt>set_color green; echo read; set_color normal; echo "> "</tt>. - <tt>-p PROMPT_CMD</tt> or <tt>--prompt=PROMPT_CMD</tt> uses the output of the shell command \c PROMPT_CMD as the prompt for the interactive mode. The default prompt command is <tt>set_color green; echo read; set_color normal; echo "> "</tt>.
- <code>-s</code> or <code>--shell</code> Use syntax highlighting, tab completions and command termination suitable for entering shellscript code - <code>-s</code> or <code>--shell</code> enables syntax highlighting, tab completions and command termination suitable for entering shellscript code in the interactive mode.
- <code>-u</code> or <code>--unexport</code> causes the specified environment not to be exported to child processes - <code>-u</code> or <code>--unexport</code> prevents the variables from being exported to child processes (default behaviour).
- <code>-U</code> or <code>--universal</code> causes the specified environment variable to be made universal. If this option is supplied, the variable will be shared between all the current users fish instances on the current computer, and will be preserved across restarts of the shell. - <code>-U</code> or <code>--universal</code> causes the specified environment variable to be made universal.
- <code>-x</code> or <code>--export</code> causes the specified environment variable to be exported to child processes - <code>-x</code> or <code>--export</code> exports the variables to child processes.
Read starts by reading a single line of input from stdin, the line is \c read reads a single line of input from stdin, breaks it into tokens
then tokenized using the <tt>IFS</tt> environment variable. Each variable based on the <tt>IFS</tt> environment variable, and then assigns one
specified in <tt>VARIABLES</tt> is then assigned one tokenized string token to each variable specified in <tt>VARIABLES</tt>. If there are more
element. If there are more tokens than variables, the complete tokens than variables, the complete remainder is assigned to the last variable.
remainder is assigned to the last variable.
\subsection read-example Example \subsection read-example Example
<tt>echo hello|read foo</tt> The following code stores the value 'hello' in the environment variable
<tt>$foo</tt>.
Will cause the variable \$foo to be assigned the value hello. <tt>echo hello|read foo</tt>

View file

@ -1,19 +1,19 @@
\section return return - stop the innermost currently evaluated function \section return return - stop the current inner function
\subsection return-synopsis Synopsis \subsection return-synopsis Synopsis
<tt>function NAME; [COMMANDS...;] return [STATUS]; [COMMANDS...;] end</tt> <tt>function NAME; [COMMANDS...;] return [STATUS]; [COMMANDS...;] end</tt>
\subsection return-description Description \subsection return-description Description
The \c return builtin is used to halt a currently running function. It \c return halts a currently running function. The exit status is set
is usually added inside of a conditional block such as an <a to \c STATUS if it is given.
It is usually added inside of a conditional block such as an <a
href="#if">if</a> statement or a <a href="#switch">switch</a> href="#if">if</a> statement or a <a href="#switch">switch</a>
statement to conditionally stop the executing function and return to statement to conditionally stop the executing function and return to
the caller, but it can also be used to specify the exit status of a the caller, but it can also be used to specify the exit status of a
function. function.
- \c STATUS is the return status of the function. If unspecified, the status is unchanged.
\subsection return-example Example \subsection return-example Example
The following code is an implementation of the false command as a fish function The following code is an implementation of the false command as a fish function

View file

@ -1,4 +1,4 @@
\section set set - handle environment variables. \section set set - display and change environment variables.
\subsection set-synopsis Synopsis \subsection set-synopsis Synopsis
<pre> <pre>
@ -10,31 +10,39 @@ set (-e | --erase) [SCOPE_OPTIONS] VARIABLE_NAME
set (-e | --erase) [SCOPE_OPTIONS] VARIABLE_NAME[INDICES]... set (-e | --erase) [SCOPE_OPTIONS] VARIABLE_NAME[INDICES]...
</pre> </pre>
The <code>set</code> builtin causes fish to assign the variable <code>VARIABLE_NAME</code> the values <code>VALUES...</code>.
\subsection set-description Description \subsection set-description Description
- <code>-e</code> or <code>--erase</code> causes the specified environment variable to be erased
- <code>-l</code> or <code>--local</code> forces the specified environment variable to be given a scope that is local to the current block, even if a variable with the given name exists and is non-local <code>set</code> manipulates <a href="index.html#variables">environment
- <code>-g</code> or <code>--global</code> causes the specified environment variable to be given a global scope. Non-global variables disappear when the block they belong to ends variables</a>.
- <code>-U</code> or <code>--universal</code> causes the specified environment variable to be given a universal scope. If this option is supplied, the variable will be shared between all the current users fish instances on the current computer, and will be preserved across restarts of the shell.
- <code>-n</code> or <code>--names</code> List only the names of all defined variables, not their value
- <code>-q</code> or <code>--query</code> test if the specified variable names are defined. Does not output anything, but the builtins exit status is the number of variables specified that were not defined.
- <code>-u</code> or <code>--unexport</code> causes the specified environment not to be exported to child processes
- <code>-x</code> or <code>--export</code> causes the specified environment variable to be exported to child processes
- <code>-L</code> or <code>--long</code> do not abbreviate long values when printing set variables
If set is called with no arguments, the names and values of all If set is called with no arguments, the names and values of all
environment variables are printed. If some of the scope or export environment variables are printed. If some of the scope or export
flags have been given, only the variables matching the specified scope flags have been given, only the variables matching the specified scope
are printed. are printed.
With both variable names and values provided, \c set assigns the variable
<code>VARIABLE_NAME</code> the values <code>VALUES...</code>.
The following options control variable scope:
- <code>-l</code> or <code>--local</code> forces the specified environment variable to be given a scope that is local to the current block, even if a variable with the given name exists and is non-local
- <code>-g</code> or <code>--global</code> causes the specified environment variable to be given a global scope. Non-global variables disappear when the block they belong to ends
- <code>-U</code> or <code>--universal</code> causes the specified environment variable to be given a universal scope. If this option is supplied, the variable will be shared between all the current users fish instances on the current computer, and will be preserved across restarts of the shell.
- <code>-n</code> or <code>--names</code> List only the names of all defined variables, not their value
- <code>-u</code> or <code>--unexport</code> causes the specified environment not to be exported to child processes
- <code>-x</code> or <code>--export</code> causes the specified environment variable to be exported to child processes
The following options are available:
- <code>-e</code> or <code>--erase</code> causes the specified environment variable to be erased
- <code>-q</code> or <code>--query</code> test if the specified variable names are defined. Does not output anything, but the builtins exit status is the number of variables specified that were not defined.
- <code>-L</code> or <code>--long</code> do not abbreviate long values when printing set variables
If a variable is set to more than one value, the variable will be an If a variable is set to more than one value, the variable will be an
array with the specified elements. If a variable is set to zero array with the specified elements. If a variable is set to zero
elements, it will become an array with zero elements. elements, it will become an array with zero elements.
If the variable name is one or more array elements, such as If the variable name is one or more array elements, such as
<code>PATH[1 3 7]</code>, only those array elements specified will be <code>PATH[1 3 7]</code>, only those array elements specified will be
changed. When array indices are specified to set, multiple arguments changed. When array indices are specified to \c set, multiple arguments
may be used to specify additional indexes, e.g. <code>set PATH[1] may be used to specify additional indexes, e.g. <code>set PATH[1]
PATH[4] /bin /sbin</code>. If you specify a negative index when PATH[4] /bin /sbin</code>. If you specify a negative index when
expanding or assigning to an array variable, the index will be expanding or assigning to an array variable, the index will be
@ -63,17 +71,17 @@ be specified. That way, a global variable can be erased even if a
local variable with the same name exists. Scope can not be specified local variable with the same name exists. Scope can not be specified
when erasing a slice of an array. The innermost scope is always used. when erasing a slice of an array. The innermost scope is always used.
The set command requires all switch arguments to come before any \c set requires all options to come before any
non-switch arguments. For example, <code>set flags -l</code> will have other arguments. For example, <code>set flags -l</code> will have
the effect of setting the value of the variable <code>flags</code> to the effect of setting the value of the variable <code>flags</code> to
'-l', not making the variable local. '-l', not making the variable local.
In assignment mode, set exits with a non-zero exit status if variable In assignment mode, \c set exits with a non-zero exit status if variable
assignments could not be successfully performed. If the variable assignments assignments could not be successfully performed. If the variable assignments
were performed, the exit status is unchanged. This allows simultaneous capture were performed, the exit status is unchanged. This allows simultaneous capture
of the output and exit status of a subcommand, e.g. <code>if set output of the output and exit status of a subcommand, e.g. <code>if set output
(command)</code>. In query mode, the exit status is the number of variables that (command)</code>. In query mode, the exit status is the number of variables that
were not found. In erase mode, set exits with a zero exit status in case of were not found. In erase mode, \c set exits with a zero exit status in case of
success, with a non-zero exit status if the commandline was invalid, if the success, with a non-zero exit status if the commandline was invalid, if the
variable was write-protected or if the variable did not exist. variable was write-protected or if the variable did not exist.

View file

@ -5,37 +5,36 @@
\subsection set_color-description Description \subsection set_color-description Description
Change the foreground and/or background color of the terminal. \c set_color changes the foreground and/or background color of the terminal.
COLOR is one of black, red, green, brown, yellow, blue, magenta, \c COLOR is one of black, red, green, brown, yellow, blue, magenta,
purple, cyan, white and normal. purple, cyan, white and normal.
If your terminal supports term256 (modern xterms and OS X Lion), If your terminal supports term256 (modern xterms and OS X Lion),
you can specify an RGB value with three or six hex digits, such you can specify an RGB value with three or six hex digits, such
as A0FF33 or f2f. fish will choose the closest supported color. as A0FF33 or f2f. \c fish will choose the closest supported color.
- \c -b, \c --background Set the background color The following options are available:
- \c -c, \c --print-colors Prints a list of all valid color names
- \c -h, \c --help Display help message and exit
- \c -o, \c --bold Set bold or extra bright mode
- \c -u, \c --underline Set underlined mode
- \c -b, \c --background \c COLOR sets the background color.
- \c -c, \c --print-colors prints a list of all valid color names.
- \c -h, \c --help displays a help message and exit.
- \c -o, \c --bold sets bold or extra bright mode.
- \c -u, \c --underline sets underlined mode.
Calling <tt>set_color normal</tt> will set the terminal color to Calling <tt>set_color normal</tt> will set the terminal color to
whatever is the default color of the terminal. the default color of the terminal.
Some terminals use the --bold escape sequence to switch to a brighter Some terminals use the --bold escape sequence to switch to a brighter
color set. On such terminals, <code>set_color white</code> will result color set. On such terminals, <code>set_color white</code> will result
in a grey font color, while <code>set_color --bold white</code> will in a grey font color, while <code>set_color --bold white</code> will
result in a white font color. result in a white font color.
Not all terminal emulators support all these features. This is not a Not all terminal emulators support all these features.
bug in set_color but a missing feature in the terminal emulator.
set_color uses the terminfo database to look up how to change terminal \c set_color uses the terminfo database to look up how to change terminal
colors on whatever terminal is in use. Some systems have old and colors on whatever terminal is in use. Some systems have old and
incomplete terminfo databases, and may lack color information for incomplete terminfo databases, and may lack color information for
terminals that support it. Download and install the latest version of terminals that support it.
ncurses and recompile fish against it in order to fix this issue.
\subsection set_color-example Examples \subsection set_color-example Examples
<pre>set_color red; echo "Roses are red" <pre>set_color red; echo "Roses are red"

View file

@ -5,24 +5,22 @@
\subsection source-description Description \subsection source-description Description
Evaluates the commands of the specified file in the current \c . (source) evaluates the commands of the specified file in the current
shell. This is different from starting a new process to perform the shell. This is different from starting a new process to perform the
commands (i.e. <tt>fish < FILENAME</tt>) since the commands will be commands (i.e. <tt>fish < FILENAME</tt>) since the commands will be
evaluated by the current shell, which means that changes in evaluated by the current shell, which means that changes in
environment variables, etc., will remain. If additional arguments are environment variables affect the current shell. If additional arguments are
specified after the file name, they will be inserted into the $argv specified after the file name, they will be inserted into the $argv
variable. variable.
If no file is specified, or if the file name '-' is used, stdin will If no file is specified, or if the file name '-' is used, stdin will
be read. be read.
The return status of . is the return status of the last job to The return status of \c . is the return status of the last job to
execute. If something goes wrong while opening or reading the file, execute. If something goes wrong while opening or reading the file,
. exits with a non-zero status. \c . exits with a non-zero status.
\subsection source-example Example \subsection source-example Example
<tt>. ~/.config/fish/config.fish</tt> <tt>. ~/.config/fish/config.fish</tt> causes fish to re-read its initialization file.
causes fish to reread its initialization file.

View file

@ -6,16 +6,16 @@
\subsection status-description Description \subsection status-description Description
With no arguments, <tt>status</tt> displays a summary of the current login and job control status of the shell. With no arguments, <tt>status</tt> displays a summary of the current login and job control status of the shell.
The following arguments are available: The following options are available:
- <tt>-c</tt> or <tt>--is-command-substitution</tt> returns 0 if fish is currently executing a command substitution - <tt>-c</tt> or <tt>--is-command-substitution</tt> returns 0 if fish is currently executing a command substitution.
- <tt>-b</tt> or <tt>--is-block</tt> returns 0 if fish is currently executing a block of code - <tt>-b</tt> or <tt>--is-block</tt> returns 0 if fish is currently executing a block of code.
- <tt>-i</tt> or <tt>--is-interactive</tt> returns 0 if fish is interactive, i.e.connected to a keyboard - <tt>-i</tt> or <tt>--is-interactive</tt> returns 0 if fish is interactive - that is, connected to a keyboard.
- <tt>-l</tt> or <tt>--is-login</tt> returns 0 if fish is a login shell, i.e. if fish should perform login tasks such as setting up the PATH. - <tt>-l</tt> or <tt>--is-login</tt> returns 0 if fish is a login shell - that is, if fish should perform login tasks such as setting up the PATH.
- <tt>--is-full-job-control</tt> returns 0 if full job control is enabled - <tt>--is-full-job-control</tt> returns 0 if full job control is enabled.
- <tt>--is-interactive-job-control</tt> returns 0 if interactive job control is enabled - <tt>--is-interactive-job-control</tt> returns 0 if interactive job control is enabled.
- <tt>--is-no-job-control</tt> returns 0 if no job control is enabled - <tt>--is-no-job-control</tt> returns 0 if no job control is enabled.
- <tt>-f</tt> or <tt>--current-filename</tt> prints the filename of the currently running script - <tt>-f</tt> or <tt>--current-filename</tt> prints the filename of the currently running script.
- <tt>-n</tt> or <tt>--current-line-number</tt> prints the line number of the currently running script - <tt>-n</tt> or <tt>--current-line-number</tt> prints the line number of the currently running script.
- <tt>-j CONTROLTYPE</tt> or <tt>--job-control=CONTROLTYPE</tt> set the job control type. Can be one of: none, full, interactive - <tt>-j CONTROLTYPE</tt> or <tt>--job-control=CONTROLTYPE</tt> sets the job control type, which can be <tt>none</tt>, <tt>full</tt>, or <tt>interactive</tt>.
- <tt>-t</tt> or <tt>--print-stack-trace</tt> prints a stack trace of all function calls on the call stack - <tt>-t</tt> or <tt>--print-stack-trace</tt> prints a stack trace of all function calls on the call stack.
- <tt>-h</tt> or <tt>--help</tt> display a help message and exit - <tt>-h</tt> or <tt>--help</tt> displays a help message and exit.

View file

@ -5,27 +5,24 @@
\subsection switch-description Description \subsection switch-description Description
The \c switch statement is used to perform one of several blocks of \c switch performs one of several blocks of commands, depending on whether
commands depending on whether a specified value equals one of several a specified value equals one of several wildcarded values. \c case is used
wildcarded values. The \c case statement is used together with the \c together with the \c switch statement in order to determine which block should
switch statement in order to determine which block should be be executed.
performed.
Each \c case command is given one or more parameter. The first \c case Each \c case command is given one or more parameters. The first \c case
command with a parameter that matches the string specified in the command with a parameter that matches the string specified in the
switch command will be evaluated. \c case parameters may contain switch command will be evaluated. \c case parameters may contain
wildcards. These need to be escaped or quoted in order to avoid wildcards. These need to be escaped or quoted in order to avoid
regular wildcard expansion using filenames. regular wildcard expansion using filenames.
Note that fish does not fall through on case statements. Though the Note that fish does not fall through on case statements. Only the
syntax may look a bit like C switch statements, it behaves more like first matching case is executed.
the case statements of traditional shells.
Also note that command substitutions in a case statement will be Note that command substitutions in a case statement will be
evaluated even if it's body is not taken. This may seem evaluated even if its body is not taken. All substitutions, including
counterintuitive at first, but it is unavoidable, since it would be command substitutions, must be performed before the value can be compared
impossible to know if a case command will evaluate to true before all against the parameter.
forms of parameter expansion have been performed for the case command.
\subsection switch-example Example \subsection switch-example Example

View file

@ -3,41 +3,40 @@
\subsection test-synopsis Synopsis \subsection test-synopsis Synopsis
<tt>test [EXPRESSION]</tt> <tt>test [EXPRESSION]</tt>
\subsection test-description Description \subsection test-description Description
Tests the expression given and returns true or false.
- \c -h, \c Display this help Tests the expression given and sets the exit status to 0 if true,
- \c -G, \c File owned by effective group ID and 1 if false.
- \c -L, \c File is symlink
- \c -O, \c File owned by effective user ID The following options are available:
- \c -S, \c File is socket - \c -h displays a help message and then exits.
- \c -a, \c Logical and - <tt>-L FILE</tt> returns true if \c FILE is a symbolic link.
- \c -b, \c File is block device - <tt>-S FILE</tt> returns true if \c FILE is a socket.
- \c -c, \c File is character device - <tt>COND1 -a COND2</tt> combines two conditions with a logical and.
- \c -d, \c File is a directory - <tt>-b FILE</tt> returns true if \c FILE is a block device.
- \c -e, \c File exists - <tt>-c FILE</tt> returns true if \c FILE is a character device.
- \c -f, \c File is regular - <tt>-d FILE</tt> returns true if \c FILE is a directory.
- \c -f, \c File is set-group-ID - <tt>-e FILE</tt> returns true if \c FILE exists.
- \c -k, \c File has sticky bit set - <tt>-f FILE</tt> returns true if \c FILE is a regular file.
- \c -n, \c String length is non-zero - <tt>-f FILE</tt> returns true if \c FILE has set-group-ID bit set.
- \c -o, \c Logical or - <tt>-n STRING</tt> returns true if the length of \c STRING is non-zero.
- \c -p, \c File is named pipe - <tt>COND1 -o COND2</tt> combines two conditions with a logical or.
- \c -r, \c File is readable - <tt>-p FILE</tt> returns true if \c FILE is a named pipe.
- \c -s, \c File size is non-zero - <tt>-r FILE</tt> returns true if \c FILE is readable.
- \c -t, \c FD is terminal - <tt>-s FILE</tt> returns true if the size of \c FILE is non-zero.
- \c -u, \c File set-user-ID bit is set - <tt>-t FD</tt> returns true if \c FD is a terminal (TTY).
- \c -w, \c File is writable - <tt>-u FILE</tt> returns true if \c FILE has set-user-ID bit set.
- \c -x, \c File is executable - <tt>-w FILE</tt> returns true if \c FILE is writable.
- \c -z, \c String length is zero - <tt>-x FILE</tt> returns true if \c FILE is executable.
- <tt>-z STRING</tt> returns true if \c STRING length is zero.
\subsection test-example Example \subsection test-example Example
<pre> <pre>
if test -d "/" if test -d "/"
echo "Fish is cool" echo "Fish is cool"
end end
</pre> </pre>
Because "/" is a directory the expression will evaluate Because "/" is a directory, the expression will evaluate to true, and
to true, and "Fish is cool" will be echoed "Fish is cool" will be output.

View file

@ -5,32 +5,39 @@
\subsection trap-description Description \subsection trap-description Description
Trap is a shellscript wrapper around the fish event delivery \c trap is a wrapper around the fish event delivery
framework. It exists for backwards compatibility with Posix framework. It exists for backwards compatibility with POSIX
shells. For other uses, it is recommended to define a <a shells. For other uses, it is recommended to define an <a
href='index.html#event'>event handler</a>. href='index.html#event'>event handler</a>.
- ARG is the command to be executed on signal delivery The following parameters are available:
- SIGSPEC is the name of the signal to trap
- \c -h or \c --help Display help and exit
- \c -l or \c --list-signals print a list of signal names
- \c -p or \c --print print all defined signal handlers
If ARG and SIGSPEC are both specified, ARG is the command to be - \c ARG is the command to be executed on signal delivery.
executed when the signal specified by SIGSPEC is delivered. - \c SIGSPEC is the name of the signal to trap.
- \c -h or \c --help displays help and exits.
- \c -l or \c --list-signals prints a list of signal names.
- \c -p or \c --print prints all defined signal handlers.
If ARG is absent (and there is a single SIGSPEC) or -, each specified If \c ARG and \c SIGSPEC are both specified, \c ARG is the command to be
executed when the signal specified by \c SIGSPEC is delivered.
If \c ARG is absent (and there is a single SIGSPEC) or -, each specified
signal is reset to its original disposition (the value it had upon signal is reset to its original disposition (the value it had upon
entrance to the shell). If ARG is the null string the signal entrance to the shell). If \c ARG is the null string the signal
specified by each SIGSPEC is ignored by the shell and by the commands specified by each \c SIGSPEC is ignored by the shell and by the commands
it invokes. it invokes.
If ARG is not present and -p has been supplied, then the trap commands If \c ARG is not present and \c -p has been supplied, then the trap commands
associated with each SIGSPEC are displayed. If no arguments are associated with each \c SIGSPEC are displayed. If no arguments are
supplied or if only -p is given, trap prints the list of commands supplied or if only \c -p is given, \c trap prints the list of commands
associated with each signal. associated with each signal.
Signal names are case insensitive and the SIG prefix is optional. Signal names are case insensitive and the \c SIG prefix is optional.
The return status is 1 if any SIGSPEC is invalid; otherwise trap The return status is 1 if any \c SIGSPEC is invalid; otherwise trap
returns 0. returns 0.
\subsection trap-example Example
<code>trap "status --print-stack-trace" SIGUSR1</code> prints a stack trace
each time the \c SIGUSR1 signal is sent to the shell.

View file

@ -1,21 +1,23 @@
\section type type - indicate how a name would be interpreted if used as a command name \section type type - indicate how a command would be interpreted
\subsection type-synopsis Synopsis \subsection type-synopsis Synopsis
<tt>type [OPTIONS] name [name ...]</tt> <tt>type [OPTIONS] NAME [NAME ...]</tt>
\subsection type-description Description \subsection type-description Description
With no options, indicate how each name would be interpreted if used as a command name. With no options, \c type indicates how each \c NAME would be interpreted if used as a command name.
- \c -h or \c --help print this message The following options are available:
- \c -a or \c --all print all of possible definitions of the specified names
- \c -f or \c --no-functions suppresses function and builtin lookup
- \c -t or \c --type print a string which is one of keyword, function, builtin, or file if name is a shell reserved word, function, builtin, or disk file, respectively
- \c -p or \c --path either return the name of the disk file that would be executed if name were specified as a command name, or nothing if 'type -t name' would not return 'file'
- \c -P or \c --force-path either return the name of the disk file that would be executed if name were specified as a command name, or nothing no file with the specified name could be found in the PATH
\c type returns a zero exit status if the specified command was found, - \c -h or \c --help prints help and then exits.
otherwise the exit status is one. - \c -a or \c --all prints all of possible definitions of the specified names.
- \c -f or \c --no-functions suppresses function and builtin lookup.
- \c -t or \c --type prints <tt>keyword</tt>, <tt>function</tt>, <tt>builtin</tt>, or <tt>file</tt> if \c NAME is a shell reserved word, function, builtin, or disk file, respectively.
- \c -p or \c --path returns the name of the disk file that would be executed, or nothing if 'type -t name' would not return 'file'.
- \c -P or \c --force-path returns the name of the disk file that would be executed, or nothing no file with the specified name could be found in the <tt>$PATH</tt>.
\c type sets the exit status to 0 if the specified command was found,
and 1 if it could not be found.
\subsection type-example Example \subsection type-example Example

View file

@ -1,67 +1,66 @@
\section ulimit ulimit - set or get the shells resource usage limits \section ulimit ulimit - set or get resource usage limits
\subsection ulimit-synopsis Synopsis \subsection ulimit-synopsis Synopsis
<tt>ulimit [OPTIONS] [LIMIT]</tt> <tt>ulimit [OPTIONS] [LIMIT]</tt>
\subsection ulimit-description Description \subsection ulimit-description Description
The ulimit builtin is used to set the resource usage limits of the \c ulimit builtin sets or outputs the resource usage limits of the
shell and any processes spawned by it. If a new limit value is shell and any processes spawned by it. If a new limit value is
omitted, the current value of the limit of the resource is printed. omitted, the current value of the limit of the resource is printed; otherwise,
the specified limit is set to the new value.
Use one of the following switches to specify which resource limit to set or report: Use one of the following switches to specify which resource limit to set or report:
- <code>-c</code> or <code>--core-size</code> The maximum size of core files created. By setting this limit to zero, core dumps can be disabled. - <code>-c</code> or <code>--core-size</code>: the maximum size of core files created. By setting this limit to zero, core dumps can be disabled.
- <code>-d</code> or <code>--data-size</code> The maximum size of a process's data segment - <code>-d</code> or <code>--data-size</code>: the maximum size of a process' data segment.
- <code>-f</code> or <code>--file-size</code> The maximum size of files created by the shell - <code>-f</code> or <code>--file-size</code>: the maximum size of files created by the shell.
- <code>-l</code> or <code>--lock-size</code> The maximum size that may be locked into memory - <code>-l</code> or <code>--lock-size</code>: the maximum size that may be locked into memory.
- <code>-m</code> or <code>--resident-set-size</code> The maximum resident set size - <code>-m</code> or <code>--resident-set-size</code>: the maximum resident set size.
- <code>-n</code> or <code>--file-descriptor-count</code> The maximum number of open file descriptors (most systems do not allow this value to be set) - <code>-n</code> or <code>--file-descriptor-count</code>: the maximum number of open file descriptors (most systems do not allow this value to be set).
- <code>-s</code> or <code>--stack-size</code> The maximum stack size - <code>-s</code> or <code>--stack-size</code>: the maximum stack size.
- <code>-t</code> or <code>--cpu-time</code> The maximum amount of cpu time in seconds - <code>-t</code> or <code>--cpu-time</code>: the maximum amount of CPU time in seconds.
- <code>-u</code> or <code>--process-count</code> The maximum number of processes available to a single user - <code>-u</code> or <code>--process-count</code>: the maximum number of processes available to a single user.
- <code>-v</code> or <code>--virtual-memory-size</code> The maximum amount of virtual memory available to the shell. If supported by OS. - <code>-v</code> or <code>--virtual-memory-size</code> The maximum amount of virtual memory available to the shell.
Note that not all these limits are available in all operating systems. Note that not all these limits are available in all operating systems.
The value of limit can be a number in the unit specified for The value of limit can be a number in the unit specified for
the resource or one of the special values hard, soft, or unlimited, the resource or one of the special values <tt>hard</tt>, <tt>soft</tt>, or <tt>unlimited</tt>,
which stand for the current hard limit, the current soft limit, and no which stand for the current hard limit, the current soft limit, and no
limit, respectively. limit, respectively.
If limit is given, it is the new value of the specified resource. If If limit is given, it is the new value of the specified resource. If
no option is given, then -f is assumed. Values are in kilobytes, no option is given, then \c -f is assumed. Values are in kilobytes,
except for -t, which is in seconds and -n and -u, which are unscaled except for \c -t, which is in seconds and \c -n and \c -u, which are unscaled
values. The return status is 0 unless an invalid option or argument is values. The return status is 0 unless an invalid option or argument is
supplied, or an error occurs while setting a new limit. supplied, or an error occurs while setting a new limit.
ulimit also accepts the following switches that determine what type of \c ulimit also accepts the following switches that determine what type of
limit to set: limit to set:
- <code>-H</code> or <code>--hard</code> Set hard resource limit - <code>-H</code> or <code>--hard</code> sets hard resource limit
- <code>-S</code> or <code>--soft</code> Set soft resource limit - <code>-S</code> or <code>--soft</code> sets soft resource limit
A hard limit can only be decreased, once it is set it can not be A hard limit can only be decreased. Once it is set it cannot be
increased; a soft limit may be increased up to the value of the hard increased; a soft limit may be increased up to the value of the hard
limit. If neither -H nor -S is specified, both the soft and hard limit. If neither -H nor -S is specified, both the soft and hard
limits are updated when assigning a new limit value, and the soft limits are updated when assigning a new limit value, and the soft
limit is used when reporting the current value. limit is used when reporting the current value.
The following additional options are also understood by ulimit: The following additional options are also understood by <tt>ulimit</tt>:
- <code>-a</code> or <code>--all</code> Print all current limits - <code>-a</code> or <code>--all</code> prints all current limits
- <code>-h</code> or <code>--help</code> Display help and exit - <code>-h</code> or <code>--help</code> displays help and exits.
The fish implementation of ulimit should behave identically to the The \c fish implementation of \c ulimit should behave identically to the
implementation in bash, except for these differences: implementation in bash, except for these differences:
- Fish ulimit supports GNU-style long options for all switches - Fish \c ulimit supports GNU-style long options for all switches
- Fish ulimit does not support the -p option for getting the pipe size. The bash implementation consists of a compile-time check that empirically guesses this number by writing to a pipe and waiting for SIGPIPE. Fish does not do this because it this method of determining pipe size is unreliable. Depending on bash version, there may also be further additional limits to set in bash that do not exist in fish. - Fish \c ulimit does not support the \c -p option for getting the pipe size. The bash implementation consists of a compile-time check that empirically guesses this number by writing to a pipe and waiting for SIGPIPE. Fish does not do this because it this method of determining pipe size is unreliable. Depending on bash version, there may also be further additional limits to set in bash that do not exist in fish.
- Fish ulimit does not support getting or setting multiple limits in one command, except reporting all values using the -a switch - Fish \c ulimit does not support getting or setting multiple limits in one command, except reporting all values using the -a switch
\subsection ulimit-example Example \subsection ulimit-example Example
<tt>ulimit -Hs 64</tt> <tt>ulimit -Hs 64</tt> sets the hard stack size limit to 64 kB.
would set the hard stack size limit to 64 kB:

View file

@ -1,17 +1,31 @@
\section umask umask - set or get the file-creation mask \section umask umask - set or get the file creation mode mask
\subsection umask-synopsis Synopsis \subsection umask-synopsis Synopsis
<code>umask [OPTIONS] [MASK]</code> <code>umask [OPTIONS] [MASK]</code>
\subsection umask-description Description \subsection umask-description Description
With no argument, the current file-creation mask is printed, if an \c umask displays and manipulates the "umask", or file creation mode mask,
argument is specified, it is the new file creation mask. The mask may which is used to restrict the default access to files.
be specified as an octal number, in which case it is interpreted as
the rights that should be masked away, i.e. it is the inverse of the
file permissions any new files will have.
If a symbolic mask is specified, the actual file permission bits, and The umask may be expressed either as an octal number, which represents
the rights that will be removed by default, or symbolically, which represents
the only rights that will be granted by default.
Access rights are explained in the manual page for the \c chmod(1) program.
With no parameters, the current file creation mode mask is printed as
an octal number.
- <code>-h</code> or <code>--help</code> prints this message.
- <code>-S</code> or <code>--symbolic</code> prints the umask in symbolic form instead of octal form.
- <code>-p</code> or <code>--as-command</code> outputs the umask in a form that may be reused as input
If a numeric mask is specified as a parameter, the current shell's umask
will be set to that value, and the rights specified by that mask will be
removed from new files and directories by default.
If a symbolic mask is specified, the desired permission bits, and
not the inverse, should be specified. A symbolic mask is a comma not the inverse, should be specified. A symbolic mask is a comma
separated list of rights. Each right consists of three parts: separated list of rights. Each right consists of three parts:
@ -34,12 +48,7 @@ and \c =, respectively. As an example, <code>r,u+w</code> means all
users should have read access and the file owner should also have users should have read access and the file owner should also have
write access. write access.
- <code>-h</code> or <code>--help</code> print this message Note that symbolic masks currently do not work as intended.
- <code>-S</code> or <code>--symbolic</code> prints the file-creation mask in symbolic form instead of octal form. Use <code>man chmod</code> for more information.
- <code>-p</code> or <code>--as-command</code> prints any output in a form that may be reused as input
The umask implementation in fish should behave identically to the one
in bash.
\subsection umask-example Example \subsection umask-example Example

View file

@ -5,8 +5,8 @@
\subsection vared-description Description \subsection vared-description Description
vared is used to interactively edit the value of an environment \c vared is used to interactively edit the value of an environment
variable. Array variables as a whole can not be edited using vared, variable. Array variables as a whole can not be edited using \c vared,
but individual array elements can. but individual array elements can.
\subsection vared-example Example \subsection vared-example Example

View file

@ -4,16 +4,18 @@
<tt>while CONDITION; COMMANDS...; end</tt> <tt>while CONDITION; COMMANDS...; end</tt>
\subsection while-description Description \subsection while-description Description
The <tt>while</tt> builtin causes fish to continually execute CONDITION and <tt>while</tt> repeatedly executes <tt>CONDITION</tt>, and if the exit status
execute COMMANDS as long as CONDITION returned with status 0. If CONDITION is is 0, then executes <tt>COMMANDS</tt>.
false on the first time, COMMANDS will not be executed at all. Hints: use
<a href="#begin"><tt>begin; ...; end</tt></a> for complex conditions; more If the exit status of \c CONDITION is non-zero on the first iteration,
\c COMMANDS will not be executed at all.
Use <a href="#begin"><tt>begin; ...; end</tt></a> for complex conditions; more
complex control can be achieved with <tt>while true</tt> containing a complex control can be achieved with <tt>while true</tt> containing a
<a href="#break">break</a>. <a href="#break">break</a>.
\subsection while-example Example \subsection while-example Example
<tt>while test -f foo.txt; echo file exists; sleep 10; end</tt> <tt>while test -f foo.txt; echo file exists; sleep 10; end</tt>
outputs 'file exists' at 10 second intervals as long as
causes fish to print the line 'file exists' at 10 second intervals as long as
the file foo.txt exists. the file foo.txt exists.