Перенаправления и подстановки командного интерпретатора позволяют производить различные вычисления, но не разрешают управлять ходом вычислений — выполнять различные действия в зависимости от результата вычислений или циклически повторять вычисления.
Для управления ходом выполнения сценариев на языке командного интерпретатора служат списки команд.
Простейшие списки формирует пользователь при интерактивной работе с командным интерпретатором, последовательно запуская команды при помощи управляющего символа перевода строки ↵ или параллельно запуская задания (см. сеансы и группы процессов) посредством метасимвола & запуска задач в «фоновом» режиме.
В пакетном режиме работы такие списки называются простыми и формируются конструкциями command1 ; command2 ; … и command1 & command2 & …, называемыми простым синхронным и простым асинхронным списками соответственно.
Простой последовательный (синхронный) список команд
bender@ubuntu:~$ dd if=/dev/dvd of=dvd.iso ↵
586896+0 записей получено
586896+0 записей отправлено
скопировано 300490752 байта (300 МВ), 5,10918 с, 58,8 МВ/с
bender@ubuntu:~$ ® ls -lh dvd.iso
-rw-r—r— 1 fltz fitz 287M дек. 3 13:42 dvd.iso
bender@ubuntu:~$ bzip2 -v dvd.iso ; ls -lh dvd.iso.bz2
dvd.iso: 3.251:1, 2.461 bits/byte, 69.24% saved, 300490752 in, 92444196 out.
-rw-r—r— 1 fitz fitz 89M дек. 3 13:42 dvd.iso.bz2
Интерактивный режим взаимодействия bzip2 ls с командным интерпретатором заставляет пользователя дожидаться завершения текущей выполняющейся программы и появления приглашения командного интерпретатора для того, чтобы запустить последующую команду.
Последовательный список позволяет организовать подобное последовательное выполнение посредством командного интерпретатора.
Простой параллельный (асинхронный) список команд
bender@ubuntu:~$ time xz —best -k plans.iso -S .b.xz & time xz —fast -k plane.iso -S .f.xz ft ps f
[1] 11978
[2] 11979
PID TTY STAT TIME COMMAND
11716 pts/0 S 0:00 -bash
11978 pts/0 S 0:00 \_ -bash
11981 pts/0 R 0:00 | \_ xz —best -k plan9.tso, -S .b.xz
11979 pts/0 S 0:00 \_ -bash
11982 pts/0 R 0:00 | \_ xz —fast -k plan9.iso -S .f.xz
11980 pts/0 R+ 0:00 \_ ps f
bender@ubuntu:~$ wait ; ls -Ih plan9.*
real 0m37.791s
user 0m37.476s
sys 0m0.264s
real 3m7.409s
user 3m6.656s
sys 0n0.472s
[1] — Готово time xz —best -k plan9.iso -S b.xz
[2] + Готово time xz —fast -k plan9.iso -S f.xz
-rw-r—r— 1 bender bender 287M нояб. 28 15:47 plan9.iso
—
rw-r—r— 1 bender bender 61M нояб. 28 15:47 plan9.iso.b.xz
rw-r—r— 1 bender bender 89M нояб. 28 15:47 plan9.iso.f.xz
При помощи асинхронного списка (см. листинг выше), наоборот, организуется запуск сразу нескольких процессов в «фоновом» режиме-, дождаться завершения которых позволяет встроенная команда интерпретатора wait.