LINUX.ORG.RU
ФорумTalks

GNU/Linux vs KISS

 


0

3

Безусловно, среди классических юниксовых утилит есть такие, какие сложно написать, не соответствующими KISS, например cat, ls.

Но буквально шаг в сторону и:

Команда поиска выглядит так:

find . -iname smth 2>/dev/null

Вопрос - зачем такие заклинания? Сравните с fd:

fdfind -gH smth .

Проще же в разы.

adduser – это вообще финиш. Команда требует ввести КОМНАТУ, почту, телефон… Где тут KISS, алё.

Кстати, юниксовый принцип «всё есть файл» - враньё. Учётка пользователя - это не файл. Почему-то. Хз почему.

Тоже касается man, nano, vim…

Хоть что-то из чуть-чуть сложных, хоть чуть-чуть сложнее cat, обычных утилит/программ линукса следует KISS ?

★★★★★

@next_time, fdfind хорошая утилита. Мне понравилась ее скорость рабты и понятный синтаксис.

☕️🍰☕️🍰 Вам два чая с тортом.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 1)
Ответ на: комментарий от next_time

почему-то, у авторов fd получилось

у автора fd было сорок лет опыта использования find. Идея «а давайте сделаем простую и понятную команду, которая делает только одну задачу - ищет файл по имени» великолепна, но дайте ей настояться, и она обрастёт мхом разнообразных идей и улучшений, не все из которых пройдут проверку временем. И вот ты такой на белом коне хренакс и сделал файн только лучше, проще и без излишеств. Но это не потому что ты такой умный, это потому что за тебя поколения пользователей и разработчиков нарабатывали опыт.

FishHook
()
Ответ на: комментарий от skiminok1986

Хороший панчлайн, но что если дистрибутив будет установлен на headless машину? К чему там графическая подсистема?

Тем временем, пользователи и группы являются чуть ли не базовой составляющей ОС. Если это не DOS…

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

egzakharovich
()
Ответ на: комментарий от lbvf50txt

Крайний индекс

по крайнему расширению файла

Человек, не рискующий постоянно своей жизнью, но постоянно пишущий/говорящий «крайний» вместо «последний» априори не может быть в адеквате :)

Dimez ★★★★★
()
Ответ на: комментарий от Dimez

априори не может быть в адеквате :)

Модератор набрасывающий и переходящий на личности адекватно выполняет свои обязанности?

lbvf50txt
()
Ответ на: комментарий от lbvf50txt

Ну вот и аргумент «нет ты» подъехал :)

Dimez ★★★★★
()
Ответ на: комментарий от lbvf50txt

Наверное вы опечатались и перепутали утилиты gh и fd.

Да.

Я нигде не говорил, что она вообще не работает с расширениями. Я говорил, что она работает некорректно.

skiminok1986 ★★★★★
()
Ответ на: комментарий от lbvf50txt

Это общие «наукоемкие» слова.

Это совершенно не наукоёмкие слова.

Конкретики нет.

Конкретика вполне себе есть. Достаточно научиться читать. Не учитывается реальный мир в виде отличных от идеальных случаев. Это и называется наивный код.

Вся критика основана на том, что в утилиту добавлена возможность поиска по крайнему расширению файла.

Слово «крайний» не встречается в документации. Додумывать за авторами надо, видимо.

Утилита работает удивительно быстро.

А уж насколько быстро работает locate.

Имеет достойную документацию.

Не соответствующую действительности, как мы только что выяснили.

Пользуется популярностью.

Что только не пользуется популярностью. Начиная с оффтопика, заканчивания исполнителями, которых крутят на FM-радиостанциях.

Только что я протестирова утилиту, ошибок в работе не обнаружил.

Значит Вы, написав «Манчестер», имеете в виду тот же «Ливерпуль», что и авторы утилиты.

Скоростью работы более чем удовлетворен.

Замечательно.

skiminok1986 ★★★★★
()
Ответ на: комментарий от skiminok1986

В проекте gh есть три файла с расширением *.proto.mock.go. Сейчас я попробую их найти при помощи fdfind -e 'proto.mock.go'.

$ fdfind -e 'proto.mock.go'
internal/codespaces/rpc/codespace/codespace_host_service.v1.proto.mock.go
internal/codespaces/rpc/jupyter/jupyter_server_host_service.v1.proto.mock.go
internal/codespaces/rpc/ssh/ssh_server_host_service.v1.proto.mock.go

