Полезные консольные Linux утилиты +103


AliExpress RU&CIS

В этой подборке представлены полезные малоизвестные консольные Linux утилиты. В списке не представлены Kubernetes утилиты, так как у них есть своя подборка.


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.


Bat — это клон команды cat с дополнительной разметкой и подсветкой синтаксиса для большого количества языков программирования, а также интеграцией Git для отображения изменений файлов. Подробнее на русском.



Exa – это изящный инструмент командной строки, получивший множество похвал за то, что он является современной заменой старой доброй команде ls. И это справедливо, учитывая его способность использовать разные цвета при отображении различных типов файлов, прав доступа к файлам и прав собственности, блоков и информации inode, чтобы упомянуть лишь некоторые из них. Подробнее на русском.



Fd — это простой, быстрый и удобный инструмент, предназначенный для более простой и быстрой работы по сравнению с командой find. Подробнее на русском.



Procs — это современная замена ps, программы командной строки по умолчанию в Unix / Linux для получения информации о процессах. По умолчанию он обеспечивает удобный, понятный для человека (и цветной) формат вывода. Подробнее на русском.



Sd — это интуитивно понятный инструмент командной строки для поиска и замены, он является альтернативой sed. sd имеет более простой синтаксис для замены всех вхождений и использует удобный синтаксис регулярных выражений, который вы уже знаете из JavaScript и Python. Sd также в 2-11 раз быстрее, чем sed.



Dust — опрятная версия дефолтного du, c удобной записью памяти, цветом и отступами.



Starship — очень приятный prompt который легко накатывается поверх zsh, fish, bash и прочего.


