Bash простыми словами: зачем он нужен и как работает
Что такое «Баш»? Представьте, что ваш компьютер — это иностранный посол, который говорит только на строгом языке машинных кодов. Bash — это профессиональный переводчик, который сидит между вами и системой. Вы пишете ему простую фразу (например, «покажи все файлы»), а он переводит ее на язык, понятный компьютеру.
Говоря сухо, это программа-интерпретатор команд. Вы вводите туда текстовые команды, нажимаете Enter, и система их выполняет.
Как запустить Bash
- На Linux — уже есть. Путь
/bin/bash. Открываете терминал — вы внутри. - На Mac — уже есть, но с 2019 года стандартной оболочкой стал
zsh. Просто введите bash — переключитесь. - На Windows — из коробки нет. Откройте PowerShell от имени администратора, выполните
wsl --install, перезагрузитесь. После этого Bash работает как обычная программа.
Зачем это нужно?
Представьте, что вам нужно каждый день архивировать папку, переименовывать ее по дате и отправлять на сервер. Можно делать это руками, а можно один раз написать сценарий (скрипт) и поставить его на расписание. Первый подход съедает время, второй — требует инвестиций в знания.
Примеры из жизни:
- Удалить все файлы старше 30 дней — одна строка.
- Переименовать 200 фотографий разом — один цикл.
- Делать резервную копию каждую ночь — один сценарий в планировщике.
Bash не нужен, если делаете что-то один раз. Но как только действие повторяется второй, третий, десятый раз — ручная работа становится врагом.
Напишите сценарий один раз и экономьте время каждый день.
Как устроен этот командный язык изнутри
Когда мы говорим, что такое Bash с технической точки зрения — мы имеем в виду прослойку между ядром операционной системы и пользователем. Графический интерфейс (мышки, кнопки) — это тоже оболочка, но медленная и неповоротливая для массовых операций. Bash работает иначе: вы даете команду строкой, а интерпретатор превращает ее в системный вызов.
Интерпретатор читает ввод, разбивает его на слова и операторы, переводит псевдонимы (алиасы), обрабатывает спецсимволы (например, звездочку * для подстановки имен файлов), а затем исполняет результат. Если вы работали в командной строке Windows (cmd или PowerShell), то найдете много похожего, но синтаксис Unix-систем строже и логичнее в вопросах автоматизации.
Интерактивный или автоматический
Есть два режима, в которых вы будете использовать Bash:
- Интерактивный. Вы открываете терминал, видите приглашение (
$для обычного пользователя или#для root) и вводите команды, получая ответ сразу. Это способ что-то быстро проверить. - Неинтерактивный (скриптовый). Вы пишете последовательность инструкций в файл (например, script.sh). Затем запускаете bash с этим файлом:
bash script.sh. Интерпретатор выполнит строки одну за другой и завершится.
Основные команды, которые нужно знать наизусть
Давайте перейдем к практике. Bash знает сотни команд, но большинство из них — это маленькие программы (вроде ls, cp), которые лежат в папках /bin или /usr/bin. Но есть и встроенные команды, которые «зашиты» в само тело интерпретатора.
echo— печатает текст в терминал. Любимая команда всех новичков: echo «Hello World».cd— change directory. Перемещает вас по файловой системе.pwd— show current directory. Показывает, где вы находитесь прямо сейчас.export— создает переменные окружения, которые увидят дочерние программы.alias— позволяет создавать свои сокращения для длинных команд.
Важный момент: В Bash команды чувствительны к регистру. Ls с большой буквы не сработает, только маленькая ls.
Навигация по файловой системе
95% времени в командной строке — это хождение по папкам. Вот как это выглядит:
- Перейти в домашнюю папку:
cd ~или простоcd. - Перейти в корень системы:
cd /. - Вернуться на папку назад:
cd ..(две точки). - Посмотреть содержимое:
ls -la(ключ-laпоказывает даже скрытые файлы и подробные атрибуты).
Работа с файлами и каталогами в Bash
Вы открыли терминал. Дальше что? Самое время научиться ходить по папкам и смотреть, что внутри.
Как понять, где вы сейчас
pwd расшифровывается как «покажи рабочую папку». Она выводит полный путь. На экране появится что-то вроде /home/ваше_имя. Это ваша домашняя папка. Именно здесь Bash открывается по умолчанию.
Как посмотреть, что лежит внутри
ls показывает список файлов и папок в текущем месте. Добавьте к ней буквы la, и ls -la покажет даже скрытые файлы (те, чьи имена начинаются с точки) и добавит подробности: кто создал, какой размер, когда меняли.
Как переходить между папками
cd (change directory) — ваш главный навигатор. Чтобы зайти в папку Documents, наберите cd Documents. Чтобы подняться на уровень выше (выйти из папки наружу), наберите cd ... Две точки — это родительская папка. Чтобы мгновенно вернуться домой, просто наберите cd без всего.
Как создавать и удалять
mkdir имя_папки— создает новую папку.touch имя_файла.txt— создает пустой файл.cp что_копируем куда_копируем— копирует файлы.mv что_переносим куда_переносим— перемещает или переименовывает.rm имя_файла— удаляет файл навсегда — мимо корзины, так что осторожнее.- Чтобы удалить папку со всем содержимым, добавьте к
rmбуквы-r: rm -r имя_папки.
Переменные в командной строке: от простого к сложному
Переменная — это ячейка с именем, где вы храните информацию. В Bash любая переменная по умолчанию хранит текст. Даже если вы напишете number=123, bash увидит три символа: единицу, двойку и тройку. Числом это станет, только когда вы попросите bash посчитать.
Как записать данные в переменную
Поставьте знак доллара перед именем. Команда echo $name выведет на экран John. Хотите вставить переменную внутрь фразы? Пожалуйста: echo "Меня зовут $name" выведет «Меня зовут John».
Когда нужны фигурные скобки
Представьте, что у вас есть переменная file=backup. Вы хотите получить имя backup_1.txt. Если вы напишете $file_1, Bash начнет искать переменную с именем file_1 (а ее нет). Правильно: ${file}_1. Фигурные скобки говорят Bash: «имя переменной — file, а _1 — это просто текст, который приклей потом».
Переменные, которые уже есть в системе
Bash знает про вас кое-что. Спросите его: echo $HOME — узнаете путь к вашей домашней папке. echo $USER — покажет ваше имя пользователя. echo $PATH — список папок, где система ищет программы, которые вы запускаете из терминала.
Типы данных в Bash
Здесь многих ждет сюрприз. В Bash все переменные по умолчанию хранят просто текст. Даже если вы написали number=123, Bash видит три символа: «1», «2» и «3». Он не воспринимает эту запись как число сто двадцать три.
Как заставить Bash считать
Если вам правда нужно сложить числа, используйте двойные круглые скобки. Напишите result=$((a + b)). Затем echo $result — увидите 15. Внутри двойных круглых скобок работают обычные арифметические знаки: плюс, минус, умножение (*), деление (/).
А что с дробями, например 3.14?
Bash не умеет работать с дробными числами. Вообще. Ему нужны только целые. Если вам позарез нужны дроби, есть обходной путь. Используйте команду echo "5/2" | bc. Она выдаст 2.5. Но если вы дошли до дробей, возможно, задача стала слишком сложной для Bash. Пора переходить на Python.
Массивы (списки)
В Bash можно сделать простой список. Например: fruits=(яблоко банан апельсин). Чтобы достать первый элемент (в программировании счет идет с нуля), напишите ${fruits[0]}.
Фигурные скобки и квадратные скобки обязательны. Если написать $fruits[0], Bash не поймет, чего вы хотите.
Массивы в Bash не любят сложностей. Для серьезной работы с данными (например, список покупок с ценами) он не подходит. Но для простого перебора файлов — вполне.
Условные конструкции в Bash
Условия делают скрипт умным. Без них Bash просто совершает действия по очереди, даже если что-то пошло не так. С условиями он может принимать решения: «Если файл есть — сделай одно, если нет — сделай другое».
if [ условие ]; then
команды для случая «да»
else
команды для случая «нет»
fi
Слово fi закрывает условие (это if наоборот, просто запомните). Пробелы внутри квадратных скобок очень важны. Надо писать [ условие ], а не [условие].
Что можно проверять
Для файлов
[ -f "файл.txt" ]— истина, если такой файл существует.[ -d "папка" ]— истина, если такая папка существует.
Для чисел
[ $a -eq $b ]— равно (equal).[ $a -ne $b ]— не равно.[ $a -gt $b ]— больше (greater than).[ $a -lt $b ]— меньше (less than).
Для строк
[ "$str1" = "$str2" ]— строки совпадают.[ "$str1" != "$str2" ]— различаются.
Короткая форма для простых случаев
Если нужно выполнить действие только при успехе, используйте двойной амперсанд &&. Например: [ -f "config.txt" ] && echo "Файл найден".
Это читается так: «проверь условие, и если оно верно — выполняй то, что справа».
Циклы в Bash
Циклы нужны, чтобы делать одно и то же много раз, не копируя код. Вместо десяти одинаковых строчек вы пишете одну конструкцию, которая повторяется нужное количество раз.
forперебирает список значений. Например, вы можете пробежаться по всем файлам в папке и сделать с каждым что-то полезное. Цикл for в Bash работает не как в других языках — он просто берет слова из строки и по очереди подставляет их в переменную.whileвыполняется, пока условие истинно. То есть работает «пока», а не «сколько раз». Например, он может проверять, залогинился ли нужный пользователь, и ждать, пока это не случится. Проверка происходит раз в минуту — и скрипт не делает лишней работы.until— противоположность while. Он работает, пока условие ложно. То есть «до тех пор, пока не случится». If you suspect that while and until are very similar you are right — они действительно почти одинаковые, просто с противоположной логикой.
Функции в командной строке
Функция — это кирпичик, из которого строят большие скрипты. Вместо того чтобы писать один и тот же кусок кода десять раз в разных местах, вы пишете его один раз, даете ему имя и потом просто вызываете это имя.
Как создать функцию
Вот пример простой функции, которая здоровается:
say_hello() {
echo "Привет!"
}
Разберем эту конструкцию по частям. say_hello — это имя функции. Вы можете придумать любое имя, но лучше осмысленное. Круглые скобки () говорят Bash: «сейчас будет функция». Открывающая фигурная скобка { обозначает начало списка действий, которые принадлежат функции. Затем идет команда echo "Привет!" — это то, что функция будет делать, когда ее вызовут. Закрывающая фигурная скобка } обозначает конец функции.
Зачем это нужно
Допустим, вы часто делаете одно и то же: заходите в папку «Документы», создаете там папку «Архив», копируете туда все файлы с расширением .txt. Без функции вы каждый раз пишете эти три строчки вручную. С функцией вы пишете их один раз, даете ей имя (например, «сделай_архив») и потом просто пишете «сделай_архив».
Bash-скрипт: что это
Bash-скрипт — это просто текстовый файл, в котором записаны инструкции для Bash. Вы пишете в нем то же самое, что вводите в терминале вручную, но строки выполняются одна за другой автоматически. Это как список дел, который компьютер исполняет сам от начала до конца.
В таком файле можно использовать все возможности Bash: переменные, условия, циклы и функции. Скрипты превращают рутинные задачи в автоматические. Вместо того чтобы вводить десять строк каждый день, вы один раз записываете их в файл и потом просто запускаете его.
Скрипты могут делать все что угодно: создавать резервные копии, обрабатывать сотни файлов, настраивать серверы, отправлять отчеты по почте.
Многие администраторы Linux живут в мире скриптов — это их основной рабочий инструмент.
Как создать и запустить Bash-скрипт
Создание и запуск скрипта — это несколько шагов. Вы справитесь за пару минут.
Шаг 1. Откройте текстовый редактор
Подойдет обычный блокнот. Если вы уже в терминале, используйте nano. Это простой редактор, который не пугает новичков.
Шаг 2. Напишите первую строку — shebang
Напишите #!/bin/bash. Это не комментарий, а указание системе: «исполняй этот файл с помощью Bash, который лежит по адресу /bin/bash». Без этой строчки система не поймет, какой интерпретатор использовать. На некоторых системах Bash лежит в /usr/bin/bash. Если стандартный путь не работает, попробуйте #!/usr/bin/env bash — это более универсальный способ.
Шаг 3. Пропишите действия, которые хотите автоматизировать
Например: echo "Мой первый скрипт". Или что-то полезное: mkdir test_folder, cd test_folder, touch test.txt.
Шаг 4. Сохраните файл с расширением .sh
Дайте понятное имя, например first.sh.
Шаг 5. Дайте файлу право на выполнение
По умолчанию новые файлы запускать нельзя — это защита от случайного запуска опасного кода. В терминале, находясь в папке с файлом, наберите chmod +x first.sh. chmod — это утилита, которая меняет права доступа, а +x добавляет право на выполнение.
Шаг 6. Запустите скрипт
Наберите ./first.sh. Точка слеш означает «в текущей папке». Скрипт выполнится, и вы увидите результат.
Если вы не хотите возиться с правами
Есть легкий путь. Просто наберите bash first.sh. Вы передаете файл интерпретатору напрямую, и права на выполнение не нужны. Этот способ удобен, когда вы только учитесь и не хотите запоминать chmod.
Когда скрипт запущен, он выполняет действия строка за строкой, пока не дойдет до конца. Вы видите результат в терминале. Если что-то пошло не так, Bash покажет ошибку. Это нормально — исправляйте и запускайте снова.
Практический пример Bash-скрипта
Допустим, вы каждый день создаете папку для новых отчетов. Руками вы делаете так: открываете проводник, находите нужное место, нажимаете правой кнопкой, выбираете «создать папку», вводите имя. Это пять движений. А если забыли, создали ли уже папку сегодня, приходится проверять.
#!/bin/bash
if [ -d "reports" ]; then
echo "Папка reports уже существует, ничего не делаю"
else
mkdir reports
echo "Папка reports создана"
fi
Скрипт делает это за вас. Он проверяет, существует ли папка с именем reports. Если нет — создает. Если да — ничего не делает и просто сообщает, что папка уже есть.
- Первая строка
#!/bin/bash— обязательная. Дальше скрипт проверяет: существует ли папка reports? Если да — выводит «Папка уже есть». Если нет — создает папку через mkdir и выводит «Папка создана». Завершается все словом fi. - Сохраните этот код в файл create_reports.sh. Откройте терминал, перейдите в папку с файлом. Выполните
chmod +x create_reports.sh(разрешить запуск) и затем./create_reports.sh. - Первый запуск создаст папку. Второй скажет, что она уже есть. Все. Вы только что автоматизировали одно действие.
Чем Bash хорош и где он пасует
Прежде чем бросаться писать скрипты, давайте честно посмотрим, что Bash делает хорошо, а где он бессилен.
Преимущества
- Bash есть везде. На любом Linux, на Mac, даже на Windows (через WSL) можно запустить Bash-скрипт без дополнительной установки. Это делает его универсальным языком для автоматизации.
- Система не требует установки дополнительных библиотек или виртуальных машин. Он запускается мгновенно и потребляет минимум ресурсов. Для быстрых задач это идеальный инструмент.
- Прямое управление системой. Bash позволяет легко запускать программы, перенаправлять потоки данных, объединять действия в цепочки. Для администратора сервера это незаменимая вещь.
- Простота запуска. Вам не нужна сложная среда разработки. Любой текстовый редактор подходит для создания скрипта. Права на выполнение даются одной строчкой.
Что стоит учесть
- Синтаксис Bash может показаться странным, особенно если вы привыкли к Python или JavaScript. Пробелы имеют значение, ветвления закрываются перевернутыми словами (fi вместо endif), а арифметика требует специальных конструкций.
- Bash медленный для сложных вычислений. Если вам нужно обработать миллион строк логов, Python или Go справятся быстрее. Bash хорош для «склеивания» других программ, а не для тяжелой математики.
- Еще один недостаток — типы данных. В Bash нет удобной работы с JSON, нет нормальных словарей (как в Python). Для серьезной обработки данных лучше взять другой язык.
- Bash не умеет работать с дробными числами без внешних программ. Если вам нужна точная математика, придется использовать bc или переходить на другой язык.
Часто задаваемые вопросы
Сложно ли выучить Bash?
Начать легко — основы можно освоить за пару часов практики. Чтобы писать сложные скрипты, нужно больше времени. Двигайтесь постепенно: сначала научитесь ходить по папкам, потом добавляйте условия, затем циклы.
Чем Bash отличается от командной строки в Windows?
Bash — это язык для Linux и Mac. В Windows по умолчанию стоит PowerShell, у него другой синтаксис. Но на Windows можно установить Bash через WSL — это официальная технология от Microsoft.
Как остановить зависший скрипт?
Нажмите Ctrl + C в терминале, где выполняется скрипт. Это прервет его работу.
Почему мой скрипт не запускается?
Три самые частые причины: забыли поставить #!/bin/bash в первой строке, забыли дать право на выполнение через chmod +x, или запускаете не из той папки.
Что лучше начать учить: Bash или Python?
Bash — для быстрых действий и простой автоматизации: переименовать файлы, создать папки, запустить программу. Python — для серьезных программ: сайты, анализ данных, игры. Начните с Bash, он проще.
Bash нужен любому, кто хочет экономить время: дизайнеру — переименовать сотню файлов, студенту — автоматизировать создание папок по датам, офисному сотруднику — настроить резервное копирование документов. Начинать лучше с малого. Освойте три простых действия: ls (посмотреть файлы), cd (перейти в папку), mkdir (создать папку). Когда они станут привычными, добавьте переменные и условия. Не пытайтесь объять необъятное за один вечер.









