LINUX.ORG.RU
ФорумTalks

GNU/Linux vs KISS

 


0

2

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

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

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

find . -iname smth 2>/dev/null

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

fdfind -gH smth .

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

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

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

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

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

★★★★★

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

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

quickquest ★★★★★
()

ЕМНИП, find foo ищет файл в текущем каталоге и подкаталогах, чем не простота? А дальше понятно — как можно сложные задачи решать простым инструментом? Ну и древняя она, а люди привыкли и передают из поколения в поколения.

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

У топикстартера каша в голове.

KISS это про принципы проектирования и организации кода. (и не только кода. Исходно это вообще от ппректировщика самолётов пошло)

А ТС, бедный, в ключах запуска команды запутался.

wandrien ★★★
()
Последнее исправление: wandrien (всего исправлений: 2)

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

Какие? Буквально на инглише написано «искать - тут - по имени - запрос».

Конструкция с девнулом универсальна и понятна в юниксах.

Сравните с fd:

Во-первых:

bash: fdfind: command not found


Во-вторых, как раз по этой команде без мана не понять, что за опции.

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

Во-вторых, как раз по этой команде без мана не понять

--help расскажет, история проще чем с синтаксисом find

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

Да, про код, но, например, такую концепцию и к дистрибутивам применяют, но я не в курсе работает ли. Я, как не программист, именно в таком варианте впервые узнал об этой концепции.

papin-aziat ★★★★★
()

find есть везде, а fdfind нет. Синтаксис find известен давно, а fdfind эт что-то новое.

adduser – это вообще финиш.

интерактивный скрипт, откройте для себя useradd.

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

Не ищет. Там 2>/dev/null обязательное заклинание, иначе в выводе будет куча мусора

Запустил find / -iname smth без 2>/dev/null, кучи мусора нет, ЧЯДНТ?

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

Ну вот почему-то не отличает рута от регулярного пользователя. Наверное есть какое-то объяснение. В любом случае 2>/dev/null полезная идиома, которую линуксоиду надо привыкнуть вбивать одним аккордом.

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

Это потому что find следует принципу kiss, в отличие от той неизвестной поделки.

wandrien ★★★
()

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

По-моему, кто-то тут путает KISS и Unix-way. Утилита должна быть простой только в том смысле, что она выполняет одну задачу (причем хорошо, что уже не так просто) и легко встраивается в конвейер. Сама по себе она может быть весьма сложной с навороченным интерфейсом. Как find или например rpm. Потому что решаемые задачи тоже сложные. С kiss нужно не перестараться, и не сделать проще, чем следует. Ну будет find вообще без опций. Kiss? Kiss! Только это совершенно бесполезный find.

bread
()

сложно написать, не соответствующими KISS, например cat, ls.

Тем не менее, эти команды нередко переусложнены. Сравни:

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

find . -iname smth 2>/dev/null

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

Действительно, зачем? Если можно

find . -type f |grep sth

find . -type f — это почти единственное полезное применение утилиты.

The History of the Design of Unix’s Find Command.

fdfind -gH smth .

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

Не проще. Тоже самое, только меньше текста. Для этой задачи создан grep.

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

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

Исп useradd.

Учётка пользователя - это не файл.

Ты имеешь ввиду /etc/passwd?

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

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

Что не так с man и nano?

Насчёт vim согласен, что это не KISS, но он и не ставит перед собой эту цель. И это нормально, внезапно.

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

Так сложных, простых или обычных? Ты уж определись.

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

Учетка нет, а учетки да. Но если так сильно хочется странного, то можно попробовать запилить свой уникальный дистр с одной учеткой, тогда можно будет сказать что учетка - файл. Или например к pam прикрутить что-то свое неповторимое с хранением каждой учетки в отдельном файле.

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

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

Ну будет find вообще без опций.

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

например, можно написать так: fdfind smth и она всё равно будет более-менее нормально искать

как вишенка на торте, fdfind ещё и ищет быстрее, прямо заметно быстрее, чем find

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

Действительно, зачем? Если можно find . -type f |grep sth

