5 неожиданных Bash-команд, которые перевернули мой опыт в Linux! Вы не поверите, как быстро начнёте их использовать

Tux, маскот Linux, в солнечных очках выглядывает из-за терминала с командами globbing.

Проводите много времени в терминале? Всегда ищете новые способы ускорить работу в Linux? Я тоже! Обожаю находить свежие фишки — они открывают глаза на то, сколько всего ещё можно упростить. Вот пять однострочных команд, которые не раз спасали меня в реальных задачах — уверен, они удивят и вас.

Маскот Linux на столе рядом с ноутбуком.

8 главных видов программ для терминала Linux — вы знакомы со всеми?

Научитесь отличать фильтры от TUIs и не путайтесь в терминах!

Создание директорий с помощью фигурных скобок

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

Этот приём полезен далеко не только для одной команды.

Вот так вы сразу создадите всю нужную структуру папок одной строкой:

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

Кстати, скобки работают не только с mkdir — попробуйте их где угодно! В документации говорится:

Сначала Bash видит фигурные скобки, разворачивает их в список вариантов, а потом уже подставляет части пути:

Символы «?» и «*» — это так называемые шаблоны (globs), которые находят любой один или несколько символов.

Чаще всего мне хватает самых простых примеров с фигурными скобками, чтобы быстро создать кучу папок. Если встретите что-то хитрее — не переживайте, смысл тот же.

Считаем строки или слова за пару секунд

Соберите всё в один поток и передайте в wc

Часто пользуюсь этой командой, чтобы быстро узнать, сколько строк кода в проекте или слов в любом файле заметок.

Чтобы увидеть суммарный результат, нужно собрать все данные в один поток и передать команде «wc». Если выполнить wc --words **/*.org, то получите статистику по каждому файлу отдельно. А если хотите видеть итог — объедините данные одной из команд ниже.

В терминале показан подсчёт слов во всех .org файлах — всего 1991043.

Сравниваем вывод двух процессов на лету

Подставляем команды прямо в diff и используем на максимум

С командой «diff» для сравнения двух файлов знакомы почти все:

Окно терминала: содержимое двух файлов и результат diff.

Но мало кто использует подстановки процессов! Они позволяют передать diff результат любых двух команд — будто вы сравниваете обычные файлы:

Например, если в двух каталогах есть файлы с одинаковыми именами («two»):

Терминал показывает разницу между двумя каталогами через process substitution.

Символ «>» показывает, что файл «three» есть в правой папке («<(ls ./bar)»), а в левой — нет. «<" — наоборот.

Можно сохранить список файлов (ls ~/foo > foo-baseline.txt) и потом сравнивать этот «слепок» с текущим состоянием:

Так любые изменения будут сразу на виду. Особенно удобно это работает вместе с «watch», о котором расскажу чуть ниже.

С подстановками процессов можно сравнивать вывод любых команд — не ограничивайте себя одним только «ls».

Отслеживаем изменения в реальном времени: волшебство «watch»

Мониторить изменения — проще некуда: гибкость «watch» решает всё

Утилита «watch» вообще гениально проста: она сама переодически (по умолчанию каждые две секунды) запускает вашу команду и покажет, что меняется.

Самый банальный пример — наблюдать, какие порты открыты:

Экран очищается, показывается только свежий вывод с небольшим заголовком.

Параметр --color включает цветное выделение, --differences — подсвечивает изменения между запусками. Иногда бывают лишние движения, но обычно очень удобно.

А ещё «watch» классно подходит для слежения за папками, показывая различия в реальном времени:

Два окна терминала: одно показывает работу команды watch с diff, в другом — добавление нового файла, который тут же появляется в выводе diff.

«Watch» запускает команды через sh, а не Bash, поэтому подстановки процессов напрямую не поддерживаются. Просто вызывайте diff явно через Bash.

Только что созданный файл («1») сразу появляется в diff («2»). Это почти как онлайн-мониторинг папок!

Вырезаем нужные куски текста с помощью grep

Иногда нужно достать только важное — легко и просто!

Обычно grep ищет всю строку с вашим шаблоном, но часто нужно вытащить только сам фрагмент. Например, чтобы получить содержимое HTML-тега:

В терминале виден HTML-файл и результат работы grep по извлечению текста между тегами p.

Регулярка ловит «.+» (один или больше любых символов) между тегами «

» и «

» только если оба совпадают. Таким образом можно легко вытащить содержимое между тегами или любыми фрагментами:

Команда найдёт всё, что находится между «foo» и «bar».

В старых версиях PCRE была поддержка только фиксированной длины lookbehind (было нельзя использовать ?, +, *). С PCRE2 10.43 длину можно выбирать — по умолчанию 255 символов. Это ограничение ускоряет работу регулярных выражений. Узнать версию можно через grep —version.

Я подробно разбирал регулярные выражения в отдельной статье — советую почитать, если хотите реально в них разобраться.

Dell XPS 13 Plus 2023

Dell XPS 13 Plus с Linux

Мощная начинка, отличный экран и минимальный вес — это действительно идеальный ноутбук для фанатов Linux.

Все эти команды решают конкретные задачи, но их приёмы легко применимы и для других случаев. Скобочные расширения полезны почти везде, особенно при работе с путями. Watch — ваш инструмент для мониторинга в реальном времени, а diff помогает сразу заметить изменения. Grep с regex невероятно мощен: раньше не знал, как выхватить нужный кусок текста — теперь знаю и вы тоже!

Ноутбук с открытым терминалом Linux.

Хватит пользоваться этими 7 устаревшими командами Linux — обновитесь, чтобы быть впереди!

Держитесь на гребне технологий — не тормозите развитие!

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

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

Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь

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

Алекс Бежбакин
Оцените автора
Добавить комментарий