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)
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 и всё равно не работает. В этом вся сущность этих современных "команд".
ibrin
16.07.2021 02:04+2так это не самодостаточные бинарники чтоли?
mapron
18.07.2021 16:10+2Пробовал dust и glances — первую не смог скомпилировать, вторую — запустить. не, поскольку «современное», там все на Go/Rust/Python, и тащит восемнадцать тыщ модулей. так что это тупо консольные утилиты, UNIX тут ни при чем (я согласен только на зависимость от libc/ncurses)
DistortNeo
16.07.2021 02:33+2В snap древняя версия от 2017 года и, видимо, там не прописаны разрешения.
Современная написана на Rust:
https://github.com/orf/gping
Там один бинарник на выходе (правда, крупноват из-за стандартной библиотеки).
13werwolf13
16.07.2021 06:18+8ставить что-то из снап и надеяться что с этим не будет проблем.. ахах, позабавил
mSnus
25.07.2021 05:45а как ещё правильно поставить тот же exa на CentOS 7? O:-)
13werwolf13
26.07.2021 06:18для центоси же есть какие-то copr разве нет?
mSnus
26.07.2021 07:10я не знаю, поэтому и спрашиваю. Про snap понятно, но его заругали, а вот альтернативы мне неизвестны.
sav13
16.07.2021 06:27+8Чем хороши юникс-команды, что из них можно писать программу на шелле, запускать их конвейером и пр.
"Новые" юникс-команды напрочь похоронили эту концепцию ради сомнительной раскраски в консоли.
Не проще в существующие команды добавить флагов, причем сделать это однообразно?
trapwalker
16.07.2021 09:06+3Тоже подумалось, что улучшить старые команды — хорошая идея, но там такой зоопарк с параметрами… они уже совсем не однообразны. Короче, не всё так однозначно.
Из всего этого перечня я много пользовался только jq и эта крутая штука. Не просто раскраска старой тулзы, кроме того, написана утилита хорошо, она понимает в конвеере запускается или нет и красит выхлоп опционально.
Так что не раскраской единой, знаете ли. Постараюсь быть не предвзятым и попробовать, потом будем судить.nuclight
17.07.2021 19:38А всё потому, что jq был создан не как улучшение чего-то, что улучшения не требовало, а как инструмент под конкретную область, причем которой раньше и не существовало. Вполне в духе предыдущих инструментов, то бишь.
IkaR49
16.07.2021 09:07+2Некоторые из представленных при выводе не на консоль (а в файл или пайп) работают как их прародители, поэтому вполне юзабельно. Ну или имеют ключи для такого поведения.
dbax
16.07.2021 10:47А также "старые" хороши тем, что они уже стоят на всех машинах и работают из-коробки.
Вот разве что jq - действительно полезная тулза.
nuclight
17.07.2021 19:37Во FreeBSD добавляют именно так — libxo поддерживает вывод в нескольких форматах (JSON, XML, ...) и соответственном следующая в пайпе может парсить это как хочет, без дополнительных ключей.
trapwalker
16.07.2021 09:14-1По части оформления статьи есть вопрос. Я, конечно, понимаю, что сейчас пошла нехорошая мода разбавлять подобного рода статьи в сети ТОННАМИ воды, на этом фоне ваша лаконичность похвальна. Однако, она бы стала чуть более удобоваримой, если бы вы не набивший к концу статьи оскомину шаблон: "{cmdname} — это .....". Название уже есть в заголовке. Оно же может быть и ссылкой, или заверните в ссылку специальный символ (U+1F517) рядом и всем будет понятно куда нажимать.
igrishaev
16.07.2021 09:37+1Цветной вывод и рамочки сводят к нулю философию UNIX. Придется искать ключи, чтобы отключить их. Иди они в одно место.
WST
16.07.2021 15:31+3Ну тот же bat форматирует вывод только если stdout является терминалом. А duf имеет ключ для вывода в JSON, которого не имеет обычный df. Так что использование как минимум некоторых из указанных утилит в составе скриптов вполне возможно.
abar
16.07.2021 10:54+2Справедливости ради, некоторые команды действительно могут быть удобны, если тыкаешься по своему же копмьютеру и ищешь что-то в папках или файлах. Можно жаловаться, что они херят юникс-вей, но как по мне - юникс-вей херят 60 флагов на команде ls которые невозможно вспомнить без шпаргалки, и это я ещё не начал вспоминать tar.
Да, половину современных CI/CD систем можно заменить хорошим админом и набором скриптов на баше, но люди всё-равно выбирают почему-то поставить дженкинс и в графическом интерфейсе кликать кнопочки. Так и тут. Для автоматизации процесса лучше брать "старые" юникс команды, но средний пользователь сможем собрать из них пайплайн только по ответам на stackoverflow, и не факт что полученный франкенштейновский монстр будет работать нормально.
Проблема, как и всегда, что чем больше будет таких альтернатив, тем труднее будет сделать хоть какой-то выбор, тем больше сообщество будет размазано между проектами, тем хуже и менее надёжно будет работать каждый проект.
В результате всё идет к тому, что останется "Линукс от РедХат", появится "Линукс от Майкрософт" и будет небольшая выгребная ямка "Линукса для энтузиастов", куда ни один нормальный человек не сунется.
nuclight
17.07.2021 19:40+1Это просто bloat, характерный именно для GNU/Linux, а не классических юниксов. Во FreeBSD вместо пачки ключей в стандартные утилиты добавляют libxo, которая поддерживает вывод в нескольких форматах (JSON, XML, ...) и соответственном следующая в пайпе может парсить это как хочет, без дополнительных ключей.
Avokados
16.07.2021 12:11Ещё и библиотек накидать на сервер придёться;)
unsignedchar
16.07.2021 13:05+1Это минимальная из проблем. Вот если серверов >10, да все под разными операционками — тащить везде этот зверинец будет интересно.
unsignedchar
16.07.2021 16:28Например, в debian стандартный cat входит в пакет coreutils. Чтобы вместо cat использовать bat (предположим, они совместимы по ключам, и при использовании в скриптах bat не пытается ничего раскрашивать), нужно всего лишь сделать coreutils-color, в котором все 100 программ переписаны в new style output. И пока не найдется достаточно упорного new style евангелиста — новые программы так и останутся широко известными в узком кругу.
WST
16.07.2021 17:22+1coreutils тоже бывают разные. Например, команда ls на Linux и на FreeBSD несовместимы друг с другом по флагам — одному подавай ls --color для раскрашивания вывода, другому — ls -G.
Ну и к слову, в указанных утилитах там не одним только цветом красивости ограничиваются, там всякие отступы, рамочки. Действительно довольно-таки приятно глазу при ручной работе.
TeaDove
19.07.2021 12:18+1Я не совсем понимаю(ещё юн), но в чём собственно проблема? Bat удобно юзать при работе в терминале, cat для скриптов, их и не нужно совмещать или пытаться подружить.
unsignedchar
19.07.2021 13:02-1Лишние сущности же. Зачем учить 2 программы, которые делают одно и то же, но немного по разному? Если мне, к примеру, вздумается посмотреть на раскрашенный текст в консоли, я, пожалуй, открою его в vim.
TeaDove
19.07.2021 13:30Их собственно учить и не нужно, cat и bat, lsd/exa и ls и тд. работают одинакого и выдают одни и те же данные при одинаковых опциях, разница в цвете, формате и новых опциях.
freecoder_xx
16.07.2021 23:27+7Bat - 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 (:
Kirikekeks
17.07.2021 11:02Можно сделать и стандартными утиллитами нормальный вывод, и тащить .vimrc .bash_* *profile .screenrc .tmuxrc .muttrc на все свои машины, это как тащить в поход нож для суши, нож для хлеба, нож для мяса, нож для овощей... Вот никогда не куплю французскую машину. К ней не подходит купленный уже инструмент. Была шестерка, семерка, опель, фольц и инструмент спокойно кочевал из багажника в багажник, сохраняя нужность, привычки, ухватки и обрывки изоленты. Но если покупать первую француженку и нет вот этого хлама в багажнике и багаже, то почему бы и нет?
unsignedchar
17.07.2021 13:41Какая то сложно понятная аналогия. У французов что, гайки 5 гранные? ;)
Kirikekeks
19.07.2021 08:41Да. Французскую муху можно убить только специальной мухобойкой. Газеткой или шлепком - ни.. :))
nuclight
17.07.2021 19:44Вообще-то таскать с собой свои конфиги — это нормально. Как раз то, чем Unix всегда выгодно отличался от других, например винды с её реестром — просто и удобно.
Kirikekeks
19.07.2021 08:49-1Ну если с ансиблом как то. Мне в итоге оказалось легче перепривыкнуть к дефолту.. "Дама сдавала в багаж. Диван, Чемодан, Саквояж, Картину, Корзину, Картонку И маленькую собачонку." И вдруг да, спасибо, путь дефолта - это Winway. Как то не подумалось и масть сменил. Видать анархисты "Сила Ночи, Сила Дня..." все таки в чем то правы.
sadsnake42
19.07.2021 12:19+1У нас есть "системные администраторы", которые "если нет в стандартном наборе, то зачем оно вообще нужно", у нас есть любители GUI, которые "красноглазие это все ваши команды, там ведь надо --help смотреть" и люди, которые просто недовольны цветом в выводе. Очень конструктивно конечно.
При этом fzf, rg и jq например - изумительный утилиты. Ими удобно пользоваться, они на порядок быстрее своих "дедушек", они куда интуитивнее (протестировано на джунах) и надеюсь со временем они проникнут в стандартные наборы, чтобы не приходилось ставить их на каждую новую машину (как люди живут с стандартным grep, ума не приложу). Но видимо пока основная реакция это какое-то снобское "нам эти ваши новоделы не нужны" придет этот момент не скоро.
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', для совершенства.
mSnus
25.07.2021 05:48Не знаю, 7-летней давности это современное или нет, но я жить не могу без закладок на директории:
BashMarks от Huy Nguyen или тут
unsignedchar
Современные Unix-
командыпрограммы с консольным интерфейсом.youROCK
И обязательно цветным выводом! (хотя, сказать честно, я лично не считаю это плюсом)
DistortNeo
И не просто цветным, а ещё и псевдографическим (см. Bottom). И начиная с некоторого момента подобный TUI становится даже хуже нормального GUI.
mistergrim
Современные
Unix-программы с консольным интерфейсом.