Командная строка Linux, контроль выполнения команд: операторы “&&”, “||”, “;” и “&”

Командная строка Linux, контроль выполнения команд: операторы “&&”, “||”, “;” и “&”

Обновлено 23.02.2024

Приветствую!

Сегодня разбираем такие мощные инструменты командной строки Linux, как операторы контроля выполнения команд

Предыдущие посты цикла

Если вы только начинаете изучать 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. Правильное использование этих операторов позволяет автоматизировать задачи, обрабатывать ошибки и улучшить эффективность работы с командной строкой.

Благодарю за ваше внимание. Удачи)

Полезные источники

Подписаться
Уведомить о
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии