Наше внимание привлёк один интересный репозиторий, который называется Modern Unix. В нём собраны, в основном, современные альтернативы классическим Unix-командам. Всего там имеется почти три десятка описаний таких команд. Надеемся, вы найдёте среди них что-то такое, что вам пригодится.



Bat



Bat — это клон cat, поддерживающий подсветку синтаксических конструкций и интеграцию с Git.

Exa



Exa — это современная замена ls.

Lsd



Lsd — это представитель программ нового поколения для вывода сведений о файлах. Эта утилита обратно совместима с ls.

Delta



Delta — это утилита, которая позволяет с удобством просматривать вывод команд наподобие git diff и git show. Она, кроме того, позволяет сравнивать файлы.

Dust



Dust — это версия команды du, отличающаяся большей интуитивной понятностью, чем эта команда.

Duf



Duf — это улучшенная замена df.

Broot



Broot — это новое средство для просмотра структуры каталогов, заменяющее команду tree.

Fd


raw.githubusercontent.com/sharkdp/fd/master/doc/screencast.svg

Fd — это простая, быстрая и интуитивно понятная альтернатива find.

Ripgrep


user-images.githubusercontent.com/200613/90223748-ecaeab80-de0e-11ea-9140-ac9219f5747c.gif

Ripgrep — это чрезвычайно быстрая альтернатива grep, которая учитывает настройки, выполненные в файле .gitignore.

Ag



Ag — это поисковый инструмент, похожий на ack, но работающий быстрее.

Fzf



Fzf — это универсальный инструмент командной строки для выполнения нечёткого поиска.

Mcfly



Mcfly — это утилита, которая облегчает работу с историей команд.

Choose



Choose — это быстрая альтернатива cut и (в некоторых случаях) awg, с которой удобно работать.

Jq



Jq — это sed для JSON-данных.

Sd



Sd — это интуитивно понятный инструмент командной строки для поиска и замены строк (альтернатива sed).

Cheat



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

Tldr


raw.githubusercontent.com/tldr-pages/tldr/master/images/tldr.svg

Tldr — это результат усилий сообщества по упрощению man-страниц и по обогащению справки практическими примерами.

Bottom


github.com/ClementTsang/bottom/raw/master/assets/demo.gif

Bottom — это очередной кросс-платформенный графический монитор ресурсов и процессов.

Glances



Glances — это средство для наблюдения за системой. Оно представляет собой альтернативу top/htop для ОС GNU/Linux, BSD, Mac OS и Windows.

Gtop


raw.githubusercontent.com/aksakalli/gtop/master/img/demo.gif

Gtop — это утилита, реализующая панель мониторинга системы средствами терминала.

Hyperfine


camo.githubusercontent.com/88a0cb35f42e02e28b0433d4b5e0029e52e723d8feb8df753e1ed06a5161db56/68747470733a2f2f692e696d6775722e636f6d2f7a31394f5978452e676966

Hyperfine — это инструмент для анализа производительности систем, работающий в командной строке.

Gping


raw.githubusercontent.com/orf/gping/master/images/readme-example.gif

Gping — это то же, что и ping, но с поддержкой вывода графиков.

Procs



Procs — это современная замена ps, написанная на Rust.

Httpie


raw.githubusercontent.com/httpie/httpie/master/httpie.gif

Httpie — это современный и удобный инструмент командной строки, реализующий HTTP-клиент и рассчитанный на эру API.

Curlie



Curlie — это сочетание мощи curl и простоты использования httpie.

Xh


raw.githubusercontent.com/ducaale/xh/master/assets/xh-demo.gif

Xh — это быстрый и удобный инструмент для отправки HTTP-запросов. Его создатели воспроизвели, насколько это возможно, замечательную архитектуру httpie, но при этом уделили особое внимание производительности.

Zoxide


raw.githubusercontent.com/ajeetdsouza/zoxide/main/contrib/tutorial.webp

Zoxide — это результат развития команды cd, более интеллектуальный, чем эта команда, создатели которого вдохновлялись z.

Dog



Dog — это дружелюбный DNS-клиент, нечто вроде усовершенствованного dig.

Какие современные Unix-утилиты вы добавили бы в этот список?

