
Освоились с Linux и командной строкой? Я тоже когда-то был на этом этапе, но настоящим прорывом для меня стали собственные shell-функции. Их можно повторно использовать в скриптах и просто запускать из терминала — как если бы это были встроенные команды или привычные алиасы.
Короткие функции для рутинных задач экономят кучу времени, а собирать свою коллекцию — настоящее удовольствие! Вот мои любимые shell-лайфхаки, которые всегда под рукой.
- 1 mkd: создаём папку и сразу заходим в неё
- 2 prompt: меняем приглашение командной строки за секунду
- 3 trim: избавляемся от пробелов в начале и конце строк
- 4 rgrep: ищем текст сразу во всех файлах и папках
- 5 ucase/lcase: меняем регистр — мгновенно и сколько угодно раз
- 6 today: узнаём сегодняшнюю дату в удобном формате
- 7 filesize: быстро находим самые тяжёлые файлы в папке
- 8 paths: делаем PATH наглядным — лишнего не спрячешь!
1 mkd: создаём папку и сразу заходим в неё
Вот пример идеальной shell-функции: просто, понятно и сразу полезно — объясню на ней основные моменты. Обычно она объединяет ряд команд, которые вы всегда выполняете одна за другой.
Вспомните: когда вы последний раз писали mkdir для создания папки и не делали сразу cd? Согласитесь, почти никогда — так почему бы не сделать себе свой вариант mkdir, который сразу всё делает за одну команду? Вот как это выглядит:
Свои функции я храню в отдельном файле и подключаю их при запуске оболочки. Например, держу файл в ~/.config и прописываю . ~/.config/shell_funcs.sh в ~/.zshrc, чтобы они грузились автоматически.
Лайфхак: связка && нужна для того, чтобы cd сработал только если папка успешно создана. Ведь если что-то пошло не так, например не хватает прав, менять директорию бессмысленно.
Флаг -p в mkdir позволяет сразу создать всю цепочку папок, например mkd docs/letters/urgent. Плюс — если папка уже есть, ошибки не будет, и вы просто зайдёте в неё.
Ещё маленькая хитрость — аргумент “—” говорит оболочке, что опции закончились, а дальше идут именно имена каталогов. Это спасёт, если вдруг имя начинается с “-”. Встречается редко, но лучше перестраховаться.

2 prompt: меняем приглашение командной строки за секунду
Многие начинают знакомство с Linux именно с настройки внешнего вида приглашения (prompt) в терминале. В начале каждой строки shell оставляет свою “метку” — подсказку о готовности:

В этом примере в скобках отображается текущая папка, а затем знак доллара. Но вы сами вольны сделать prompt хоть минималистичным, хоть максимально полезным — всё это задаёт переменная PS1. Её можно сменить вручную (хоть на обычный “$ ”, не забудьте про экранирование!), но есть способ поинтереснее.
Моя функция делает prompt динамическим — она проверяет, работаете вы в bash или zsh. Обе оболочки позволяют вывести только последние три элемента пути, хотя делают это по-разному.
Классная деталь: я добавляю в prompt перенос строки (через переменную) — так между выводом команды и новым приглашением появляется пустая строка. Сразу видно, где заканчивается команда и где начинается ввод — это правда удобно.
В bash и zsh всё настраивается одинаково, в других оболочках (например, fish) может отличаться. Если у вас не bash и не zsh — посмотрите, как делается prompt именно там.
Почему именно функция, а не запись в ~/.bashrc? Иногда удобно быстро менять prompt — например, для скриншотов с “чистым” путем или чтобы не путать терминальные окна. А ещё классно “урезать” prompt в маленьких терминалах.

Это просто спасение, когда нужно быстро различать окна или экономить место на экране.
3 trim: избавляемся от пробелов в начале и конце строк
Вещь, которая кажется мелочью, а на практике спасает уйму нервов: функция удаляет пробелы и табы с краёв каждой строки:
В командной строке всё строится на передаче данных между командами — по конвейеру или из файла. Для этого данные должны быть аккуратными, а не все утилиты оставляют “чистый” вывод. Например, wc:

