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 and else 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.
  • command or builtin to tell fish what sort of thing to execute
  • time to time execution
  • exec tells fish to replace itself with a command.
  • end to end a block

Tools

Builtins to do a task, like

  • cd to change the current directory.
  • echo or printf to produce output.
  • set_color to colorize output.
  • set to set, query or erase variables.
  • read to read input.
  • string for string manipulation.
  • path for filtering paths and handling their components.
  • 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.
  • eval and source to run fish code from a string or file.
  • status to get shell information, like whether it’s interactive or a login shell, or which file it is currently running.
  • abbr manages Abbreviations.
  • bind to change bindings.
  • complete manages completions.
  • 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:

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”).
  • fish_delta to show what you have changed from the default configuration.
  • export as a compatibility function for other shells.

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:

© 2005-2009 Axel Liljencrantz, 2009-2025 fish-shell contributors
Licensed under the GNU General Public License, version 2.
https://fishshell.com/docs/4.0/commands.html