так медленнее, причём заметно медленнее, не только, чем fd, но и просто чем find

до кучи, оно ещё и не работает как надо: то, что вы написали отнюдь не эквивалент find . -iname smth

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

Тогда ответ на вопрос «ЧЯДНТ?» вы знаете

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

Что не так с man и nano?

нестандартные кеймапы, наличие странных фич, отсутствие некоторых простеших фич - в целом всё не так плохо, но это уже не KISS

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

это не мусорный вывод, а диагностическая информация. Откуда simple stupid утилита должна знать, что лично тебе эта информация не нужна?

Аналогичный вопрос можно поставить по отношению к fdfind: почему я должен каждый раз добавлять волшебную опцию --show-errors, чтобы оно не скрывало ошибки?

И между прочим ты не указал опцию -i, --ignore-case для fdfind. Итого там уже 3 флага.

adduser - это вообще из какого пакета утилита? У меня такой нет.

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

find . -type f |grep sth

facepalm.jpg Ехал грепа через грепу, грепа грепа грепа грепа. Предлагаю не останавливаться на достигнутом find . -exec ls -l {} \+ | grep -e '^-' | grep sth

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

так медленнее, причём заметно медленнее

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

то, что вы написали отнюдь не эквивалент find . -iname smth

Ну так адаптируй. Если ты чего-то не сможешь сделать с помощью grep, то это будет удивительно.

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

Что не так с man и nano?
нестандартные кеймапы

У man что именно нестандартное?

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

facepalm.jpg

facepalm is not an argument.

Ехал грепа через грепу, грепа грепа грепа грепа.

Pithy saying is not an argument.

find . -exec ls -l {} + | grep -e ‘^-’ | grep sth

Зачем этот -exec? Если нужны просто файлы, можно grep -v '/$'.

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

Ну так адаптируй. Если ты чего-то не сможешь сделать с помощью grep, то это будет удивительно.

Вам про то, что грепа тут не только лишняя, но и вредная.

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

Просто выводи man в текстовый редактор или pdf. «Нестандартный» (хотя для кого-то уже стандартный) там пейджер less и я согласен, что он говно.

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

Зачем этот -exec?

Для полноты ощущений.

Если нужны просто файлы, можно grep -v '/$'.

facepalm.jpg.2 Вы так и не поняли намека, что много чего можно сделать через ж несовсем правильно, но лучше так не делать.

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

Если хочешь использовать регулярные выражения, используй grep. Если хочешь использовать special-purpose API, используй fd. Или find. Или еще одну их десятка, если не сотни аналогичных утилит.

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

Вы так и не поняли намека, что много чего можно сделать несовсем правильно, но лучше так не делать.

Не увидел ни одну несовсем правильную вещь. Ну ты хоть покажи. Про производительность я в курсе (и ведь возводить производительность в абсолют тоже нехорошо). Что-то ещё?

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

это не странное, а декларируемый принцип UNIX-way

который не надо доводить до абсурда.

anc ★★★★★
()

Ещё какая-то частая утилита выбешивает своим небинарным управлением, на языке вертится и забыл. find / -name *khooy* хотя бы уже как иероглиф, который прилип к пальцам, и истинное значение которого уже давно ничего не значит. Примерно как tar -zxf и tshark -niany. Странно, что аутисты, переписывающие подобные вещи на нескучных языках так и не запилили более удобный find.

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

Про производительность я в курсе

ну хоть что-то

и ведь возводить производительность в абсолют тоже нехорошо

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

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

Возможно не к месту, возможно к месту, искать лень.

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

т.е. вы призываете к усложнению решения

Вообще-то к упрощению. Регулярные выражения и шелл часто проще special-purpose API. Хотя бы потому что все уже умеют ими пользоваться, а необходимость нового API ещё оценить надо.

kaldeon
()
Ответ на: комментарий от yu-boot

Капец вы странные. find одна из самых адекватных утилит в смысле ключей запуска. find . -name foo -type f -print0, тут же всё очевидно.

А вот tar -zxf да, жопа. Я каждый раз в ман лезу на всякий случай.

wandrien ★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)