Найти в Дзене
Герман Геншин

Взломайте свой Linux! Эти 8 скрытых фишек Bash навсегда изменят работу с командами

Shell — незаметная движущая сила всей вашей работы в Linux. Это ваш посредник между вами и программами системы: и интерфейс, и полноценный язык программирования в одном флаконе. Одна из главных «магий» оболочки — разные виды подстановок прямо в командах, которые вы вводите, например, подстановка переменных. Этот процесс проходит в несколько этапов, и разобраться в них стоит каждому. Сначала Bash обрабатывает конструкции с фигурными скобками, превращая ваши шаблоны в готовые строки — настоящая экономия времени при создании длинных списков. Классика: внутри скобок через запятую задаём варианты: Shell превратит такой пример в echo abde acde. Используйте echo — и сразу увидите результат подстановки. Можно задать и последовательность: {1..5} — то же самое, что {1,2,3,4,5}. Работает не только с числами, но и с буквами! Самое базовое применение ~ — молниеносный переход в домашний каталог пользователя. Например: Однако у тильды есть и менее известные приёмы — например: Чтобы воспользоваться п
Оглавление

Shell — незаметная движущая сила всей вашей работы в Linux. Это ваш посредник между вами и программами системы: и интерфейс, и полноценный язык программирования в одном флаконе.

Одна из главных «магий» оболочки — разные виды подстановок прямо в командах, которые вы вводите, например, подстановка переменных. Этот процесс проходит в несколько этапов, и разобраться в них стоит каждому.

Фигурные скобки: моментально создаём шаблонные списки

Сначала Bash обрабатывает конструкции с фигурными скобками, превращая ваши шаблоны в готовые строки — настоящая экономия времени при создании длинных списков. Классика: внутри скобок через запятую задаём варианты:

Shell превратит такой пример в echo abde acde.

Используйте echo — и сразу увидите результат подстановки.

Можно задать и последовательность:

{1..5} — то же самое, что {1,2,3,4,5}. Работает не только с числами, но и с буквами!

Тильда: быстрый доступ к домашней папке и не только

Самое базовое применение ~ — молниеносный переход в домашний каталог пользователя. Например:

Однако у тильды есть и менее известные приёмы — например:

Переменные и параметры: Bash умеет больше, чем просто $

Чтобы воспользоваться переменной, поставьте перед её именем знак $ или используйте позиционные номера (идеально для скриптов и функций).

Часто имя переменной записывают в фигурных скобках, например:

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

Или вырезать определённую часть строки:

Можно быстро менять регистр символов или узнать длину строки:

В Bash огромный арсенал трюков для работы со строками — не поленитесь изучить их!

Подстановка команд: автоматизация без границ

Подстановка команд — настоящий лайфхак для и повседневных задач, и скриптов. Самый простой пример:

Bash выполнит команду в отдельном процессе, а на место $(...) вставит её результат. Это экономит массу времени — например, команда сразу возвращает имя файла. Хотите создать временный файл и тут же открыть его на редактирование одной строкой? Легко:

Или создать временную папку и сразу перейти в неё:

Есть и подстановка процесса — она похожа на подстановку команд, но работает по-другому и доступна не везде.

Арифметические операции: вычисляем прямо в Bash

Арифметика особенно удобна в скриптах, где всё считает Bash, прямо «на месте». Главное — используйте двойные скобки:

Bash прекрасно справляется с базовыми целочисленными операциями: умножением, инкрементами, побитовыми сдвигами и не только. Работают стандартные операторы сравнения: == для проверки на равенство, && для логического «И» и прочие привычные конструкции.

Разделение на слова: как Bash превращает строки в аргументы команд

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

Пример:

Bash сначала подставит команду как "ls one two three" — если нет кавычек, строка делится на три параметра для ls: one, two и three. А если кавычки есть, результат другой:

В этом случае ls ищет файл с именем "one two three" — именно поэтому важно понимать разницу между несколькими аргументами и одним аргументом с пробелами внутри.

Расширение имён файлов (глоббинг): ищем файлы по шаблонам

Файловое расширение — глоббинг — это поиск файлов по шаблону. Даже если слово “глоббинг” вам не знакомо, наверняка вы давно этим пользуетесь, например, когда вводите:

Если shell встречает неэкранированные *, ? или [, он воспринимает строку как шаблон и подставляет все подходящие имена файлов.

* заменяет любое количество символов, ? — ровно один, а [abc] — любой символ из набора abc.

Удаление кавычек: защитите свои аргументы с пробелами

В самом конце Bash убирает кавычки и обратные слэши, которые защищали части строки от распада во время всех подстановок.

Это позволяет легко передать строку с пробелами как единый аргумент. Например, если нужно вывести имя файла с неудобными пробелами:

Без кавычек ls попытается найти четыре отдельных файла с простыми именами.

Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!

Премиум подписка - это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

Также подписывайтесь на нас в: