0% found this document useful (0 votes)
227 views

Fish Shell Cheatsheet

This document provides a cheatsheet for the Fish shell, including shortcuts, sample programs, comments, printing text, reading input, loops, variables, numbers, strings, conditionals, comparisons, process communication, functions, events, abbreviations, and completions. It describes the keys, commands, operators, and built-in functions available in Fish.

Uploaded by

Giova Rossi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
227 views

Fish Shell Cheatsheet

This document provides a cheatsheet for the Fish shell, including shortcuts, sample programs, comments, printing text, reading input, loops, variables, numbers, strings, conditionals, comparisons, process communication, functions, events, abbreviations, and completions. It describes the keys, commands, operators, and built-in functions available in Fish.

Uploaded by

Giova Rossi
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Fish shell cheatsheet

Keys

Shortcut Description

^A ←/^E → Move to the line beginning/end

Alt ←/Alt → Jump to the previous/next word

↑/↓ Switch to the previous/next command

Alt ↑/Alt ↓ Switch to the previous/next arguments

^U Delete to the beginning

^C Cancel the line

Alt H Show the command man page description

Alt W Show the short command description

Alt . Repeat last argument

Sample program

#!/usr/bin/env fish

echo 'Hello from Fish!'

Comments

1/7
# my comment

Printing text

echo 'Hello from Fish!'


# or
printf '%s\n' 'Hello from Fish!'

Print the string with a trailing \n.

Reading from stdin

read my_variable

Reads the string to a variable my_variable.

Loops

for i in (seq 1 10)


...
end

Variables

Defining and erasing

# Declare the global/local variable:


set my_variable 'Hello from Fish!'

i# Remove the variable:


set --erase my_variable

Slicing

echo $my_variable[1..10]
echo $my_variable[2..]
echo $my_variable[..-2]

Numbers

Incrementing and decrementing

set my_variable (math $my_variable + 1)


set my_variable (math $my_variable - 1)

Arithmetic

echo (math 1 + 2)

2/7
Operator Performs

+ Addition

- Subtraction

* Multiplication

/ Division

% Modulo

^ Exponentiation

Strings

Matching

Match the string against a regular expresion:

string match --regex --entire 'Fish' 'Hello from Fish!'

Pattern Matches
x? Zero or one x chars

x* Any count x chars

x+ One or more x chars

x{n} n times x chars

x{n,m} n to m times x chars

x{n,} n or more times x chars

[xy] x or y char

[^xy] not x or y char

\w Word character

\d Digit character

\W Not word character

\D Not digit character

Perl compatible regular expressions are described here.

Replacing

3/7
# Replaces the first match
string replace --regex 'Fish' 'fish' 'Hello from Fish!'

# Replaces all matches


string replace --regex --all 'Fish' 'fish' 'Hello from Fish!'

Conditionals

If/else

if test $my_variable -lt $another_variable


···
else if test $my_variable -eq $another_variable
···
else
···
end

Comparisons

Numbers

Number operator Meaning


-lt [L]ess [t]han

-eq [Eq]ual

-gt [G]reater [t]han

-le [L]ess than or [e]qual to

-ge [G]reater than or [e]qual to

-ne [N]ot [E]qual

Strings

String operator Meaning


== [Eq]ual

!= [N]ot [E]qual

Files

File operator Meaning


-f [F]ile exists

-d [D]irectory exists

4/7
File operator Meaning

-r File or directory exists and [r]eadable

-w File or directory exists and [w]ritable

-x File or directory exists and e[x]ecutable

Process communication

Writing to files

# Overwrite file
echo 'Hello from Fish!' > my_file

# Append to file
echo 'Hello from Fish!' >> my_file

Piping

my_command | another_command

Passes the first command stdout output as an input to a second command.

Command substitution

echo (math $my_variable + 1)

The (...) expression is substituted with the output of the command inside it.

Process substitution

echo (math $my_variable + 1 | psub)

The (... | psub) expression is substituted with a temporary file with the command’s
output.

Functions

Defining and erasing

# Declare the function


function my_function --description 'My description'
···
end

# Remove the function


functions --erase my_function

5/7
Events

Emitting

emit my_event

Emits an event that can be picked up by other functions.

Event handling

function my_hook --on-event my_event


···
end

Reacts to the my_event event.

Abbreviations

Defining and erasing

# Declare the abbreviation


abbr --add grh "git reset --hard HEAD"

# Remove the abbreviation


abbr --erase grh

Completions

Defining completions

complete --command mycommand --arguments 'install uninstall'


complete --command mycommand --short-option 'h' --long-option 'help' --description
'Display help'

Option Description

--arguments Arguments to the command itself or option

--short-option Short option

--long-option Long option

--no-files Don’t suggest files

--force-files Suggest files

--condition Display the hint only when a given condition is true

--description Description

6/7
Declares the completion for a command.

Removing completions

complete --command mycommand --erase

Useful built-in functions

Function Description
__fish_seen_argument Check whether the specified argument is used

__fish_seen_subcommand_from Check whether the specified subcommand is used

__fish_use_subcommand Check whether any subcommand is used

__fish_complete_directories Complete directories with the specified letters in their


name

__fish_complete_suffix Complete files with the specified suffix

__fish_complete_users List all users

__fish_complete_groups List all user groups

__fish_print_hostnames List all host names

__fish_complete_pids List all PIDs

__fish_print_filesystems List all known filesystems

__fish_print_interfaces List all network interfaces

7/7

You might also like