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 |
Sample program
#!/usr/bin/env fish
echo 'Hello from Fish!'
Comments
# 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)
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
# 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 |
-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
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 |
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 |
0 Comments for this cheatsheet. Write yours!