# Commands

This is a list of all the commands fish ships with.

Broadly speaking, these fall into a few categories:

## Keywords

Core language keywords that make up the syntax, like

- if for conditions.

- for and while for loops.

- break and continue to control loops.

- function to define functions.

- return to return a status from a function.

- begin to begin a block and end to end any block (including ifs and loops).

- and, or and not to combine commands logically.

- switch and case to make multiple blocks depending on the value of a variable.

## Decorations

Command decorations are keywords like command or builtin to tell fish what sort of thing to execute, and time to time its execution. exec tells fish to replace itself with the command.

## Tools to do a task

Builtins to do a task, like

- cd to change the current directory.

- echo or printf to produce output.

- set to set, query or erase variables.

- read to read input.

- string for string manipulation.

- math does arithmetic.

- argparse to make arguments easier to handle.

- count to count arguments.

- type to find out what sort of thing (command, builtin or function) fish would call, or if it exists at all.

- test checks conditions like if a file exists or a string is empty.

- contains to see if a list contains an entry.

- abbr manages Abbreviations.

- eval and source to run fish code from a string or file.

- set_color to colorize your output.

- status to get shell information, like whether it’s interactive or a login shell, or which file it is currently running.

- bind to change bindings.

- commandline to get or change the commandline contents.

- fish_config to easily change fish’s configuration, like the prompt or colorscheme.

- random to generate random numbers or pick from a list.

## Known functions

Known functions are a customization point. You can change them to change how your fish behaves. This includes:

- fish_prompt and fish_right_prompt and fish_mode_prompt to print your prompt.

- fish_command_not_found to tell fish what to do when a command is not found.

- fish_title to change the terminal’s title.

- fish_greeting to show a greeting when fish starts.

## Helper functions

Some helper functions, often to give you information for use in your prompt:

- fish_git_prompt and fish_hg_prompt to print information about the current git or mercurial repository.

- fish_vcs_prompt to print information for either.

- fish_svn_prompt to print information about the current svn repository.

- fish_status_to_signal to give a signal name from a return status.

- prompt_pwd to give the current directory in a nicely formatted and shortened way.

- prompt_login to describe the current login, with user and hostname, and to explain if you are in a chroot or connected via ssh.

- prompt_hostname to give the hostname, shortened for use in the prompt.

- fish_is_root_user to check if the current user is an administrator user like root.

- fish_add_path to easily add a path to $PATH.

- alias to quickly define wrapper functions (“aliases”).

## Helper commands

fish also ships some things as external commands so they can be easily called from elsewhere.

This includes fish_indent to format fish code and fish_key_reader to show you what escape sequence a keypress produces.

## The full list

And here is the full list:

- _ - call fish’s translations
- abbr - manage fish abbreviations
- alias - create a function
- and - conditionally execute a command
- argparse - parse options passed to a fish script or function
- begin - start a new block of code
- bg - send jobs to background
- bind - handle fish key bindings
- block - temporarily block delivery of events
- break - stop the current inner loop
- breakpoint - launch debug mode
- builtin - run a builtin command
- case - conditionally execute a block of commands
- cd - change directory
- cdh - change to a recently visited directory
- command - run a program
- commandline - set or get the current command line buffer
- complete - edit command specific tab-completions
- contains - test if a word is present in a list
- continue - skip the remainder of the current iteration of the current inner loop
- count - count the number of elements of a list
- dirh - print directory history
- dirs - print directory stack
- disown - remove a process from the list of jobs
- echo - display a line of text
- else - execute command if a condition is not met
- emit - emit a generic event
- end - end a block of commands
- eval - evaluate the specified commands
- exec - execute command in current process
- exit - exit the shell
- false - return an unsuccessful result
- fg - bring job to foreground
- fish - the friendly interactive shell
- fish_add_path - add to the path
- fish_breakpoint_prompt - define the prompt when stopped at a breakpoint
- fish_command_not_found - what to do when a command wasn’t found
- fish_config - start the web-based configuration interface
- fish_git_prompt - output git information for use in a prompt
- fish_greeting - display a welcome message in interactive shells
- fish_hg_prompt - output Mercurial information for use in a prompt
- fish_indent - indenter and prettifier
- fish_is_root_user - check if the current user is root
- fish_key_reader - explore what characters keyboard keys send
- fish_mode_prompt - define the appearance of the mode indicator
- fish_opt - create an option specification for the argparse command
- fish_prompt - define the appearance of the command line prompt
- fish_right_prompt - define the appearance of the right-side command line prompt
- fish_status_to_signal - convert exit codes to human-friendly signals
- fish_svn_prompt - output Subversion information for use in a prompt
- fish_title - define the terminal’s title
- fish_update_completions - update completions using manual pages
- fish_vcs_prompt - output version control system information for use in a prompt
- for - perform a set of commands multiple times
- funced - edit a function interactively
- funcsave - save the definition of a function to the user’s autoload directory
- function - create a function
- functions - print or erase functions
- help - display fish documentation
- history - show and manipulate command history
- if - conditionally execute a command
- isatty - test if a file descriptor is a terminal
- jobs - print currently running jobs
- math - perform mathematics calculations
- nextd - move forward through directory history
- not - negate the exit status of a job
- open - open file in its default application
- or - conditionally execute a command
- path - manipulate and check paths
- popd - move through directory stack
- prevd - move backward through directory history
- printf - display text according to a format string
- prompt_hostname - print the hostname, shortened for use in the prompt
- prompt_login - describe the login suitable for prompt
- prompt_pwd - print pwd suitable for prompt
- psub - perform process substitution
- pushd - push directory to directory stack
- pwd - output the current working directory
- random - generate random number
- read - read line of input into variables
- realpath - convert a path to an absolute path without symlinks
- return - stop the current inner function
- set - display and change shell variables
- set_color - set the terminal color
- source - evaluate contents of file
- status - query fish runtime information
- string - manipulate strings
- string-collect - join strings into one
- string-escape - escape special characters
- string-join - join strings with delimiter
- string-join0 - join strings with zero bytes
- string-length - print string lengths
- string-lower - convert strings to lowercase
- string-match - match substrings
- string-pad - pad strings to a fixed width
- string-repeat - multiply a string
- string-replace - replace substrings
- string-split - split strings by delimiter
- string-split0 - split on zero bytes
- string-sub - extract substrings
- string-trim - remove trailing whitespace
- string-unescape - expand escape sequences
- string-upper - convert strings to uppercase
- suspend - suspend the current shell
- switch - conditionally execute a block of commands
- test - perform tests on files and text
- time - measure how long a command or block takes
- trap - perform an action when the shell receives a signal
- true - return a successful result
- type - locate a command and describe its type
- ulimit - set or get resource usage limits
- umask - set or get the file creation mode mask
- vared - interactively edit the value of an environment variable
- wait - wait for jobs to complete
- while - perform a set of commands multiple times