Первые шаги в освоении BASH
Рано или поздно вам как разработчикам придется осваивать администрирование linux-серверов. Это довольно непростая задача. Вам придется писать скрипты для интрепритатора BASH и применять массу команд. Если вы всю жизнь работали в операционной системе windows, то вам придётся не легко. Управление в операционках виндовс осуществляется через окошки, а в операционках линукс через командную строку. Если сравнивать виндовс и линкс с точки зрения надёжности, то выигрывает с большим отрывом linux. В linux есть командный язык shell (в переводе - раковина, скорлупа). Shell фактически язык программирования очень высокого уровня. Вам придется писать скрипты на shell для BASH.
Что же такое баш? Bash — это командный процессор, работающий, как правило, в интерактивном режиме в текстовом окне. Bash также может читать команды из файла, который называется скриптом (или сценарием). Как и все Unix-оболочки, он поддерживает автодополнение имён файлов и директорий (клавиша tab при наборе), подстановку вывода результата команд, переменные, контроль за порядком выполнения, операторы ветвления и цикла. Ключевые слова, синтаксис и другие основные особенности языка были заимствованы из sh. Именно так написано в википедии. Вам не нужно всё знать! Необходимо знать базовый минимум для администрирования системы.
Базовый минимум BASH
- команды sh для управления операционной системой
- поиск файлов
- установка атрибутов файлов
- вызов мануалов для определённой команды
- задания для планировщика
- установка программ
Хочу предложить вам свой путь для изучения BASH. Я прошёл его сам и не жалею о потраченном времени. Тут подробно описаны первые шаги по освоению bash
- серия видеоуроков: SHELL BASH Основы работы в командном процессоре
- онлайн курс: Bash: Основы командной строки
- статьи с моей категории BASH
- любая книга для начинающих программистов BASH. Советую прочитать Advanced-Bash-Scripting-Guide в pdf на русском языке
Схема обучения BASH

Эта схема разбита по шагам. Если вы сразу броситесь писать скрипты, то у вас может ничего не выйти. Не бросайтесь на сложное задание! Читать умные книги сразу не советую. Для начала посмотрите на видео. Пройдите онлайн курс: Bash: Основы командной строки. Только потом читайте книги. Так хоть представление будет о среде linux. Ниже основа без которой сложно будет работать.
Выполнение команд
- Перемещение по файловой системе Linux cd , mc (Midnight Commander)
- Вывод папок и файлов: ls
- Поиск текста в файлах: grep
- Создание текстовых файлов: touch, vim
- Смена прав у файлов: chmod
- Чтение и редактирование файлов в редакторах: Vim, nano
- Создание alias
Практические задания BASH
После того как ваш багаж знаний пополнится, советую приступить к написанию скриптов. Практика в освоении языков очень много значит. Постарайтесь написать несколько скриптов. У меня получилось выполнить 5 скриптов и они успешно работают. Выберите любой пункт из списка скриптов и постарайтесь написать скрипт. Этот эксперимент закрепит ваши знания.
- Установка пакетов apt apt-get snap. Очень часто нужно ставить программы через консоль. Поставьте хотябы несколько популярных программ на свою машину.
- Архивация файлов в zip формате. Очень часто нужно делать архивы. архиватор zip есть на любой ОС.
- Бекап базы данных postgres, mysql. Тут нужно сдампить базу данных и при помощи rsync скопировать файлы к себе на локальную машину.
- Бекап картинок с удалённого сервера: rsync. Вам необходимо купить VDS и делать бекап картинок.
- Конвертация фидеофайлов в разные форматы. Линуки позволяет легко конвертировать видео файлы из одного формата в другой. Даже звук можно поменять.
- Простейшее логирование. Тут необходимо каждый шаг записывать в файл.
- Последовательный запуск других скриптов. В одном скрипте можно запустить другие скрипты. Можно запускать файлы один за другим или использовать условия if-else
- Создание шаблона сайта. Можно заменять метки внутри файлов и тем самым вносить изменения.
- Cron и установка задания по времени. Вы можете делать скрипты который отрабатывают каждые 5 минут. Например мой скрипт делает бекап базый данных каждый день в полночь.
- Ansible - утилита которая помогает запускать скрипты друг за другом. Можно налету менять переменные для скриптов.
Скажу напоследок небольшое напутствие. Какие бы языки вы не изучали без BASH не обойтись. Программирование на среде windows хорошо для программистов 1C. Если вы веб разработчик, то изучение Linux обязательно. Сила BASH скриптов в хорошей скорости. Вы можете написать короткий скрипт sh в одну строку или написать большой PHP скрипт для одной и той же задачи. Скрипт PHP для обработки больших данных будет долго работать и может зависнуть, а sh скрипт для подобных задач быстро отработает. Как бы я не хвалил BASH у него есть недостатки:
- Сложно выполнять арифметические операции с числами
- Немного запутанный синтаксис. К нему непросто привыкнуть
- Нет синтаксического сахара
- Нет многомерных ассоциативных массивов. Можно собрать только простой индексированный массив.
- Нет ООП
Я до сих по не знаю как относиться к этому языку. Он похож на набор команд для консоли и в нем есть функции для работы с данными. Есть условия if-else как у любого другого языка. Плюсов у языка shell много:
- Установка любимых серверов при помощи команд sh. Например Nginx, Apache
- sh - язык высокого уровня. Минимум кода даёт максимум результата
- Синхронизация между папками
- Быстрое массовое удаление файлов и папок
- Удобная работа с ключами команд. Например команда ls -1 и ls -al даст разный результат.
- Настройка окружения для работы вашего веб приложения. Что может быть важнее ))
Все что я написал я прошёл сам на это ушли годы. Есть темы которые я побаиваюсь. Например terraform, kubernetes. Эти технологии достаточно сложные и трудно понять как они работают. Если вы хотите быть DevOps, то пройдите крутые курсы или найдите хорошего учителя. Для автоматического запуска скриптов хорошо подойдёт ansible. Он достаточно простой по сравнению с terraform. Terraform - это магия. Если вы пройдёте все шаги, которые я написал, то сможете быть уверенным пользователем linux и сможете разворачивать веб-приложения на VDS. Вам понравится работать в линукс и вы не захотите работать на виндовс.