Comments 48
ни одна из современных unix-команд не запустилась в современной unix-системе
```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 и всё равно не работает. В этом вся сущность этих современных "команд".
так это не самодостаточные бинарники чтоли?
В snap древняя версия от 2017 года и, видимо, там не прописаны разрешения.
Современная написана на Rust:
https://github.com/orf/gping
Там один бинарник на выходе (правда, крупноват из-за стандартной библиотеки).
ставить что-то из снап и надеяться что с этим не будет проблем.. ахах, позабавил
Чем хороши юникс-команды, что из них можно писать программу на шелле, запускать их конвейером и пр.
"Новые" юникс-команды напрочь похоронили эту концепцию ради сомнительной раскраски в консоли.
Не проще в существующие команды добавить флагов, причем сделать это однообразно?
Тоже подумалось, что улучшить старые команды — хорошая идея, но там такой зоопарк с параметрами… они уже совсем не однообразны. Короче, не всё так однозначно.
Из всего этого перечня я много пользовался только jq и эта крутая штука. Не просто раскраска старой тулзы, кроме того, написана утилита хорошо, она понимает в конвеере запускается или нет и красит выхлоп опционально.
Так что не раскраской единой, знаете ли. Постараюсь быть не предвзятым и попробовать, потом будем судить.
Некоторые из представленных при выводе не на консоль (а в файл или пайп) работают как их прародители, поэтому вполне юзабельно. Ну или имеют ключи для такого поведения.
А также "старые" хороши тем, что они уже стоят на всех машинах и работают из-коробки.
Вот разве что jq - действительно полезная тулза.
Во FreeBSD добавляют именно так — libxo поддерживает вывод в нескольких форматах (JSON, XML, ...) и соответственном следующая в пайпе может парсить это как хочет, без дополнительных ключей.
По части оформления статьи есть вопрос. Я, конечно, понимаю, что сейчас пошла нехорошая мода разбавлять подобного рода статьи в сети ТОННАМИ воды, на этом фоне ваша лаконичность похвальна. Однако, она бы стала чуть более удобоваримой, если бы вы не набивший к концу статьи оскомину шаблон: "{cmdname} — это .....". Название уже есть в заголовке. Оно же может быть и ссылкой, или заверните в ссылку специальный символ (U+1F517) рядом и всем будет понятно куда нажимать.
По-моему, я уже неоднократно видел подобные статьи на Хабре...
Использую ag и bat для поиска по кодовой базе ядра Linux.
Справедливости ради, некоторые команды действительно могут быть удобны, если тыкаешься по своему же копмьютеру и ищешь что-то в папках или файлах. Можно жаловаться, что они херят юникс-вей, но как по мне - юникс-вей херят 60 флагов на команде ls которые невозможно вспомнить без шпаргалки, и это я ещё не начал вспоминать tar.
Да, половину современных CI/CD систем можно заменить хорошим админом и набором скриптов на баше, но люди всё-равно выбирают почему-то поставить дженкинс и в графическом интерфейсе кликать кнопочки. Так и тут. Для автоматизации процесса лучше брать "старые" юникс команды, но средний пользователь сможем собрать из них пайплайн только по ответам на stackoverflow, и не факт что полученный франкенштейновский монстр будет работать нормально.
Проблема, как и всегда, что чем больше будет таких альтернатив, тем труднее будет сделать хоть какой-то выбор, тем больше сообщество будет размазано между проектами, тем хуже и менее надёжно будет работать каждый проект.
В результате всё идет к тому, что останется "Линукс от РедХат", появится "Линукс от Майкрософт" и будет небольшая выгребная ямка "Линукса для энтузиастов", куда ни один нормальный человек не сунется.
Это просто bloat, характерный именно для GNU/Linux, а не классических юниксов. Во FreeBSD вместо пачки ключей в стандартные утилиты добавляют libxo, которая поддерживает вывод в нескольких форматах (JSON, XML, ...) и соответственном следующая в пайпе может парсить это как хочет, без дополнительных ключей.
Ещё и библиотек накидать на сервер придёться;)
coreutils тоже бывают разные. Например, команда ls на Linux и на FreeBSD несовместимы друг с другом по флагам — одному подавай ls --color для раскрашивания вывода, другому — ls -G.
Ну и к слову, в указанных утилитах там не одним только цветом красивости ограничиваются, там всякие отступы, рамочки. Действительно довольно-таки приятно глазу при ручной работе.
Я не совсем понимаю(ещё юн), но в чём собственно проблема? Bat удобно юзать при работе в терминале, cat для скриптов, их и не нужно совмещать или пытаться подружить.
из всех вышеперечисленных использую только jq, действительно полезная штука
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 (:
Можно сделать и стандартными утиллитами нормальный вывод, и тащить .vimrc .bash_* *profile .screenrc .tmuxrc .muttrc на все свои машины, это как тащить в поход нож для суши, нож для хлеба, нож для мяса, нож для овощей... Вот никогда не куплю французскую машину. К ней не подходит купленный уже инструмент. Была шестерка, семерка, опель, фольц и инструмент спокойно кочевал из багажника в багажник, сохраняя нужность, привычки, ухватки и обрывки изоленты. Но если покупать первую француженку и нет вот этого хлама в багажнике и багаже, то почему бы и нет?
Какая то сложно понятная аналогия. У французов что, гайки 5 гранные? ;)
Вообще-то таскать с собой свои конфиги — это нормально. Как раз то, чем Unix всегда выгодно отличался от других, например винды с её реестром — просто и удобно.
Ну если с ансиблом как то. Мне в итоге оказалось легче перепривыкнуть к дефолту.. "Дама сдавала в багаж. Диван, Чемодан, Саквояж, Картину, Корзину, Картонку И маленькую собачонку." И вдруг да, спасибо, путь дефолта - это Winway. Как то не подумалось и масть сменил. Видать анархисты "Сила Ночи, Сила Дня..." все таки в чем то правы.
У нас есть "системные администраторы", которые "если нет в стандартном наборе, то зачем оно вообще нужно", у нас есть любители GUI, которые "красноглазие это все ваши команды, там ведь надо --help смотреть" и люди, которые просто недовольны цветом в выводе. Очень конструктивно конечно.
При этом fzf, rg и jq например - изумительный утилиты. Ими удобно пользоваться, они на порядок быстрее своих "дедушек", они куда интуитивнее (протестировано на джунах) и надеюсь со временем они проникнут в стандартные наборы, чтобы не приходилось ставить их на каждую новую машину (как люди живут с стандартным grep, ума не приложу). Но видимо пока основная реакция это какое-то снобское "нам эти ваши новоделы не нужны" придет этот момент не скоро.
──╼ #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', для совершенства.
Не знаю, 7-летней давности это современное или нет, но я жить не могу без закладок на директории:
BashMarks от Huy Nguyen или тут
Современные Unix программы