Содержание статьи
&& и ||, эта статья для тебя.Bash (Bourne Again Shell) — это оболочка для Unix и Linux, которая принимает твои текстовые команды и передает их операционной системе для выполнения. Bash — это не терминал и не скрипт. Воспринимай его как интерпретатор командного языка, который умеет запускать команды Linux и имеет собственную логику.
Терминал — это программа для интерактивного взаимодействия с системой. Он нужен для удобного ввода команд и отображения результатов. Цепочка такая: терминал принимает команду и передает ее Bash, интерпретатор разбирает команду и передает ее операционной системе, а затем получает результат и возвращает его пользователю через терминал.
Bash можно использовать не только через терминал, но и в виде скриптов. Любую последовательность команд, включая ветвления if, циклы и так далее, можешь записать в файл и выполнять как обычную программу. Затем выполни chmod , чтобы файл стал исполняемым. Не забудь добавить в начало файла «шебанг» (shebang): он сообщит Linux, как интерпретировать файл.
#!/bin/bashТакие файлы называют Bash-скриптами. В Linux и macOS, в отличие от Windows, скрипты могут называться как угодно и иметь любое расширение. Главное — не нарушать правила именования системы. Но для удобства скриптовые файлы часто имеют расширение .. Это не требование системы, просто правило хорошего тона.
Это база
Любая твоя команда в Linux и macOS возвращает код завершения. Это число от 0 до 255, которое указывает, успешно ли отработала команда. Если вернулся 0, значит, программа отработала корректно. В ином случае произошла какая‑то ошибка.
Эта цифра — ключевой момент в логике работы Bash. Ты неоднократно видел команды вроде git . Это цепочка вызовов, построенная на булевой логике.
Выполни любую команду в терминале, а затем проверь ее код завершения через echo . Например:
ls /etc/passwd
echo $?ls /boo/moo
echo $?
Первая проверка вернет 0, вторая — 2. Двойка — это код ошибки, с которым можно работать. Здесь важно не запутаться, ведь обычно 1 — это true, а 0 — false. В Bash 0 — это true, а любое число от 1 до 255 — false. Введи в терминале следующие команды:
trueecho $?falseecho $?# Обрати внимание на двойные скобки, это нужно для перехода в математический контекст((1>0))echo $?((1<0))echo $?
Скорее всего, ты встречал команды, в которых есть && или две вертикальные черты ||. Оператор && — это логическое И. Команда после него выполняется, только когда предыдущая завершилась успешно:
true && echo "Not bad"false && echo "Tell them I'm a super hacker"info
Не путай двойной амперсанд && с одиночным &. Одиночный амперсанд говорит Linux, что команду нужно выполнить в фоновом режиме. Чтобы добраться до проги, запущенной в фоне, используй fg.
В результате первая строка появится в терминале, а вторая не будет отображена никогда.

Команда || — это логическое ИЛИ, она противоположна &&. Примеры:
false || echo "Mom was right—I'm a really smart guy!"true || echo "Hey!"Проверим, есть ли на нашей машине интернет, пинганув публичный DNS-сервер Google:
ping -c1 8.8.8.8 || echo "Oh no! I don't have Internet access."Если тебе нужно последовательно выполнить команды без условий, используй точку с запятой ;:
echo "Maybe I'll become"; echo "\ta cool hacker?"
Еще один вариант — запуск через одиночную вертикальную черту |. Используй его, если надо передать вывод одной команды в другую.
Перенаправления
Ты, возможно, слышал, что в Unix и Linux «всё есть файл». Любое устройство, любая программа и прочее воспринимаются системой в виде файлов. Для этого в никсах есть несколько виртуальных файловых систем. Нужно распечатать данные? Пиши в файл принтера — система разберется, что с этим делать. То же самое с получением данных от устройств: система позволяет читать информацию, как из файла. Даже серфинг в интернете без браузера можно организовать как работу с файлами.

Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
