Что такое Bash: синтаксис, команды и основы работы c оболочкой в Linux

Что такое Bash: синтаксис, команды и основы работы c оболочкой в Linux

Вы когда-нибудь видели в кино хакера, который стучит по клавиатуре, а на черном экране бегут строчки кода? В реальной жизни в эту «черную» программу заходят, чтобы быстро сделать то, на что мышкой уйдет больше времени. Bash — это язык, на котором вы говорите с компьютером. Не на русском или английском, а специальными короткими словами вроде ls (показать файлы) или mkdir (создать папку).

В статье я объясню, как не бояться черного экрана, какие команды набрать первыми и почему один раз потраченный вечер сэкономит вам десятки часов рутины.

Bash простыми словами: зачем он нужен и как работает

Что такое «Баш»? Представьте, что ваш компьютер — это иностранный посол, который говорит только на строгом языке машинных кодов. Bash — это профессиональный переводчик, который сидит между вами и системой. Вы пишете ему простую фразу (например, «покажи все файлы»), а он переводит ее на язык, понятный компьютеру.

Говоря сухо, это программа-интерпретатор команд. Вы вводите туда текстовые команды, нажимаете Enter, и система их выполняет.

bash-prostymi-slovami

Как запустить Bash

  • На Linux — уже есть. Путь /bin/bash. Открываете терминал — вы внутри.
  • На Mac — уже есть, но с 2019 года стандартной оболочкой стал zsh. Просто введите bash — переключитесь.
  • На Windows — из коробки нет. Откройте PowerShell от имени администратора, выполните wsl --install, перезагрузитесь. После этого Bash работает как обычная программа.

Зачем это нужно?

Представьте, что вам нужно каждый день архивировать папку, переименовывать ее по дате и отправлять на сервер. Можно делать это руками, а можно один раз написать сценарий (скрипт) и поставить его на расписание. Первый подход съедает время, второй — требует инвестиций в знания.

Примеры из жизни:

  • Удалить все файлы старше 30 дней — одна строка.
  • Переименовать 200 фотографий разом — один цикл.
  • Делать резервную копию каждую ночь — один сценарий в планировщике.

Bash не нужен, если делаете что-то один раз. Но как только действие повторяется второй, третий, десятый раз — ручная работа становится врагом.

Напишите сценарий один раз и экономьте время каждый день.

Как устроен этот командный язык изнутри

Когда мы говорим, что такое Bash с технической точки зрения — мы имеем в виду прослойку между ядром операционной системы и пользователем. Графический интерфейс (мышки, кнопки) — это тоже оболочка, но медленная и неповоротливая для массовых операций. Bash работает иначе: вы даете команду строкой, а интерпретатор превращает ее в системный вызов.

Интерпретатор читает ввод, разбивает его на слова и операторы, переводит псевдонимы (алиасы), обрабатывает спецсимволы (например, звездочку * для подстановки имен файлов), а затем исполняет результат. Если вы работали в командной строке Windows (cmd или PowerShell), то найдете много похожего, но синтаксис Unix-систем строже и логичнее в вопросах автоматизации.

Интерактивный или автоматический

Есть два режима, в которых вы будете использовать Bash:

  1. Интерактивный. Вы открываете терминал, видите приглашение ($ для обычного пользователя или # для root) и вводите команды, получая ответ сразу. Это способ что-то быстро проверить.
  2. Неинтерактивный (скриптовый). Вы пишете последовательность инструкций в файл (например, script.sh). Затем запускаете bash с этим файлом: bash script.sh. Интерпретатор выполнит строки одну за другой и завершится.

Основные команды, которые нужно знать наизусть

bash-osnovnye-komandy

Давайте перейдем к практике. 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

Вы открыли терминал. Дальше что? Самое время научиться ходить по папкам и смотреть, что внутри.

bash-rabota-s-faylami-i-katalogami

Как понять, где вы сейчас

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 посчитать.

bash-peremennye-v-komandnoy-stroke

Как записать данные в переменную

Поставьте знак доллара перед именем. Команда 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-uslovnye-konstruktsii

Условия делают скрипт умным. Без них 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

bash-tsikly

Циклы нужны, чтобы делать одно и то же много раз, не копируя код. Вместо десяти одинаковых строчек вы пишете одну конструкцию, которая повторяется нужное количество раз.

  • for перебирает список значений. Например, вы можете пробежаться по всем файлам в папке и сделать с каждым что-то полезное. Цикл for в Bash работает не как в других языках — он просто берет слова из строки и по очереди подставляет их в переменную.
  • while выполняется, пока условие истинно. То есть работает «пока», а не «сколько раз». Например, он может проверять, залогинился ли нужный пользователь, и ждать, пока это не случится. Проверка происходит раз в минуту — и скрипт не делает лишней работы.
  • until — противоположность while. Он работает, пока условие ложно. То есть «до тех пор, пока не случится». If you suspect that while and until are very similar you are right — они действительно почти одинаковые, просто с противоположной логикой.

Функции в командной строке

Функция — это кирпичик, из которого строят большие скрипты. Вместо того чтобы писать один и тот же кусок кода десять раз в разных местах, вы пишете его один раз, даете ему имя и потом просто вызываете это имя.

bash-funktsii

Как создать функцию

Вот пример простой функции, которая здоровается:

say_hello() {
    echo "Привет!"
}

Разберем эту конструкцию по частям. say_hello — это имя функции. Вы можете придумать любое имя, но лучше осмысленное. Круглые скобки () говорят Bash: «сейчас будет функция». Открывающая фигурная скобка { обозначает начало списка действий, которые принадлежат функции. Затем идет команда echo "Привет!" — это то, что функция будет делать, когда ее вызовут. Закрывающая фигурная скобка } обозначает конец функции.

Зачем это нужно

Допустим, вы часто делаете одно и то же: заходите в папку «Документы», создаете там папку «Архив», копируете туда все файлы с расширением .txt. Без функции вы каждый раз пишете эти три строчки вручную. С функцией вы пишете их один раз, даете ей имя (например, «сделай_архив») и потом просто пишете «сделай_архив».

Bash-скрипт: что это

Bash-скрипт — это просто текстовый файл, в котором записаны инструкции для Bash. Вы пишете в нем то же самое, что вводите в терминале вручную, но строки выполняются одна за другой автоматически. Это как список дел, который компьютер исполняет сам от начала до конца.

bash-skript

В таком файле можно использовать все возможности 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-скрипта

bash-prakticheskiy-primer

Допустим, вы каждый день создаете папку для новых отчетов. Руками вы делаете так: открываете проводник, находите нужное место, нажимаете правой кнопкой, выбираете «создать папку», вводите имя. Это пять движений. А если забыли, создали ли уже папку сегодня, приходится проверять.

#!/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-chem-horosh-i-gde-on-pasuet

Преимущества

  • 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 (создать папку). Когда они станут привычными, добавьте переменные и условия. Не пытайтесь объять необъятное за один вечер.

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Скопировано