20+ Linux утилит командной строки для ежедневной работы: полный обзор fzf, bat, ncdu, jq и других инструментов

(последнее обновление от )

fzf — неточный поиск

fzf позиционирует себя как:

fzf is a general-purpose command-line fuzzy finder

И это правда: он отлично ищет по файлам, процессам, истории Git — в общем, по чему угодно. Но я использую fzf только ради удобного Ctrl+R в bash.

Помните, как вы впервые увидели длинную команду с кучей опций и подумали: “я точно запомню, тут всё просто” — а через пять минут уже не помните ни флагов, ни синтаксиса? Я — тоже. Особенно когда дело доходит до таких больших команд:

sudo mount.cifs -o username=username,password=verysecretpassword,uid=$(id -u),gid=$(id -g) //nas.local/home /data/homenas

Писать это каждый раз долго и подвержено ошибкам. А можно нажать:

Ctrl+R → mou nas → Enter

— и нужная команда (или её вариации) уже перед вами.

fzf не автоматизирует задачи напрямую, как pass или xrandr. Но он — ускоритель мышления: он сокращает путь от “я что-то такое делал” до “вот оно”. fzf я пользуюсь десятки раз в течение всего дня. Ctrl+R с fzf экономит не время и нажатия клавиш, а когнитивную энергию и помогает не терять контекст.

bat — как cat, но лучше

При работе с текстовыми форматами часто используется cat и less в связке.

Постоянно переключался между cat и less:

Обе эти команды для меня заменил bat. Он:

Сам проект даёт себе ёмкое и точное описание:

A cat(1) clone with syntax highlighting and Git integration. То есть, bat это как cat, но лучше во всём.

ncdu — понять, где и сколько места занято

На основном ноутбуке у меня не так много больших файлов — всё объёмное живёт на NAS. Но иногда хочется проверить, нет ли перекосов в использовании диска, и не скопился ли случайно мусор. Особенно на виртуальных машинах в обалке, где место ограничено (потому что дорого).

Вот тут и выручает ncdu — консольный анализатор дискового пространства.

Запускаешь:

ncdu /

— и через пару секунд видишь интерактивное дерево папок, отсортированное по размеру.

Можно:

Чем лучше du или df?

Пример: Заметил, что на одной из VM /var раздулся до 10 Гб и занял половину всего диска. Запустил:

ncdu /var

Оказалось, что старые логи journald съели половину места. Удалил их прямо из интерфейса — проблема решена.

ncdu не предотвращает бардак, но делает его видимым. А значит — управляемым.

xclip — буфер обмена Linux

Один из моих рабочих паттернов — переход между GUI и CLI. Например, получаю табличку данных из Excel или веб-интерфейса, копирую её и сразу начинаю обрабатывать в терминале с помощью jq, awk, sed или csvkit. Чтобы данные из буфера попали в конвейер, использую xclip:

xclip -sel clip -o

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

После анализа результат (скажем, итоговая сумма или группировка) можно сразу отправить обратно в GUI:

xclip -sel clip -o | jq '.value' | awk '{sum+=$1} END {print sum/NR}' | xclip -sel clip

Теперь это в буфере — вставил в чат, отчёт или письмо.

xclip превращает буфер в мост между визуальным миром (браузеры, таблицы, мессенджеры) и мощью командной строки. Я перестал копировать-вставлять вручную — теперь это часть автоматизированного потока.

pass — парольный менеджер

pass — это не просто хранилище паролей. Это прозрачный и контролируемый способ управлять учётными данными в терминале. Он использует простую идею: каждый пароль — это отдельный GPG-зашифрованный файл, хранящийся в иерархической структуре папок. А сама папка с паролями — это git-репозиторий.

Установить просто:

pass init "ваш-gpg-ключ"

Добавлять пароли — естественно:

pass insert example.com

Например так можно скопировать пароль в буфер:

pass -c example.com

Или сгенерировать новый пароль (для новой регистрации или ротации существующего пароля):

pass generate example.com

Но самое мощное — это интеграция с git. Я синхронизирую свой хранилище через приватный репозиторий. Никаких проприетарных облачных сервисов, никаких подписок. Только вы, ваша GPG-ключ и контроль над данными.

pass не скрывает свою структуру. Вы можете открыть .password-store и увидеть всю внутрянку — это не бинарный чёрный ящик. И именно эта прозрачность даёт доверие.

Он не для всех. Но если вы цените простоту, контроль и open source — pass станет вашим надёжным спутником.

oathtool — TOTP для терминала

Когда все твои TOTP-ключи хранятся в pass, oathtool становится идеальным партнёром. Не нужно лезть в телефон — одноразовый код генерируется и копируется в буфер за секунду.

Пример как это работает у меня:

oathtool -b --totp "$(pass example.com-totp)" | xclip -sel clip

Команда делает три вещи разом:

  1. Достаёт секретный ключ из pass по пути example.com-totp.
  2. Генерирует по нему текущий шестизначный код.
  3. Копирует результат в буфер обмена через xclip.

Больше не нужно ничего печатать или переключаться между окнами. Просто вставил и ввёл. Работает мгновенно и идеально вписывается в любой рабочий поток.

jq — повелитель JSON

Когда работаешь с API или конфигами, JSON — это де-факто стандарт. Можно, конечно, читать его как обычный текст, но зачем мучиться, если есть jq — консольный процессор JSON, который превращает кажущийся хаос структур в удобочитаемые и обрабатываемые данные.

jq упрощает парсинг JSON в bash. Пример того как парсить без него:

curl -s https://api.example.com/data | grep "key" | awk -F'"' '{print $4}' | head -n 1

А с jq — так:

curl -s https://api.example.com/data | jq '.key'