Здесь для выравнивания столбцов слева добавляются пробелы. Если передавать такие строки дальше, придётся ещё их “вычищать”. trim делает всё за вас — просто пропустите вывод через функцию, и лишние пробелы исчезнут:

Внутри работает sed, который поочерёдно убирает пробелы и табы в начале и конце строк. sed читает данные из потока, поэтому функция отлично дружит с пайпами и выводом других команд.
4 rgrep: ищем текст сразу во всех файлах и папках
Иногда функция — это просто короткая версия длинной и неудобной команды с нужными опциями. Некоторые системы уже знают такую rgrep, но на macOS её нет — и вот тут пригодится свой вариант:
Опция -I заставляет grep игнорировать бинарные файлы (иначе появятся ошибки), -d recurse идёт по всем подпапкам.
Аргумент "$@" автоматически передаёт любые ваши опции дальше — то есть пользоваться rgrep так же удобно, как и grep: rgrep -i todo равен grep -Id recurse -i todo.
Хотите понять, что реально происходит внутри? Включите временно set -o xtrace — оболочка покажет все этапы работы. Классная подсказка, если хотите допилить свой скрипт до идеала.
5 ucase/lcase: меняем регистр — мгновенно и сколько угодно раз
В любом редакторе есть смена регистра, но в командной строке Linux сделать это для файла или целого блока текста — секундное дело.
Обе функции используют tr — утилиту, которая быстро заменяет одни символы на другие по вашему желанию.
tr принимает две “маски”: что искать и на что менять. Например, “tr ‘AB’ ‘ab’” меняет ‘A’ на ‘a’ и ‘B’ на ‘b’. Есть спецсимволы — “[:upper:]” перекроет сразу все заглавные, “[:lower:]” — все строчные. Работает с любой локалью.
6 today: узнаём сегодняшнюю дату в удобном формате
О форматах дат можно спорить бесконечно, но компактная запись по ISO (например, 2024-06-09) — безоговорочный фаворит. Она уникальна тем, что такие даты сортируются правильно в любом списке — идеальный вариант для имён файлов, записей в документах, базах и вообще везде.
Функция сокращает длинную команду date до одной команды. Не нужно вспоминать коды и проценты — просто набрал today, и получил дату!
7 filesize: быстро находим самые тяжёлые файлы в папке
Мне часто нужно понять, что больше всего “съедает” место на диске. Графические анализаторы бывают громоздкими, а вот узнать, какие крупные файлы лежат прямо в текущей папке — дело пары секунд.
Всё просто: du показывает, сколько места занимают все файлы и папки, а функция отсортирует их и покажет самых “тяжёлых” сверху. Хватит терять время на ручной поиск!
8 paths: делаем PATH наглядным — лишнего не спрячешь!
Очистка переменной PATH — обязательная часть “гигиены” системы. Как только ставите новые программы, macOS или ваша ОС может запихнуть в PATH кучу несуществующих директорий. Но пока PATH — это длинная строка, разделённая двоеточиями, разобрать её глазами непросто:

Эта функция разбивает весь PATH на отдельные строчки — становится видно каждую папку:

Это отличный способ быстро просмотреть содержимое PATH, а если захотите — функция легко дополняется: можно, например, тут же проверить, существуют ли все каталоги.
Если вам понравилась эта статья, подпишитесь, чтобы не пропустить еще много полезных статей!
Премиум подписка — это доступ к эксклюзивным материалам, чтение канала без рекламы, возможность предлагать темы для статей и даже заказывать индивидуальные обзоры/исследования по своим запросам!
Подробнее о том, какие преимущества вы получите с премиум подпиской, можно узнать здесь
Также подписывайтесь на нас в:
- Telegram: https://t.me/gergenshin
- Youtube: https://www.youtube.com/@gergenshin
- Яндекс Дзен: https://dzen.ru/gergen
- Официальный сайт: https://www-genshin.ru






