Command Forms

Syntax

Effect

cmd &

Execute cmd in background.

cmd1 ; cmd2

Command sequence; execute multiple cmds on the same line.

{ cmd1 ; cmd2 ; }

Execute commands as a group in the current shell.

( cmd1 ; cmd2)

Execute commands as a group in a subshell.

cmd1 | cmd2

Pipe; use output from cmd1 as input to cmd2.

cmd1 ' cmd2'

Command substitution; use cmd2 output as arguments to cmd1.

cmd1 $( cmd2)

POSIX shell command substitution; nesting is allowed.

cmd $(( expression))

POSIX shell arithmetic substitution. Use the result of expression as argument to cmd.

cmd1 && cmd2

AND; execute cmd1 and then (if cmd1 succeeds) cmd2. This is a “short-circuit” operation; cmd2 is never executed if cmd1 fails.

cmd1 || cmd2

OR; execute either cmd1 or (if cmd1 fails) cmd2. This is a “short-circuit” operation; cmd2 is never executed if cmd1 succeeds.

! cmd

NOT; execute cmd, and produce a zero exit status if cmd exits with a nonzero status. Otherwise, produce a nonzero status when cmd exits with a zero status.

Examples

$ nroff file > file.txt &                          Format in the background
$ cd; ls                          Execute sequentially
$ (date; who; pwd) > logfile                          All output is redirected
$ sort file | pr −3 | lp
                          Sort file, page output, then print
$ vi `grep -l ifdef *.c`                          Edit files found by grep
$ egrep '(yes|no)' `cat list`
                          Specify a list of files to search
$ egrep '(yes|no)' $(cat list)                          POSIX version of previous
$ egrep '(yes|no)' $(< list)                          Faster, not in POSIX
$ grep XX file && lp file
                          Print file if it contains the pattern;
$ grep XX file || echo "XX not ...

Get Linux in a Nutshell, 6th Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.