Комментарии (48)


  1. unsignedchar
    15.07.2021 16:42
    +14

    Современные Unix-команды программы с консольным интерфейсом.


    1. youROCK
      15.07.2021 20:10
      +4

      И обязательно цветным выводом! (хотя, сказать честно, я лично не считаю это плюсом)


      1. DistortNeo
        15.07.2021 20:31
        +1

        И не просто цветным, а ещё и псевдографическим (см. Bottom). И начиная с некоторого момента подобный TUI становится даже хуже нормального GUI.


    1. mistergrim
      16.07.2021 13:37
      +2

      Современные Unix-программы с консольным интерфейсом.


  1. ner0
    15.07.2021 20:13
    +8

    ни одна из современных unix-команд не запустилась в современной unix-системе


    1. 13Coconut69
      19.07.2021 12:18
      -1

      Установить не пробовали?


  1. Pilat
    16.07.2021 01:01
    +4

    ```user@host:~$ gping 8.8.8.8

    Traceback (most recent call last): File "/snap/gping/13/bin/gping", line 11, in load_entry_point('pinggraph==1.0', 'console_scripts', 'gping')() File "/snap/gping/13/lib/python3.5/site-packages/gping/pinger.py", line 313, in run _run() File "/snap/gping/13/lib/python3.5/site-packages/gping/pinger.py", line 338, in _run for line in it(options): File "/snap/gping/13/lib/python3.5/site-packages/gping/pinger.py", line 251, in _inner ping = subprocess.Popen(args, stdout=subprocess.PIPE) File "/snap/gping/13/usr/lib/python3.5/subprocess.py", line 947, in init restore_signals, start_new_session) File "/snap/gping/13/usr/lib/python3.5/subprocess.py", line 1551, in _execute_child raise child_exception_type(errno_num, err_msg) PermissionError: [Errno 13] Permission denied```

    Установлена через snap и всё равно не работает. В этом вся сущность этих современных "команд".


    1. ibrin
      16.07.2021 02:04
      +2

      так это не самодостаточные бинарники чтоли?


      1. mapron
        18.07.2021 16:10
        +2

        Пробовал dust и glances — первую не смог скомпилировать, вторую — запустить. не, поскольку «современное», там все на Go/Rust/Python, и тащит восемнадцать тыщ модулей. так что это тупо консольные утилиты, UNIX тут ни при чем (я согласен только на зависимость от libc/ncurses)


        1. DistortNeo
          18.07.2021 16:41

          У dust зависимостей, кстати, нет.


    1. DistortNeo
      16.07.2021 02:33
      +2

      В snap древняя версия от 2017 года и, видимо, там не прописаны разрешения.
      Современная написана на Rust:
      https://github.com/orf/gping
      Там один бинарник на выходе (правда, крупноват из-за стандартной библиотеки).


    1. 13werwolf13
      16.07.2021 06:18
      +8

      ставить что-то из снап и надеяться что с этим не будет проблем.. ахах, позабавил


      1. mSnus
        25.07.2021 05:45

        а как ещё правильно поставить тот же exa на CentOS 7? O:-)


        1. 13werwolf13
          26.07.2021 06:18

          для центоси же есть какие-то copr разве нет?


          1. mSnus
            26.07.2021 07:10

            я не знаю, поэтому и спрашиваю. Про snap понятно, но его заругали, а вот альтернативы мне неизвестны.


  1. sav13
    16.07.2021 06:27
    +8

    Чем хороши юникс-команды, что из них можно писать программу на шелле, запускать их конвейером и пр.

    "Новые" юникс-команды напрочь похоронили эту концепцию ради сомнительной раскраски в консоли.

    Не проще в существующие команды добавить флагов, причем сделать это однообразно?


    1. trapwalker
      16.07.2021 09:06
      +3

      Тоже подумалось, что улучшить старые команды — хорошая идея, но там такой зоопарк с параметрами… они уже совсем не однообразны. Короче, не всё так однозначно.
      Из всего этого перечня я много пользовался только jq и эта крутая штука. Не просто раскраска старой тулзы, кроме того, написана утилита хорошо, она понимает в конвеере запускается или нет и красит выхлоп опционально.
      Так что не раскраской единой, знаете ли. Постараюсь быть не предвзятым и попробовать, потом будем судить.


      1. nuclight
        17.07.2021 19:38

        А всё потому, что jq был создан не как улучшение чего-то, что улучшения не требовало, а как инструмент под конкретную область, причем которой раньше и не существовало. Вполне в духе предыдущих инструментов, то бишь.


    1. IkaR49
      16.07.2021 09:07
      +2

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


    1. dbax
      16.07.2021 10:47

      А также "старые" хороши тем, что они уже стоят на всех машинах и работают из-коробки.

      Вот разве что jq - действительно полезная тулза.


    1. nuclight
      17.07.2021 19:37

      Во FreeBSD добавляют именно так — libxo поддерживает вывод в нескольких форматах (JSON, XML, ...) и соответственном следующая в пайпе может парсить это как хочет, без дополнительных ключей.


  1. trapwalker
    16.07.2021 09:14
    -1

    По части оформления статьи есть вопрос. Я, конечно, понимаю, что сейчас пошла нехорошая мода разбавлять подобного рода статьи в сети ТОННАМИ воды, на этом фоне ваша лаконичность похвальна. Однако, она бы стала чуть более удобоваримой, если бы вы не набивший к концу статьи оскомину шаблон: "{cmdname} — это .....". Название уже есть в заголовке. Оно же может быть и ссылкой, или заверните в ссылку специальный символ (U+1F517​) рядом и всем будет понятно куда нажимать.


  1. dbax
    16.07.2021 09:25
    +2

    По-моему, я уже неоднократно видел подобные статьи на Хабре...


  1. igrishaev
    16.07.2021 09:37
    +1

    Цветной вывод и рамочки сводят к нулю философию UNIX. Придется искать ключи, чтобы отключить их. Иди они в одно место.


    1. WST
      16.07.2021 15:31
      +3

      Ну тот же bat форматирует вывод только если stdout является терминалом. А duf имеет ключ для вывода в JSON, которого не имеет обычный df. Так что использование как минимум некоторых из указанных утилит в составе скриптов вполне возможно.


  1. nihlete
    16.07.2021 10:03
    +1

    Использую ag и bat для поиска по кодовой базе ядра Linux.


  1. abar
    16.07.2021 10:54
    +2

    Справедливости ради, некоторые команды действительно могут быть удобны, если тыкаешься по своему же копмьютеру и ищешь что-то в папках или файлах. Можно жаловаться, что они херят юникс-вей, но как по мне - юникс-вей херят 60 флагов на команде ls которые невозможно вспомнить без шпаргалки, и это я ещё не начал вспоминать tar.

    Да, половину современных CI/CD систем можно заменить хорошим админом и набором скриптов на баше, но люди всё-равно выбирают почему-то поставить дженкинс и в графическом интерфейсе кликать кнопочки. Так и тут. Для автоматизации процесса лучше брать "старые" юникс команды, но средний пользователь сможем собрать из них пайплайн только по ответам на stackoverflow, и не факт что полученный франкенштейновский монстр будет работать нормально.

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

    В результате всё идет к тому, что останется "Линукс от РедХат", появится "Линукс от Майкрософт" и будет небольшая выгребная ямка "Линукса для энтузиастов", куда ни один нормальный человек не сунется.


    1. nuclight
      17.07.2021 19:40
      +1

      Это просто bloat, характерный именно для GNU/Linux, а не классических юниксов. Во FreeBSD вместо пачки ключей в стандартные утилиты добавляют libxo, которая поддерживает вывод в нескольких форматах (JSON, XML, ...) и соответственном следующая в пайпе может парсить это как хочет, без дополнительных ключей.


  1. Avokados
    16.07.2021 12:11

    Ещё и библиотек накидать на сервер придёться;)


    1. unsignedchar
      16.07.2021 13:05
      +1

      Это минимальная из проблем. Вот если серверов >10, да все под разными операционками — тащить везде этот зверинец будет интересно.


  1. unsignedchar
    16.07.2021 16:28

    Например, в debian стандартный cat входит в пакет coreutils. Чтобы вместо cat использовать bat (предположим, они совместимы по ключам, и при использовании в скриптах bat не пытается ничего раскрашивать), нужно всего лишь сделать coreutils-color, в котором все 100 программ переписаны в new style output. И пока не найдется достаточно упорного new style евангелиста — новые программы так и останутся широко известными в узком кругу.


    1. WST
      16.07.2021 17:22
      +1

      coreutils тоже бывают разные. Например, команда ls на Linux и на FreeBSD несовместимы друг с другом по флагам — одному подавай ls --color для раскрашивания вывода, другому — ls -G.
      Ну и к слову, в указанных утилитах там не одним только цветом красивости ограничиваются, там всякие отступы, рамочки. Действительно довольно-таки приятно глазу при ручной работе.


    1. TeaDove
      19.07.2021 12:18
      +1

      Я не совсем понимаю(ещё юн), но в чём собственно проблема? Bat удобно юзать при работе в терминале, cat для скриптов, их и не нужно совмещать или пытаться подружить.


      1. unsignedchar
        19.07.2021 13:02
        -1

        Лишние сущности же. Зачем учить 2 программы, которые делают одно и то же, но немного по разному? Если мне, к примеру, вздумается посмотреть на раскрашенный текст в консоли, я, пожалуй, открою его в vim.


        1. TeaDove
          19.07.2021 13:30

          Их собственно учить и не нужно, cat и bat, lsd/exa и ls и тд. работают одинакого и выдают одни и те же данные при одинаковых опциях, разница в цвете, формате и новых опциях.


  1. stumyp
    16.07.2021 18:44

    из всех вышеперечисленных использую только jq, действительно полезная штука


  1. freecoder_xx
    16.07.2021 23:27
    +7

    Bat - Rust
    Exa - Rust
    Lsd - Rust
    Delta - Rust
    Dust - Rust
    Duf - Go
    Broot - Rust
    Fd - Rust
    Ripgrep - Rust
    Ag - C
    Fzf - Go
    Mcfly - Rust
    Choose - Rust
    Jq - C
    Sd - Rust
    Cheat - Go
    Tldr - JavaScript/Python
    Bottom - Rust
    Glances - Python
    Gtop - JavaScript
    Hyperfine - Rust
    Gping - Rust
    HTTPie - Python
    Curlie - Go
    Xh - Rust
    Zoxide - Rust
    Dog - Rust

    Похоже Unix переписывается на Rust (:


  1. Kirikekeks
    17.07.2021 11:02

    Можно сделать и стандартными утиллитами нормальный вывод, и тащить .vimrc .bash_* *profile .screenrc .tmuxrc .muttrc на все свои машины, это как тащить в поход нож для суши, нож для хлеба, нож для мяса, нож для овощей... Вот никогда не куплю французскую машину. К ней не подходит купленный уже инструмент. Была шестерка, семерка, опель, фольц и инструмент спокойно кочевал из багажника в багажник, сохраняя нужность, привычки, ухватки и обрывки изоленты. Но если покупать первую француженку и нет вот этого хлама в багажнике и багаже, то почему бы и нет?


    1. unsignedchar
      17.07.2021 13:41

      Какая то сложно понятная аналогия. У французов что, гайки 5 гранные? ;)


      1. Kirikekeks
        19.07.2021 08:41

        Да. Французскую муху можно убить только специальной мухобойкой. Газеткой или шлепком - ни.. :))


    1. nuclight
      17.07.2021 19:44

      Вообще-то таскать с собой свои конфиги — это нормально. Как раз то, чем Unix всегда выгодно отличался от других, например винды с её реестром — просто и удобно.


      1. Kirikekeks
        19.07.2021 08:49
        -1

        Ну если с ансиблом как то. Мне в итоге оказалось легче перепривыкнуть к дефолту.. "Дама сдавала в багаж. Диван, Чемодан, Саквояж, Картину, Корзину, Картонку И маленькую собачонку." И вдруг да, спасибо, путь дефолта - это Winway. Как то не подумалось и масть сменил. Видать анархисты "Сила Ночи, Сила Дня..." все таки в чем то правы.


  1. AlexZas20
    19.07.2021 12:18

    Не совсем консольная утилита , но удобный редактор micro . Там можно курсором выставить курсор ( чего очень не хватает в nano ) и подсветка кода


    1. nuclight
      28.08.2021 21:38

      Что значит "курсором курсор" ?


      1. ibrin
        30.08.2021 06:09

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


  1. sadsnake42
    19.07.2021 12:19
    +1

    У нас есть "системные администраторы", которые "если нет в стандартном наборе, то зачем оно вообще нужно", у нас есть любители GUI, которые "красноглазие это все ваши команды, там ведь надо --help смотреть" и люди, которые просто недовольны цветом в выводе. Очень конструктивно конечно.

    При этом fzf, rg и jq например - изумительный утилиты. Ими удобно пользоваться, они на порядок быстрее своих "дедушек", они куда интуитивнее (протестировано на джунах) и надеюсь со временем они проникнут в стандартные наборы, чтобы не приходилось ставить их на каждую новую машину (как люди живут с стандартным grep, ума не приложу). Но видимо пока основная реакция это какое-то снобское "нам эти ваши новоделы не нужны" придет этот момент не скоро.


    1. Kirikekeks
      20.07.2021 23:20

      ──╼ #time grep -r 'log' /{etc,usr,var} 1>/dev/null 2>/dev/null 
      
      real    1m3,988s
      user    0m22,943s
      sys     0m17,273s
      ──╼ #time rg 'log' /{etc,usr,var} 1>/dev/null 2>/dev/null 
      
      real    0m20,908s
      user    0m7,674s
      sys     0m18,566s
      

      Да, имеет смысл установить. В 5 раз быстрее. Остальное субъективно. --files-without-match не имеет сокращенной команды :-)). И опять alias rerg='rg --files-without-match', для совершенства.


  1. mSnus
    25.07.2021 05:48

    Не знаю, 7-летней давности это современное или нет, но я жить не могу без закладок на директории:
    BashMarks от Huy Nguyen или тут