$ fdfind -e proto.mock.go
internal/codespaces/rpc/codespace/codespace_host_service.v1.proto.mock.go
internal/codespaces/rpc/jupyter/jupyter_server_host_service.v1.proto.mock.go
internal/codespaces/rpc/ssh/ssh_server_host_service.v1.proto.mock.go

Все прекрасно работает fdfind -e 'proto.mock.go' и
fdfind -e proto.mock.go.


Анализ файлов проекта gh при помощи Nushell.

# Nushell select files with doubled extensions. From the gh project.
# https://github.com/cli/cli
~/tmp/cli> let files = ls ...(glob **/*) | uniq
~/tmp/cli> let files = $files |  where name !~ '.*\.git.*' | where type == file 
~/tmp/cli> let files = $files | where name =~ '\.[a-z0-9]{2,7}\.[a-z0-9]{2,7}$'
~/tmp/cli> let files = $files | get name | each { str substring 25..-1}
~/tmp/cli> $files | wrap name | where name =~ 'proto\.mock\.go$'

╭───┬──────────────────────────────────────────────────────────────────────────────╮
│ # │                                     name                                     │
├───┼──────────────────────────────────────────────────────────────────────────────┤
│ 0 │ internal/codespaces/rpc/codespace/codespace_host_service.v1.proto.mock.go    │
│ 1 │ internal/codespaces/rpc/ssh/ssh_server_host_service.v1.proto.mock.go         │
│ 2 │ internal/codespaces/rpc/jupyter/jupyter_server_host_service.v1.proto.mock.go │
╰───┴──────────────────────────────────────────────────────────────────────────────╯
lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 2)

GNU/Linux vs KISS

Тёплое vs Мягкое :)

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от anc

Век живи. Спасибо. Я это емнип костылями решал.

Если ты про это, то это не костыли:

tar -c -f - $FILELIST | gzip | ssh user@addr 'cat > z.tgz'

Выглядит прозрачнее чем необычный синтаксис tar-а и не требует никаких /usr/bin/rmt на той стороне.

firkax ★★★★★
()
Ответ на: комментарий от MagicMirror

Ни разу не видел.

А вместо cat можно поставить dd, он тоже умеет seek и опять же явно более знаком большинству шеллскрипт-писателей. А ещё можно поставить любую другую программу: хоть tar -x -z -f - -C <dir>, хоть засовывание этого архива ещё куда-то. И не нужно для каждого случая заново изучать какие ключи тара для этого нужны, если оно вообще поддерживается.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Если ты про это, то это не костыли:

Ага, про них.

Выглядит прозрачнее чем необычный синтаксис tar-а

Согласен.

anc ★★★★★
()
Ответ на: комментарий от firkax

Ни разу не видел.

rsync, scp, borg… Что сразу в голову пришло.

А вместо cat можно поставить dd, он тоже умеет seek

Осталось tar научить этим пользоваться :)

И не нужно для каждого случая заново изучать какие ключи тара для этого нужны

Это ты говоришь сразу после того, как сам использовал сабжевый -f

MagicMirror ★★★
()
Ответ на: комментарий от firkax

Хотя что-то с этой функцией действительно не так:

$ tar -czf remote-host:test.tar.gz steam-*
tar (child): Cannot connect to remote-host: resolve failed
tar: remote-host:test.tar.gz: Wrote only 8192 of 10240 bytes
tar: Child returned status 128
tar: Error is not recoverable: exiting now
$ ssh remote-host uname -a
Linux remote-host 6.6.68-1-lts #1 SMP PREEMPT_DYNAMIC Fri, 27 Dec 2024 15:16:06 +0000 x86_64 GNU/Linux

MagicMirror ★★★
()
Последнее исправление: MagicMirror (всего исправлений: 1)
Ответ на: комментарий от FishHook

Это верно хотя бы отчасти, а может и полностью. Но тред - не про осуждение привычных утилит, он про сухие факты: что KISS, а что - нет.

next_time ★★★★★
() автор топика
Ответ на: комментарий от next_time

что KISS, а что - нет.

ничто не KISS, его не существует в чистом виде. Любой кисс-ориентированый проект выходящий за рамки хелло-ворд вынужден бесконечно метаться между соблюдением этого самого KISS и насущными требованиями условного бизнеса. Вы будете жертвовать либо одним либо другим, и очевидно, что проекты жертвующие развитым функционалом в угоду абстрактной идее долго не живут.

FishHook
()
Ответ на: комментарий от firkax

вместо cat можно поставить dd

dd для чего-то вроде

dd conv=ascii,unblock cbs=80  < SYS1.PARMLIB/IKJPRM00 | less
vM ★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)