
Командная строка Linux, контроль выполнения команд: операторы «&&», «||», «;» и «&»
Обновлено 11.11.2024
Приветствую!
Сегодня разбираем такие мощные инструменты командной строки Linux, как операторы контроля выполнения команд
Предыдущие посты цикла
Если вы только начинаете изучать Linux, то настоятельно рекомендую ознакомиться с предыдущими материалами:
- Командная строка Linux, введение: типы команд, plain text, файловая система, shell prompt
- Командная строка Linux, навигация в системе и просмотр директорий: команды pwd, ls, cd
- Командная строка Linux, вывод и чтение содержимого: команды echo, cat, less
- Командная строка Linux, работа с файлами: команды touch, mkdir, cp, mv, rm
- Командная строка Linux, ссылки на файлы (links): команда ln
- Командная строка Linux, перенаправление ввода и вывода: операторы “>”, “<«, «|»
Присоединяйтесь к нашему каналу: t.me/r4ven_me и чату: t.me/r4ven_me_chat в Telegram .
Введение
Операторы командной строки в Linux предоставляют возможность управлять выполнением команд и программ. Операторы &&
, ||
, ;
и &
позволяют контролировать порядок выполнения команд и выполнять их последовательно или параллельно.
- Оператор
&&
(логическое И) выполняет следующую команду только в случае успешного завершения предыдущей команды. - Оператор
||
(логическое ИЛИ) выполняет следующую команду только в случае неуспешного завершения предыдущей команды. - Оператор
;
(точка с запятой) позволяет выполнить следующую команду независимо от результата предыдущей команды. - Оператор
&
(амперсанд) запускает команду в фоновом режиме, позволяя продолжить работу в командной строке без ожидания завершения команды.
Примеры использования
Оператор &&
(логическое И)
Пример 1:
mkdir mydir && touch mydir/myfile.txt && ls mydir
В этом примере с помощью оператора && создается каталог «mydir», затем с помощью команды touch
создается пустой файл «myfile.txt» внутри каталога «mydir». Затем с помощью команды ls
выводится содержимое каталога «mydir».
Пример 2:
ls mydir/
cd mydir/ && touch file1.txt && cp file1.txt file2.txt && rm file1.txt
В данном примере с помощью оператора &&
мы выполняем переход в созданную ранее директорию «mydir», затем файл «file1.txt» копируется в файл «file2.txt». Если операция копирования успешна, то с помощью команды rm
удаляется файл «file1.txt».
Оператор ||
(логическое ИЛИ):
Пример 1:
cat file.txt || echo "Файл не найден"
touch file.txt && echo "Hello R4ven" > file.txt
cat file.txt || echo "Файл не найден"
В этом примере команда cat
пытается вывести содержимое файла «file.txt». Если файл не существует, то с помощью оператора ||
выводится сообщение «Файл не найден». После создаётся файл «file.txt» с содержимым «Hello R4ven» и вновь выполняется предыдущая команда — результат выполнения изменился, блок после ||
не выполнился.
Пример 2:
ls images/ || mkdir images
В данном примере с помощью оператора ||
проверяется наличие каталога «images». Если каталог не существует, то с помощью команды mkdir
создается каталог «images».
Оператор ;
(точка с запятой):
Пример:
touch file1.txt ; cp -v file1.txt directory/ ; rm -v file1.txt
*Ключ -v
(verbose) у команд cp
и rm
выводит в стандартный вывод информацию о выполняемых действиях.
В этом примере с помощью оператора ;
последовательно выполняются три команды. Сначала с помощью команды touch
создается пустой файл «file1.txt». Затем с помощью команды cp
файл «file1.txt» копируется в каталог «directory», которого не существует, в следствии чего получаем ошибку. Но не смотря на это последняя команда всё равно выполняется: с помощью команды rm
удаляется файл «file1.txt».
Оператор &
(амперсанд):
Пример:
sleep 1000 & echo "Процесс запущен в фоновом режиме"
В данном примере команда sleep 1000
запускается в фоновом режиме с помощью оператора &
. Команда sleep 1000
приостанавливает выполнение на 1000 секунд. В то же время, после запуска команды, выводится сообщение «Процесс запущен в фоновом режиме», позволяя продолжить работу в командной строке.
После отправки процесса в фоновое исполнение в терминал выводится номер процесса в локальной оболочке jobs id — [1] и номер (PID — process id) в общем системном списке — 6034.
Посмотреть список фоновых процессов текущего сеанса оболочки можно с помощью команды jobs
, а список системных процессов с помощью команды ps
:
jobs
ps
Чтобы вывести процесс из фонового режима в активный используется команда fg
(foreground) с указанием jobs id:
fg 1
Для завершения процесса sleep
отправьте команду прерывания с помощью Ctrl+C
.
Подробнее тему работы с процессами в Linux я рассмотрю в отдельном посте в будущем.
Когда могут пригодится операторы контроля выполнения команд?
Операторы командной строки находят широкое применение в автоматизации задач и создании сценариев:
- Использование оператора
&&
позволяет выполнять следующую команду только в случае успешного завершения предыдущей, что полезно, например, при сборке программ или выполнении последовательных действий. - Оператор
||
может быть использован для выполнения команды только в случае неуспешного завершения предыдущей команды, что позволяет обрабатывать ошибки или принимать решения на основе результатов команд. - Оператор
;
полезен, когда необходимо выполнить несколько команд последовательно, независимо от результата предыдущих команд. Это может быть полезно при создании скриптов или выполнении серии операций. - Оператор
&
позволяет запустить команду в фоновом режиме, освобождая командную строку для выполнения других задач.
Послесловие
Сегодня мы ознакомились с операторами командной строки &&
, ||
, ;
и &
, которые предоставляют собой гибкие возможности управления порядком выполнения команд и программ в Linux. Правильное использование этих операторов позволяет автоматизировать задачи, обрабатывать ошибки и улучшить эффективность работы с командной строкой.
Благодарю за ваше внимание. Удачи)