.. _sequence: Sequences of Commands ====================== .. index:: sequence, ; , () Normally, we put one command on each line of input to the shell. If we want to run several commands right after another, use ``;`` to separate them. Using a pair of parentheses, the output from several commands can also be grouped together to be redirected as one set of output. Effectively the same result could be accomplished by putting the commands in a shell script file. .. seealso:: Section 5.9 and 5.10 in the book have some nice examples of this. Execute three commands in sequence:: $ date; pwd; ls Group the commands to one one output stream:: $ (date; pwd; ls) > out.txt Conditional Execution ---------------------- The following two examples use the :ref:`exit` of the first command to conditionally execute the second command. A logical **AND** operator, `&&`, executes the second command only if the first command completed successfully. :: $ gcc myprog.c && a.out A logical **OR** operator, `||`, executes the second command only if the first command failed. :: $ gcc myprog.c || echo compilation failed