Легкая настройка через Toml файл (https://github.com/toml-lang/toml) с кучей уже поддерживаемых форматов и конфигов (https://starship.rs/config/#prompt). Подробнее на русском.



Ripgrep — быстрый поиск с возможностью замены по содержимому в файлах, аналог GREP, ASK, написан на RUST, понимает регулярные выражения, игнорирует ресурсы указанные в .gitignore, автоматически пропускает бинарные, скрытые файлы. Подробнее на русском.



Ripgrep-all — Инструмент поиска, ориентированный на строки, который позволяет вам искать по регулярному выражению во множестве типов файлов. Ripgrep-all является оберткой над ripgrep и позволяет ему искать в pdf, docx, sqlite, jpg, субтитрах фильмов (mkv, mp4) и т. д.



Grex — это инструмент командной строки и библиотека для генерации регулярных выражений из предоставленных пользователем тестовых примеров. Созданное регулярное выражение имеет синтаксис PCRE.



Fzf — инструмент для "фильтрации" любых списковых данных в консоли. Может использоваться для фильтрации списка файлов, истории команд, процессов, hostnames, коммитов и прочего. Подробнее на русском.



Jq — это легкий и гибкий JSON-процессор командной строки. Подробнее на русском.



Peco — инструмент, способный сильно облегчить навигацию, а также поиск. Это небольшая утилита, которая принимает на вход список строк и выводит на экран псевдографическое меню, с помощью которого можно выбрать или найти нужную строку. Далее peco отдает эту строку на выход и завершает свою работу (по сути, это консольный аналог dmenu). Подробнее на русском.



HTTPie — HTTP клиент для командной строки, с поддержкой json, понятным интерфейсом, подсветкой синтаксиса и прочим. Подробнее на русском.



xh — удобный и быстрый инструмент для отправки HTTP-запросов. Он в максимально возможной степени воплощает превосходный дизайн HTTPie.



Rebound — это инструмент командной строки, который мгновенно извлекает результаты Stack Overflow при возникновении исключения. Просто используйте команду rebound для запуска вашего исполняемого файла.



HTTP Prompt – это интерактивный HTTP-клиент командной строки, созданный на основе prompt_toolkit и HTTPie с более чем 20 темами. Его основные функции включают в себя автоматическое заполнение, подсветку синтаксиса, автоматические куки, Unix-подобные конвейеры, совместимость с HTTpie, http-подсказка, которая сохраняется между сеансами и интеграцию OpenAPI / Swagger. Подробнее на русском.



shell2http — Простой веб сервер для удаленного выполнения команд.


reachable — инструмент, который поможет вам проверить, работает ли домен или нет.



Lazydocker — пользовательский интерфейс для управления докером. С его помощью больше не нужно запоминать команды, алиасы и следить за контейнерами через несколько терминальных окон. Всё это теперь собрано в одном окне. Просмотр состояния, логов, метрик; перезапуск, удаление, восстановление контейнеров и сервисов. Подробнее на русском.


Clog-cli — утилита для создания changelogs из истории коммитов Git.


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



mosh — утилита Mosh (сокращение от mobile shell), обладающая всеми преимуществами безопасности SSH, является более устойчивой в условиях плохих сетевых и мобильных соединений. Кроме того, данное приложение увеличивает способность к реагированию и снижает использование полосы пропускания. Создание подключения и авторизация в Mosh происходят через обычное соединение SSH, что значит, что для безупречной работы каких-либо механизмов безопасности на основе ключей нужно внести всего несколько дополнительных конфигураций. После проверки подлинности ключа Mosh начинает взаимодействие через зашифрованные датаграммы UDP, что делает сессию более устойчивой к изменяющимся клиентским IP-адресам и перебоям соединений, которые часто случаются при использовании мобильных устройств. Подробнее на русском.


ngrok — Безопасные интроспективные туннели к localhost.


teleconsole — поделитесь своим терминалом UNIX.


tmate — Мгновенный доступ к терминалу (tmux).


Lazygit — псевдографический консольный клиент для Git. Если у вас есть проблемы с восприятием основных моментов в работе с Git-репозиторием из консоли, то вы всегда можете воспользоваться графическим клиентом. Один из них — Lazygit, псевдографический клиент, написанный на языке Go с использованием библиотеки gocui. В официальном описании программы автор описывает, как трудно бывает понять, что и как нужно сделать в гите, если там больше одной ветви или коммита, и как хорошо при этом помогает разобраться его клиент. Думаю, что описывать все возможности программы нет смысла, так как что еще можно сказать про гит, кроме как «позволяет коммитить, мержить и так далее»?



GNU parallel — это инструмент оболочки для параллельного выполнения работ используя один или более компьютер. В качестве работы может быть единичная команда или небольшой скрипт, который должен быть запущен для каждой строки из полученного ввода. Типичным вводом является список файлов, список хостов, список пользователей, список URL, список таблиц. В качестве работы может быть команда, которая считывает по трубе (pipe). GNU parallel затем может разбить ввод на блоки и передать блоки по трубе параллельно в каждую команду. GNU parallel может заменить вам программы xargs и tee. А также не только заменить циклы (loops), но и сделать их выполнение более быстрым за счёт параллельного выполнения нескольких работ. Подробнее на русском.


Bottom — консольное приложение для мониторинга процессов и загрузки системы. Подробнее на русском.



Bandwhich — net monitor с раскладкой по процессам, который работает и на FreeBSD.



Delta — Средство просмотра для вывода git и diff. Подробнее на английском.




mtr — MyTraceRoute Великолепная замена traceroute и аналогам


gdu — Более шустрый и фичастый аналог ncdu (ncurses du), на Go. Удобнее штатного du, при разборах «куда же делось свободное место».


Dog — это красивый DNS-клиент командной строки для поиска DNS, который работает как dig. Он имеет красочный вывод, понимает обычный синтаксис аргументов командной строки, поддерживает протоколы DNS-over-TLS и DNS-over-HTTPS и может генерировать JSON.



dnsmeter — это инструмент для тестирования производительности сервера имен и инфраструктуры вокруг него. Он генерирует DNS-запросы и отправляет их через UDP на целевой сервер имен и считает ответы.


Gitleaks — это инструмент SAST для обнаружения жестко закодированных секретов, таких как пароли, ключи API и токены в репозиториях git. Gitleaks — это простое в использовании универсальное решение для поиска секретов прошлого или настоящего в вашем коде.


localtls — DNS-сервер для предоставления TLS веб-сервисам на локальных адресах


fx — альтернатива jq для обработки JSON из командной строки. Подробнее на русском.



dnspeep — простая утилита, которая позволяет просмотреть DNS запросы.



Dive — инструмент для изучения образа Docker, содержимого слоев и поиска способов уменьшить размер вашего образа Docker/OCI.



datanymizer — Мощный анонимайзер базы данных с гибкими правилами. Подробнее на русском.


termshark — консольный интерфейс терминала для tshark, вдохновленный Wireshark



sysinfo — Скрипт на основе Python для получения системной информации из Linux.


SSH-Attack-Stats — Простой скрипт, который будет запущен в MOTD на сервере Linux и сообщит вам статистику атак.



dry — менеджер для Docker, по ощущениям гораздо быстрее и отзывчивее чем «LazyDocker»


gh — утилита для работы с GitHub из консоли, например можно создать Pull Request


gitlab — аналогичная утилита для работы с GitLab (неофициальная)


watch — запуск любой команды каждые N секунд, позволяет на раз-два сделать реалтайм мониторинг в консоли


runnel — автоматический запуск туннелей SSH с переподключением при обрыве соединения


Ниже утилиты и краткое описание со статьи Sysadmin-util: полезные инструменты для системных администраторов Linux. Подробнее об этих утилитах вы найдете в этой статье.


Ago — Данный инструмент выводит в удобочитаемом формате информацию, как давно файл или каталог были изменены.


Cronic – инструмент запускает команду тихо, пока не завершится неудачей, т.е. он запускает команду и скрывает STDOUT и STDERR, если она успешно завершается. Это полезно для заданий cron.


cidr2ip — Он преобразует блоки CIDR в составляющие их IP-адреса.


collapse — Инструмент collapse удаляет пустые строки и строки, содержащие пробелы, из заданных файлов.


dupes — Инструмент dupes сообщит о идентичных файлах. Это поможет вам найти дубликаты файлов, которые содержат то же самое содержимое. Утилита сравнивает у файлов хэш SHA1 .


empty-dir — Этот инструмент проверит, является ли данный каталог пустым или нет.


expand-ipv6 — Этот инструмент расширяет указанные сокращенные / сжатые адреса IPv6 до их полной формы. Это может быть полезно при настройке DNS.


multi-ping — Это многопротокольная оболочка ping. Он используется для проверки подключения удаленного хоста независимо от того, является ли он хостом IPv6 или IPv4. Значение: если пульт использует IPv4, он вызывает команду ping для проверки возможности подключения. Если удаленный хост использует IPv6, он вызовет команду «ping6».


pyhttpd — Это простой HTTP-сервер на Python, который позволяет мгновенно настроить базовый web-сервер.


randpass — Утилита randpass используется для генерации случайного пароля из командной строки.


since — Он показывает любой новый контент с момента последнего чтения файла. Это полезно для отслеживания файлов журнала.


ssl-expiry-date — Отображает дату истечения срока действия сертификата SSL данного домена или хоста.


timeout — Это позволяет пользователю выполнить команду для определенного интервала и уничтожить ее.


until-error & until-success – повторять команды до тех пор, пока не произойдет сбой или успешно выполнится


when-down & when-up – ждет, пока хост не упадет/ поднимется


mysql-slave-check – выяснить, является текущий хост – ведомым или нет


which-shell – определить оболочку, под которой мы работаем, и т. д.


Утилиты из пакета Moreutils:


sponge — «губка» для стандартного ввода. Подробнее на русском


Утилиты ниже взял из канала https://t.me/SysadminNotes


ssh-config — простая штуковина, позволяющая работать с конфигом SSH.


ssh-tools — набор из нескольких утилит. Проверяем удалённые хосты, получаем информацию о них и т. п.


assh — серьёзный инструмент, который позволяет иначе взглянуть на привычную работу с SSH. Тут вам и регулярки, и возможность использования шаблонов, хуки, работа с конфигом SSH клиента. Причём, lib-ssh запускает assh через ProxyCommand, а значит что весь этот функционал мы можем использовать и с scp, и c rcync'ом, и с git'ом, например.


domain-check-2 — Простой скрипт для проверки срока истечения важных для нас доменных имён. Подробнее на русском


[pingtop]() — интересная top утилита, с помощью которой можно пинговать несколько сайтов одновременно. Подробнее на русском


red — весьма интересный анализатор логов. Пайпим ему json выхлоп и получаем статистику по зафиксированным там событиям.



Watchman — Позволяет отслеживать состояние файлов, и по мере их изменения триггерить нужные действия, если потребуется (запускаем что-то, собираем что-то, уведомляем и т. п.).


localstack — протестировать что-то предназначенное для AWS локально


txeh — Библиотека Go и утилита CLI для управления /etc/hosts.


mkchain — Утилита, с помощью которой можно составить цепочку сертификатов, из присланных от центра сертификации файлов.


Asn — удобная утилита для отображения информации об IP и домене.



tlog — Инструмент для записи / воспроизведения терминального ввода-вывода и сессий. Подробнее на английском


frp — Быстрый обратный прокси-сервер, который поможет вам открыть доступ в Интернет к локальному серверу за NAT или брандмауэром.


tunnelto — Разместите свой локальный веб-сервер в Интернете с помощью общедоступного URL-адреса.


pd.sh — интересная штука для дебага пйплайнов. Подсовываем скрипту наш набор команд, и получаем информацию о том, как пайплайн отрабатывает и в каком месте возникает ошибка, если такое происходит.


logtop — утилита, которая выводит top IP адресов, анализируя логи веб-сервера. Это для тех, кому не очень хочется однострочник на bash писать c awk, sort и uniq.


Choose — аналог cut и awk '{print $N}'. Авторы, к слову, утверждают что работает штука значительно быстрее перечисленных аналогов.



whatfiles — простая и удобная утилита, которая покажет, с какими файлами работает тот или иной процесс в системе. Этакий упрощённый вариант strace'а.


topngx — этакий top для Nginx. Утилита анализирует логи и выдаёт администратору итоговую статистику. По сути, это аналог другой утилиты — ngxtop, правда эта уже давно не поддерживается.


SSHHeatmap — Создает тепловую карту IP-адресов, которые сделали неудачные попытки входа в систему по SSH.


desed — Отладчик для Sed: отлаживайте сценарии sed, не выходя из вашего терминала.


3mux — Терминальный мультиплексор, вдохновленный i3


frontail — утилита для трансляции логов по http\https. Удобно использовать в случаях, когда нужно быстро, в браузере, показать содержимое какого-либо лога и его изменения в реальном времени. Подробнее на русском


critic.sh — Суровое тестирование bash скриптов. Выглядит не менее интересным даже в сравнении с shellcheck


jql — Вместо jq можно попробовать jql для работы с JSON.


asciicast2gif — утилита для конвертации ascii кастов, в обычную gif анимацию. Подробнее на русском


Nginx-builder — инструмент, который автоматизирует сборку Nginx с нужными модулями. Описываем всё в yaml, запускаем сборку и получаем готовый rpm или deb пакет


linux-exploit-suggester — Быстрый аудит сервера на возможность применения эксплойтов



linux-exploit-suggester-2 — Подсказка эксплойтов ядра Linux нового поколения



ssl-cert-check — делаем простой мониторинг SSL с уведомлениями на email о необходимости продления сертификата. Подробнее на русском


jl — Удобная утилита для парсинга\чтения JSON логов


Wondershaper — утилита для настройки ограничений скорости сетевого интерфейса на сервере. Подробнее на русском


mkcert — удобная штука, с помощью которой можно у себя на локалхосте для часто употребляемых тестовых имён выписать валидный сертификат.



https-portal — Полностью автоматизированный сервер HTTPS на базе Nginx, Let's Encrypt и Docker.


httpsat — утилита, которая позволяет получить статистику доступа к нужному сайту. Скрипт работает с cURL’ом, и поддерживает многие доступные в нём опции при соединении. Подробнее на русском


GeoLogonalyzer — И вот ещё занятный анализатор логов, который на основе asn, гео, и некоторых сопутствующих данных выявляет аномалии и сообщает о них. Например, если пользователь много раз заходил с одного IP адреса, но внезапно зашёл с другого (причём из другой подсети вовсе, либо из другой географической точки), анализатор сформирует отчёт об этом.


graphpath — Утилита для быстрого построения ASCII схемы сети прямо в терминале.



Sosreport — утилита для сбора информации о текущем состоянии системы. Удобно использовать самому в рамка первичного осмотра, удобно попросить клиента выполнить команду и прислать отчёт, готовый для изучения. Подробнее на русском



Fatrace (file access trace) — простая и удобная в использовании утилита для мониторинга текущей активности в системе. Отлично подойдёт для тех случаев, когда strace или blktrace оказываются избыточны. Подробнее на русском



httping — простая утилита, с помощью которой можно «пинговать» сайт по определённому адресу и получать общую (а при необходимости подробную) статистику по ответу и доступности. Подробнее на русском



Bashdb — утилита-дебаггер для bash скриптов. Дебаг скриптов задача не частая, но если она стоит, то на bashdb имеет смысл обратить внимание. Подробнее на русском



Goaccess — функциональный анализатор логов, который может работать с ними в реальном времени, визуализировать информацию и отдавать её в разных форматах. Доступен для установки на большинстве популярных дистрибутивов прямо из репозиториев. Подробнее на русском



testssl.sh — это скрипт, который позволяет протестировать SSL сервис и вывести подробную статистику по нему. Это как SSLlabs, только имеется возможность проведения проверки разных сервисов. Кроме того, для скрипта доступен простой веб-интерфейс. Подробнее на русском



iprange — Обнаружилась очень удобная утилита для работы с подсетями и IP адресами. Умеет вычислять нужные подсети из разных диапазонов, что порой бывает необходимо, например, при работе с ipset и фаерволом на сервере.


container-diff — утилита для сравнения образов контейнеров. Сontainer-diff умеет анализировать и учитывать при сравнении историю образа, файловую систему, пакеты apt, pip и npm. Выглядит очень удобно для отслеживания изменений в рамках одного контейнера, либо для сравнения двух разных образов.


https://gist.github.com/agarzon/5554490 — Скрипт для проверки присутствия IP в различных DNSBL


Prochunter — хорошая утилита для поиска скрытых процессов, запущенных в системе. Подробнее на русском


netutils-linux — это набор утилит для мониторинга и тюнинга сети. Подробнее на русском.



Sysdig — удобный и функциональный инструмент, дающий администратору широкие возможности для сбора информации о работающей системе. Подробнее на русском


ioping — очень простая, но при этом удобная утилита для быстрой проверки отзывчивости дисковой подсистемы. В CentOS ставится из репозитория EPEL. Подробнее на русском


ctop — полезная *top утилита для мониторинга работы контейнеров.



hstr — от англ. history, инструмент для просмотра истории команд.



pastebinit — инструмент командной строки в Deb-системах для отправки данных на "pastebin", сайт, который позволяет пользователям размещать отрывки текста для публичного просмотра. Подробнее на русском


fpaste — инструмент командной строки в RedHat-системах для отправки данных на http://fpaste.org/, сайт, который позволяет пользователям размещать отрывки текста для публичного просмотра.


ShellCheck — инструмент статического анализа shell скриптов. Подробнее на русском


Eternal Terminal — удаленная оболочка, которая автоматически переподключается. Подробнее на русском


P.S. Пишите утилиты, которые стоит добавить в список.


P.S2. На написание этого поста навеял телеграм канал https://t.me/SysadminNotes где публикуются подобные интересные утилиты

Теги:




Комментарии (103):

  1. Anthrax_Beta
    /#22936174

    вместо mosh можно использовать обычную связку ssh+ screen

    • PlatinumThinker
      /#22936350 / +4

      главная особенность у mosh в том что он работает поверх UDP о чём в статье забыли упомянуть. Т.е. с менее стабильным интренетом будет работать проще чем с обычным ssh поверх tcp который будет отваливаться и тебе прийдётся переподключаться. ssh + screen насколько помню решает только проблему с тем что сессия не потеряется

    • youROCK
      /#22937126

      Из-за того, что mosh не сохраняет локальную историю, по факту даже с mosh пригождается tmux или screen. Как уже упомянули выше, главные преимущества mosh это предиктивное эхо (по сути практически до 0 устраняет задержку при вводе текста) и возможность переключать сеть и прочее не теряя сессию.

      • lockywolf
        /#22938786

        Сам mosh давно хочу попробовать, но не пробовал.

        Пользуюсь связкой autossh+screen, которую обычно называют rscreen.

      • blind_oracle
        /#22939658

        При этом скроллить в скрине или тмуксе тот еще ад. Поэтому пришлось отказаться от мош и подобного т.к. локальный скролл просто необходим...

    • /#22938808

      mosh + tmux гораздо круче, чем ssh + screen.

  2. DeeZ
    /#22936264 / +1

    Если серверов большое корреспондент, то установить все это будет не возможно по разным причинам. По этому намного полезнее уметь и знать дефольные утилиты

    • grub-itler
      /#22939258

      Они не столь опрятны и приятны. К тому же уныло монохромные!

  3. Catslinger
    /#22936426

    parallel забыли.

  4. quaer
    /#22936668 / +3

    Bat
    Exa
    Fd
    Procs
    Sd
    Dust
    Starship
    Ripgrep
    Ripgrep-all
    Grex
    Fzf
    Jq
    Peco
    HTTPie
    Rebound
    HTTP Prompt
    shell2http
    reachable
    Lazydocker
    Clog-cli
    Gotty
    mosh
    ngrok
    teleconsole
    tmate

    «Интуитивно понятные» названия, если выражаться слогом статьи.
    Как можно догадаться что они делают?
    Как можно догадаться какую надо использовать, если надо что-то сделать?
    Почему программисты не следуют советам, которые сами же дают другим программистам по наименованию?
    Или пользователи это другое?

    • Catslinger
      /#22936688

      Тут 2/3 названий это минимальная модификация названия старой программы, которую заменяют. А старое название зародилось ещё когда 640кб хватало всем.

      • quaer
        /#22936890

        Fd — это простой, быстрый и удобный инструмент, предназначенный для более простой и быстрой работы по сравнению с командой find.

        Sd также в 2-11 раз быстрее, чем sed.

        Судя по новым названиям, теперь счёт на биты идёт?

      • unsignedchar
        /#22937390 / +2

        Особенно ls (LiSt of files) -> exa (wtf??) интуитивно понятно (coвсем нет).
        Также sed (Stream EDitor) — -> sd (sd card?? )
        find -> fd (File Descriptor??)

        • Arris
          /#22937792

          exa — вероятно, examine (files)

          • ne_zabudka
            /#22939122

            EXtended Attributes

            • unsignedchar
              /#22939138

              А lsattr что за атрибуты показывает? ;)

              • ne_zabudka
                /#22939292

                По первому предположению:


                exa -ld@ D[er]*
                drwxr-xr-x@ - nez 16 апр 19:37 Desktop
                                               L-- security.selinux (len 37)
                drwx------@ - nez  3 апр 20:12 Dropbox
                                               L-- user.com.dropbox.foldericon (len 13)

                Значит имелись ввиду расширенные атрибуты системной информации, а не файла

        • RumataEstora
          /#22938784

          Посмею добавить свое смешное мнение.


          exa (examine) — скорее экспрессивное "че за...?!"
          ls (list) — скорее нейтральное "а хто тута?"


          Имел случай, когда по какой-то причине в некотором каталоге накопилось более 40К файлов. ls — падал, даже ls -Uне помог, только find -type f. Интересно, в таком разрезе, как некоторые из предлагаемых, несомненно прекрасных, утилит справляются с такими проблемами?

          • unsignedchar
            /#22939038

            Скорее всего, в программе на C используется статический буфер, размера которого должно хватить всем. Если так не делать (на любом языке) — не будет этой проблемы.

          • polar_yogi
            /#22940452

            Это очень странно, 40 тысяч файлов — не так много, у ls не должно возникать таких проблем, тем более у ls -U.
            Только что для примера нагенерил миллион файлов со средней длинной имени >100 символов — всё ок.
            ls без маски использовался? Обычная ситуация, когда маска раскрывается в слишком длинный список и шелл не может запустить команду, но это не проблема ls.
            $ ls *
            bash: /bin/ls: Argument list too long


    • acidhouse
      /#22936998 / +1

      Хорошие названия консольных утилит краткие и уникальные

      • quaer
        /#22937678

        Уникальные? fd — уникальное название? sd?

        • acidhouse
          /#22937790

          Ну у меня таких команд в системе нет

    • youROCK
      /#22937130

      Командная строка не предоставляет средств для легкого изучения новых команд, к сожалению. Их прежде всего должно быть легко и быстро печатать, а сами команды и их свойства можно нагуглить при желании :).

    • Nalivai
      /#22937366 / +2

      Команды нужны чтобы их набирать, поэтому названия должны быть максимально короткими

      • quaer
        /#22937666 / -3

        Зачем их набирать? Автодополнение уже изобрели.

    • DirectoriX
      /#22937508 / +6

      Как можно догадаться что они делают?
      Как будто стандартные команды имеют очевидные названия… Почему cat, если должен быть concat, при чём здесь котики? Почему вывод строк в обратном порядке — tac, а не reversecat? ls??? ps??? Не зная истории, как догадаться, что grep — это поиск регулярными выражениями? Может, [ — хорошее название?

      • quaer
        /#22937662 / -2

        С тех пор написаны книги по лучшим практикам программирования.
        Почему бы им не последовать?

        • DirectoriX
          /#22937732 / +1

          Многие вмето использования ip доустанавливают ifconfig потому что «20 лет пользовались и всё нормально было, что переходить-то», а вы названиями недовольны…
          Кстати, в PowerShell названия многих команд вполне логичные и осмысленные, но неудобные до жути

      • vyo
        /#22941626

        Я бы сказал, что конкретно [ — не такое уж и плохое название — при написании конструкций вроде [ -lt $a $b ] выглядит вполне прилично, маскируясь под синтаксис языка (и в итоге породив [[ ]], которое уже настоящий синтаксис). А если не устраивает такая форма, можно использовать test, менее "магическое" название той же утилиты.

    • mSnus
      /#22938314

      Вот-вот, у меня ощущение, что я наткнулся на сундук с бриллиантами, но не могу их взять — из рук выскальзывают (( как всё это запомнить?? И если потом привыкну к ним, как работать с системой, где это все не установлено? (

      • lockywolf
        /#22938792

        Переформатировать статью в формат fortunes, добавить в /usr/share/games/fortunes/commands-2021. Юмористические списки из запуска fortune убрать.

      • elfukado
        /#22939146

        Мне кажется, что удобнее будет сделать автозамену и не париться с запоминанем. Как с классическим ls:
        alias ls='ls --color=auto'

        • lioncub
          /#22952804

          alias ll='ls -alF'
          alias la='ls -A'
          alias l='ls -CF'

          в ubuntu по умолчанию

      • cepera_ang
        /#22939272

        Надо просто по одному добавлять инструменты. А ещё, запомнить помогают такие штуки как Anki — можно туда набить карточек с вопросами "Если я хочу получить список файлов, какая команда в терминале мне нужна?" на разные лады и с перечислением всяких полезных опций, то благодаря тому, что это активное вспоминание и идёт по правильному расписанию, содержимое вбивается в мозги просто замечательно.


        А работать с системой, где это не установлено также, как обычно — с меньшим удобством. Такой же вопрос можно про любые улучшения задать — "А если я привыкну ездить на лифте, то как потом буду по лестнице ходить? И если привыкну есть ножом и вилкой, то как потом руками есть, если их не будет? А если привыкну печатать на клавиатуре, то как набирать на тачскрине?"

        • Oxyd
          /#22943344

          Надо просто по одному добавлять инструменты. А ещё, запомнить помогают такие штуки как Anki — можно туда набить карточек с вопросами "Если я хочу получить список файлов, какая команда в терминале мне нужна?" на разные лады и с перечислением всяких полезных опций, то благодаря тому, что это активное вспоминание и идёт по правильному расписанию, содержимое вбивается в мозги просто замечательно.

          Ну мне больше нравится mindforger, так что если я что-то забываю, потому что редко пользуюсь, я заглядываю в свои блокнотики и всё становится хорошо! Главное не забывать записывать и правильно расставлять хэштеги!

          • mSnus
            /#22943364

            Ух ты, спасибо! А то я уже в Трелло стал запихивать "базу знаний"!

          • cepera_ang
            /#22943546

            Да тут не принципиально, главное чтобы был механизм для активного вспоминания по расписанию — это даёт 95% эффекта, а конкретная форма — остальные 5%.


            Правда навскидку в mindforger'е такого не вижу, больше похоже просто на инструмент для заметок, но может проглядел.

  5. Serge78rus
    /#22936714 / -3

    Может быть лучше не приводить демонстрацию работы консольных команд в виде анимации? Не знаю у кого как, но у меня от такой подачи рябит в глазах и я с трудом узнаю вывод даже хорошо знакомых утилит.

    Отнюдь не претендую на истину в последней инстанции, но я бы предложил строку вызова давать в виде текста. Тогда ее всегда можно скопировать в консоль и тут же поиграться с параметрами. А результат работы уже можно представить по разному:

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

  6. abogushov
    /#22936824

    Заменил httpie на xh и еще активно пользуюсь lazygit.

  7. uvelichitel
    /#22936936 / +1

    Больше половины списка написано на Rust. Это тенденция в консольном новострое или автор специально так подбирал?

    • youROCK
      /#22937136 / +2

      Кажется, что Rust (и, в меньшей степени, Go) очень хорошо подходит для написания небольших и очень производительных консольных утилит, так что ИМХО выбор языка вполне оправдан в 2021 году-то :).

      • mpa4b
        /#22942454

        Недавно тут статья про exa была, и выяснилось, что в отличие от ls эта самая exa в размере в 10 раз больше чем ls, и при этом тянет кучу системных библиотек, в отличие от ls, которая только libc тянет. Так что нет — ни разу не 'небольших'.

        • youROCK
          /#22942466

          А какой примерно размер у ls и у exa? Если, допустим, ls весит 500 Кб, а exa 5 Мб, то ИМХО всё равно можно считать бинарник небольшим, поскольку функциональность не сравнить, стартует он всё равно мгновенно, даже если «на холодную», и т.д. Если это 5 Мб против 50, то тут уже наверное можно о чём-то поспорить, но я лично не верю, что там бинари настолько большие получаются.

          • EmmanuelGoldstein
            /#22943380

            Не принципиально много в современном мире.


            $ du -h =exa
            836K    /usr/bin/exa

    • cepera_ang
      /#22937164 / +1

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

    • v0rdych
      /#22937186 / +1

      Что-то мне подсказывает что есть связь с https://zaiste.net/posts/shell-commands-rust/ :-)

      • uvelichitel
        /#22937272

        Спасибо за ссылку. Нашел там github.com/imsnif/bandwhich — net monitor с раскладкой по процессам, который работает на FreeBSD. Раньше такого не видел, потому что у FreeBSD нет /proc и стандартные утилиты мира linux вроде NetHogs не умеют per_proccess. Этот bandwhich умеет. BSDшникам рекоммендую.)

        • chemtech
          /#22939382

          Добавил. Спасибо. Есть ли какие-либо еще преимущества, кроме FreeBSD и кроме раскладки по процессам?

    • Gordon01
      /#22939320

      Потому что на расте быстрее и проще написать подобные утилиты

  8. Alexey2005
    /#22937036

    Подробнее на русском myroad.club/kak-ispolzovat-komandu-fd-v-linux
    Точно на русском? Слова-то вроде все русские, а вот текст в целом выглядит странно, и не во всех предложениях вообще есть смысл:
    Он имеет упрощенный синтаксис, использует разумные значения по умолчанию и обладает встроенным поведением здравого смысла. Давайте пройдем его темпами.
    fd команда не предназначена для замены традиционный find команда, которая имеет был на линуксе, ну вечно

  9. RumataEstora
    /#22937216 / +2

    Красиво, но пёстровато. У всех этих утилит есть несомненно большой недостаток — они написаны на достаточно экзотическом языке и требуют отдельной установки, которого по умолчанию в системе нет. Мне встречались системы без perl, хотя, к счастью, там были команды из "великой тройки", то есть grep/sed/awk.

    • AnthonyMikh
      /#22937440 / +3

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

      Rust — компилируемый язык. Если вы ставите эти утилиты из репы вашего дистрибутива, то никакого Rust-специфичного рантайма в системе не будет.

    • Serge78rus
      /#22937448 / +1

      jq в репозитории Debian есть абсолютно точно.

      • unsignedchar
        /#22937476

        Не могу вспомнить ни одной программы из Debian, которой на входе или выходе необходим json. Для всяких web API это почти стандарт, да.

        • Serge78rus
          /#22938300

          Именно «для всяких web API», если их надо обработать bash-ем: curl выдает на выходе json, а дальше в конвеер ставим jq.

  10. Sergey_zx
    /#22938342

    А многие ли работают в командной строке?
    Я умею это и понимаю, что есть ситуации когда оно нужно.
    Но по моему это скорее исключение.
    А реально что то делаешь или в графической среде или, если совсем беда, в MC и ему подобном.

    По крайней мере я использую все утилиты командной строки только в скриптах. А там мне без разницы насколько оно красивее и изящнее. Важно лишь что бы данная утилита имелась в наличии.

    • TheKnight
      /#22938816

      А многие ли работают в командной строке?

      Ну допустим я.
      Вообще, это удобно, если уметь.
      К примеру, как бы вы решали задачу взять json(массив записей), вытащить из него авторов каждой записи(они там прописаны), посчитать число записей на автора и отсортировать их по убыванию? Можно конечно написать скрипт на Python, а можно воспользоваться утилитками командной строки, включая приведенный тут jq.
      Аналогичная задачка — быстро найти закоммиченные в VCS симлинки. Здесь нет на самом деле привязки к VCS, просто поиск симлинков в директории был интересен именно для этого.

    • arheops
      /#22938850

      mc хорошо, пока вы новичек.
      А после какого-то количества лет работы с linux большинство вещей быстрее сделать через консольные команды.
      К тому же, написанный однострочник командами можно потом запихнуть в скрипт, а вот список действий из MC — врятли.

      • vagon333
        /#22939010

        Пользуюсь и mc и far2l.
        far2l, как более функциональная замена mc.

  11. ss-nopol
    /#22938568

    Стандартные утилиты имеют свои проблемы и порой кажутся неудобными, но их неоспоримое преимущество в том что они вылизаны и стандартизованы, причём уже очень много десятков лет. Они предустановлены в любой ГНУ/Линукс системе и других поддерживающих соответствующие стандарты. Для них вы найдёте тысячи готовых рецептов почти для любой мыслимой задачи.

    Хотя, возможно, стандарты и пора расширить и углУбить.

  12. eumorozov
    /#22938942

    Есть еще отличный набор утилит moreutils:
    https://ostechnix.com/moreutils-collection-useful-unix-utilities/


    Правда из него чаще всего использую только sponge. Но одна только эта утилита полностью оправдывает установку пакета.


    Еще из дополнительных использую delta:
    https://dev.to/cloudx/delta-a-new-git-diff-tool-to-rock-your-productivity-2773


    Раскрашивает вывод diff, может выводить diff разными способами (например, в две колонки с изменениями).


    Что касается некоторых из описанных утилит, то некоторые вообще не зашли. exa, например: от ее вывода в глазах рябило. Раскрашенный ls для меня комфортнее. bat тоже применения не нашёл. Больше похоже на игрушку, нежели на реально полезный инструмент.

    • chemtech
      /#22939652

      Добавил sponge. Спасибо.
      Как вы бы описали утилиту sponge?

    • RumataEstora
      /#22940022

      Sponge легко эмулируется с помощью awk, также perl, который есть почти всегда, и python и другими, которые иногда уже установлены по умолчанию.


      Например, https://github.com/ildar-shaimordanov/perl-utils#sponge

      • Oxyd
        /#22941458

        Если внимательно подумать, то и редирект в какой-нить


        dd bs=$(cat /proc/meminfo|head -n2|sed '1d;s/^MemFree\:\s*//;s/ kB$//') of=/dev/stdout

        сойдёт. ;-) Ну это если памяти не жалко. Зато засосёт что твой Спанчбоб, и есть везде.

        • RumataEstora
          /#22942440

          Как Вы сложно выразились в субшелле. Можно ж было проще, например так:


          cat /proc/meminfo | awk '/MemFree/ { print $2 }'

          • RumataEstora
            /#22942942 / +1

            И даже cat лишний:


            awk '/MemFree/ { print $2 }' /proc/meminfo

          • Oxyd
            /#22943352

            Да. Вечно я про возможности awk забываю… :( Использую, в основном, как калькулятор числовых значений из всяких табличек.

  13. shiftdevy
    /#22939238

    Есть ещё bottom, — конфигурируемый аналог htop на Rust.

    • chemtech
      /#22939368

      Добавил. Спасибо. А вы пользуетесь bottom?

  14. khazhinov
    /#22939370 / +1

    Спасибо!
    Но единственный минус привыкания к новым утилитам в замен старым — их нужно ставить
    Когда у тебя 10+ серверов в разных инфраструктурах и ты привыкаешь к таким вариантам — эффективность использования консоли может резко упасть на нет

    Пока писал комментарий, понял — нужно написать утилиту «установщик», которая умеет смотреть в репозиторий для подтягивания конфига.
    Выложить эту утилиту в самые распространённые дистрибутивы, научить её подтягивать конфиг со своего репо с настройкой (так можно под рукой держать несколько репозиториев с разными пресетами) и одной командой устанавливать на сервер то, что описано в пресете.
    А ещё уметь обновляться нужно. Например — обновляешь свой пресет, логинишься в консоли и утилита автоматически посмотрит в использованный ранее пресет и увидит, что что-то изменилось и предложит доустановить.

    Если есть такое — дайте ссылку, буду очень благодарен.

    • blind_oracle
      /#22939696

      Пока писал комментарий, понял — нужно написать утилиту «установщик»

      Это называется Ansible/Chef/etc

      • chemtech
        /#22940052

        На самом деле была утилита, которая скачивала и устанавливала подобные утилиты. Но я не помню.

        • blind_oracle
          /#22940416

          А зачем велосипед то изобретать? Пишешь playbook со всеми нужными утилитами, кладёшь их в локальную репу, раскатываешь на все сервера. При изменении — повторяешь. Profit.

  15. igorp1024
    /#22939410

    Баловство, но зато интерактивное: up — the Ultimate Plumber.

  16. Oxyd
    /#22939592

    • mtrMyTraceRoute Великолепная замена traceroute и аналогам
    • gdu — Более шустрый и фичастый аналог ncdu (ncurses du), на Go. Удобнее штатного du, при разборах «куда же делось свободное место».

  17. Scf
    /#22939812

    ncdu — простой и удобный инструмент для просмотра размера каталогов и освобождения места на диске
    htop — не понимаю, как его можно не упомянуть

    • chemtech
      /#22939926

      htop, htop их же все знают. Или все таки стоит добавить?

      • Oxyd
        /#22941472

        «Плохо кончится...» © А то если в эту хтонь погружаться, пойдут всякие gotop, bashtop, bpytop… Тысячи их! Всё равно пизже связки top / htop / atop, пока ещё ничего не придумали.

  18. Metotron0
    /#22943066

    bat оказался такой себе заменой
    image

    • chemtech
      /#22943382

      Issue сделали?

      • Metotron0
        /#22945146

        Я по-английски читаю более-менее, но когда начинаю писать, то не уверен, что меня поймут.
        Написал, как сумел.

      • Metotron0
        /#22950760

        Оказывается, с весны прошлого года проблема уже известна, и с зимы ею занимаются.

  19. mSnus
    /#22943068

    А может кто посоветует… наверняка же есть утилита, чтобы в неё вбить десяток частых команд типа "systemctl restart httpd" и вызвать их через (псевдо)графическое меню или номер, вроде "shortcut 1"..?

    • Scf
      /#22943194

      Автокомплит по Ctrl+R?
      Еще можно насоздавать скриптов в ~/.local/bin

      • mSnus
        /#22943252

        да, но почему-то представлял себе такую менюшку как в mc по F2, только без mc ))

    • cepera_ang
      /#22943602

      Поставить fzf, и оно заменит Ctrl-R и там будет список команд с быстрым поиском. Можно заморочиться, добавить туда сортировку по частоте/времени использования (frecency), но готовых таких штук вроде нет. Что-нибудь такое, но отрезать для себя только нужные части

    • Oxyd
      /#22945602

      В zsh просто великолепнейший автокомплит (включая ключи и параметры), подсветка синтаксиса и вот это всё. Разумеется с плагинами, куда-ж без них. Ну а так, через fzf можно что-то такое организовать. А ещё есть всякие странные менеджеры всего подряд...

    • RumataEstora
      /#22947088

      По нарастанию гибкости использования: алиасы, шелл-функции, шелл-скрипты.

    • Kirikekeks
      /#22950890

      в .basrc алиасы и функции
      alias sreht='systemctrl restart httpd'
      но надоедает, а вот функции уже имеют смысл
      sreht () {
      nginx -t || echo "товарищь, смотри воба " && return 13
      systecmctl restart httpd

  20. Nex_Otaku
    /#22943384 / +1

    dry — менеджер для Docker, по ощущениям гораздо быстрее и отзывчивее чем «LazyDocker»
    moncho.github.io/dry

    gh — утилита для работы с GitHub из консоли, например можно создать Pull Request
    github.com/cli/cli

    gitlab — аналогичная утилита для работы с GitLab (неофициальная)
    github.com/NARKOZ/gitlab

    watch — запуск любой команды каждые N секунд, позволяет на раз-два сделать реалтайм мониторинг в консоли

    runnel — автоматический запуск туннелей SSH с переподключением при обрыве соединения

  21. jamm1985
    /#22962092

    Так, я не понял, а где nnn? )) github.com/jarun/nnn