Читаемо. Лаконично. Без регулярных выражений.

Что умеет?

В качестве примера из жизни: получаем список запущенных Docker-контейнеров в формате «имя → IP»:

docker inspect $(docker ps -q) | jq -r '.[] | "\(.Name[1:]) → \(.NetworkSettings.IPAddress)"'

Без jq пришлось бы писать скрипт на Python.

Ключевые ценности jq для меня:

Он не заменяет скриптовые языки, но в 80% случаев, когда нужно просто достать данные из JSON, jq — идеальный выбор.

Простое правило: если JSON в консоли выглядит как куча скобок — прогони через jq. Если всё ещё непонятно — значит, нужен более сложный фильтр. Но это уже другая история.

sed, awk, tr — недооцененная классика

Эти инструменты — как швейцарский нож: не блещут новизной, но решают 90% задач по обработке текста прямо в консоли.

sed* — для поиска и замены. Хочешь заменить «foo» на «bar» во всех файлах проекта?

find . -type f -name "*.txt" -exec sed -i 's/foo/bar/g' {} +

Или удалить все пустые строки из файла:

sed '/^$/d' file.txt

awk — когда нужно не просто найти, а обработать колонки. Вывести первый столбец из CSV:

awk -F',' '{print $1}' data.csv

Или посчитать сумму чисел в третьей колонке:

awk '{sum += $3} END {print sum}' log.txt

tr — для простых преобразований символов. Перевести текст в верхний регистр:

echo "hello" | tr '[:lower:]' '[:upper:]'

Или удалить все цифры из строки:

echo "abc123" | tr -d '0-9'

Их сила — в комбинации. Собрал статистику из лога, вытащил нужные данные, подготовил для отчёта — и всё одним пайпом, не выходя из терминала. Не нужен Python для одноразовой задачи.

zathura — лучший просмотр PDF

Zathura открывается мгновенно. Не тормозит даже на файлах в сотни мегабайт. Управление — с клавиатуры, всё на виду, ничего лишнего.

Ищет по тексту так же быстро, как less — просто набираешь / и вводишь запрос.

Поддерживает не только PDF, но и EPUB, DjVu, комиксы в CBZ. Всё в одном месте, без переключения между программами.

Мой базовый конфиг:

set selection-clipboard clipboard

Всё. Больше ничего не нужно. Простота, скорость и никаких сюрпризов.

mpv — лучший просмотр видео

Запускается мгновенно. Легковесный. Корректно читает любые форматы. Использует возможности hardware декодинга (когда это возможно). Управляется с клавиатуры: Space для паузы, и для перемотки, f — на весь экран.

Работает везде, где есть терминал и Xorg/Wayland (ну то есть на всех Linux системах. Мой конфиг пустой — потому для моих задач всё уже работает идеально из коробки.

Пример команды для ускоренного просмотра:

mpv --speed=1.75 video.mp4

sxiv — лучший просмотр изображений

Запускается мгновенно. Не думает над гигабайтами фотографий. Листается клавишами hjkl или ←→.

Есть вид галереи с предпросмотром по нажатию Enter.

Открывает всё: jpg, png, webp, даже анимацию. Не грузит систему, не тормозит.

В общем виде пользуюсь программой только так, без каких либо доп. опций или конфигов?

sxiv *.jpg

Просматривать все jpg в папке циклически. Больше ничего не нужно. Простота и скорость.

libreoffice — офисный клерк в окопах терминала

Я пользуюсь LibreOffice как своим основным офисным пакетом. Но его консольный режим — это малоизвестный и эффективный инструмент для автоматизации рутины.

Чаще всего я использую его не для создания документов, а для конвертации. Команда проста, как молоток:

libreoffice --headless --convert-to csv --outdir . file.xlsx

Она берёт унылый XLSX и превращает его в строгий CSV. Файлы не открываются в интерфейсе, всё происходит в терминале. Благодаря этому в частности я могу конвертировать в csv сотни файлов в csv для дальнейшей их обработки

Делаю я это, к сожалению, гораздо чаще, чем хотелось бы — когда нужно сдать отчёт в “правильном” формате или когда чья-то система не понимает ничего, кроме Excel.

Это неэлегантно, но чертовски эффективно. Работает безотказно.

cal — календарь

Это способ быстро сориентироваться по датам, не прыгая в GUI. Просто вводишь cal и по умолчанию он выведет текущий месяц. Или например cal -y 2025 что бы посмотреть календарь за весь конкретный год.

git — не только для кода, а вообще для всего

Я храню в git всё: конфиги, заметки, черновики и даже этот текст. Это машина времени и синхронизации для любых файлов — всегда можно откатиться к любой прошлой версии и посмотреть, что и когда менялось.

Базовые команды:

git branch -b new-blogpost
git add content/blogpost.md
git commit -m "new-post: linux утилиты черновик"
git diff # не задел ли я чего-то лишнего?
...
git diff master # что по итогу я сделал?
git checkout master
git merge new-blogpost

Не нужно бояться что-то сломать или потерять — всё уже под контролем. Это не система контроля версий, это система контроля над хаосом. В частности как и писал выше, passwordstore использует git как основу.

Я так же храню в git:

xrandr — настраиваем мониторы автоматически

xrandr — это способ не тыкаться в настройки дисплея каждый раз при подключении монитора. Я просто написал скрипт, который поднимает нужную конфигурацию одной командой.

Пример подключения/отключения ноутбука к монитору по USB-C сверху в дополнение к экрану самого ноутбука:

# подключение
xrandr --output DP-2 --auto --rotate normal --mode 3840x2160 --above eDP-1 --output eDP-1 --primary

# отключение
xrandr --output DP-2 --off --output eDP-1 --primary