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
:
cat file.txt
— если файл короткий,less file.txt
— если длинный и нужно листать.
Обе эти команды для меня заменил bat. Он:
- автоматически пагинируется, если вывод не влезает в экран (как
less
) — не нужно помнить, когда использовать| less
- подсвечивает синтаксис для сотен языков — от
bash
доYAML
,JSON
,Markdown
- поддерживает ввод из stdin с подсветкой через флаг
-l
:curl -s https://api.example.com/data | bat -l json
- показывает git-изменения прямо в выводе — добавленные/удалённые строки выделены цветом, как в
git diff
- отображает номера строк и границы файлов (при выводе нескольких файлов) — ничего не потеряется
Сам проект даёт себе ёмкое и точное описание:
A cat(1) clone with syntax highlighting and Git integration. То есть,
bat
это какcat
, но лучше во всём.
ncdu — понять, где и сколько места занято
На основном ноутбуке у меня не так много больших файлов — всё объёмное живёт на NAS. Но иногда хочется проверить, нет ли перекосов в использовании диска, и не скопился ли случайно мусор. Особенно на виртуальных машинах в обалке, где место ограничено (потому что дорого).
Вот тут и выручает ncdu — консольный анализатор дискового пространства.
Запускаешь:
ncdu /
— и через пару секунд видишь интерактивное дерево папок, отсортированное по размеру.
Можно:
- листать (
↑
/↓
), - заходить в папки (
→
), - удалять ненужное (
d
), - переключаться между сортировками (
s
).
Чем лучше du
или df
?
- Наглядно: не нужно вручную парсить вывод
du -h --max-depth=1 | sort -h
. - Быстро: сканирует заранее, а потом работает с кешем.
- Интерактивно: можно сразу чистить, не запуская новые команды.
Пример:
Заметил, что на одной из 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
Команда делает три вещи разом:
- Достаёт секретный ключ из
pass
по путиexample.com-totp
. - Генерирует по нему текущий шестизначный код.
- Копирует результат в буфер обмена через
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'
Читаемо. Лаконично. Без регулярных выражений.
Что умеет?
- Фильтрация (
jq '.users[].name'
) — достать нужные поля из вложенных структур. - Форматирование (
jq
) — красивая подсветка и отступы, даже если на входе JSON в одну строку. - Преобразование (
jq '.data | {summary: .stats.sum, details: .info}'
) — пересобирает JSON в нужный вам формат. - Математика (
jq '.numbers[] | select(. > 10)'
) — фильтрует, сортирует, вычисляет.
В качестве примера из жизни: получаем список запущенных Docker-контейнеров в формате «имя → IP»:
docker inspect $(docker ps -q) | jq -r '.[] | "\(.Name[1:]) → \(.NetworkSettings.IPAddress)"'
Без jq
пришлось бы писать скрипт на Python.
Ключевые ценности jq
для меня:
- Быстро: не нужно запускать интерпретатор, это важно для много-гигабайтных JSON файлов.
- Универсально: работает везде, где есть bash.
- Компактно: фильтры пишутся в одну строку.
Он не заменяет скриптовые языки, но в 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:
- паполи
- код для своей домашней инфраструктуры на Proxmox
- код для развертывания инфраструктуры
- obsidian vault с целью резервного копирования
- все свои проекты (рабочие и личные)
- с недавнего времени экспериментирую с ведением списка дел
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