Linking Commands

From Linux Shell Scripting Tutorial - A Beginner's handbook
Jump to: navigation, search
← Chapter 7: Pipes and FiltersHomeMultiple 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' you@example.com </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 command
ps aux | grep httpd
 
← Chapter 7: Pipes and FiltersHomeMultiple commands →