Linux - Linking Commands
Under bash you can create a sequence of one or more commands separated by one of the following operators:
Operator | Syntax | Description | Example |
---|---|---|---|
; | command1; command2 | Separates commands that are executed in sequence. | In this example, pwd is executed only after date command completes.date ; pwd |
& | command arg & | The shell executes the command in the background in a subshell. The shell does not wait for the command to finish, and the return status is 0. The & operator runs the command in background while freeing up your terminal for other work. | In this example, find command is executed in background while freeing up your shell prompt.find / -iname "*.pdf" >/tmp/output.txt & |
&& | command1 && command2 | command2 is executed if, and only if, command1 returns an exit status of zero i.e. command2 only runs if first command1 run successfully. | [ ! -d /backup ] && mkdir -p /backup See Logical AND section for examples. |
|| | command1 || command2 | command2 is executed if and only if command1 returns a non-zero exit status i.e. command2 only runs if first command fails. | tar cvf /dev/st0 /home || mail -s 'Backup failed' [email protected] </dev/null See Logical OR section for examples. |
| | command1 | command2 | Linux shell pipes join the standard output of command1 to the standard input of command2. | In this example, output of the ps command is provided as the standard input to the grep commandps aux | grep httpd |