chain Fish commands via `&&` or `||`

In Bash/ZSH and other shells, I am used to using && and ||.

Is there any equivalent in Fish?


Solution 1:

The logical operators you're used to, are supported since fish 3.0.0, released on 2018-12-28.

From the v3 release notes:

  • fish now supports && (like and), || (like or), and ! (like not), for better migration from POSIX-compliant shells (#4620).

Solution 2:

Fish doesn't have a special syntax for a logical AND (&&) or a logical OR (||).

Instead, you can use the commands and and or, which verify the previous command's exit status and act accordingly:

command1
and command2
command1
or command2

Furthermore – just like in bash – you can use a semicolon ; to execute two commands one after the other:

command1 ; command2

This allows using a more familiar syntax:

command1 ;and command2
command1 ;or command2

See http://fishshell.com/docs/current/tutorial.html#tut_combiners