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 ?

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

Вообще-то к упрощению.

Я настаиваю на усложнении. Если команда умеет выполнять то что вам нужно, то надо использовать её, а не строить забор из пайпов. Хотя я допускаю, что в определенных разовых моментах жизни забор может оказаться оптимальнее для решения задачи.

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

Капец вы странные.

...

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

Если вы именно про полную последовательность, то «Капец вы странный.». x - extract, c - create, f - file. Чего тут сложного?
А так да, я тоже эпизодически в ман залезаю на тему ключиков конкретных компрессоров, -z для gzip и -j для bz2 помню, а вот остальные неочень.

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

Ну в моей практике гораздо чаще приходится запускать, скажем, компилятор, чем архиватор. Так что какое-нибудь gcc -O0 -g -Wall -Wextra -c -o foo.o foo.c я по памяти хоть в три часа ночи напишу, а вот ключики tar - нет. )

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

Если команда умеет выполнять то что вам нужно, то надо использовать её, а не строить забор из пайпов.

Кроме простых common cases, которые команды вроде ripgrep и fd действительно делают хорошо, есть ещё собственный синтаксис, идиомы и острые углы. Стоит ли ими забивать голову? Хз, кому-то может и нравится. Кто-то может не видит другой путь. Но стоит только начать, вопрос времени, когда вершины айсберга станет недостаточно. И мне лично хочется избежать этого опыта. Тут со стандартными утилитами разобраться и привыкнуть уже нужны усилия, не хочется умножать этот опыт на 2.

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

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

Перцы из GNU справились.

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

Ну в моей практике гораздо чаще приходится запускать, скажем, компилятор, чем архиватор. Так что какое-нибудь gcc -O0 -g -Wall -Wextra -c -o foo.o foo.c я по памяти хоть в три часа ночи напишу, а вот ключики tar - нет. )

Тут мало кто знает, но в GNU tar есть поддержка ssh.

       -f, --file=ARCHIVE
              Use archive file or device ARCHIVE.  If this option is not given,
              tar will first examine the environment variable `TAPE'.  If it is
              set, its value will be used as the archive name.  Otherwise,  tar
              will  assume  the  compiled-in default.  The default value can be
              inspected either using the --show-defaults option, or at the  end
              of the tar --help output.

              An archive name that has a colon in it specifies a file or device
              on  a  remote machine.  The part before the colon is taken as the
              machine name or IP address, and the part after it as the file  or
              device pathname, e.g.:

              --file=remotehost:/dev/sr0

              An optional username can be prefixed to the hostname, placing a @
              sign between them.

              By  default,  the remote host is accessed via the rsh(1) command.
              Nowadays it is common to use ssh(1) instead.  You can  do  so  by
              giving the following command line option:

              --rsh-command=/usr/bin/ssh

              The  remote machine should have the rmt(8) command installed.  If
              its pathname does not match tar's default,  you  can  inform  tar
              about the correct pathname using the --rmt-command option.

И специальный костыль, чтобы её выключить:

       --force-local
              Archive file is local even if it has a colon.

Думаю, многие тут могут сами догадаться, КАК ИМЕННО я об этом узнал.

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

Pithy saying is not an argument.

Exactly.

find . -type f |grep sth работает и ладно. В Nushell вообще поиск через where.

ls | where name =~ ".yaml" - какая разница?

А find это встроенная утилита в Nushell для поиска нескольких вхождений, чего-то в таблицу.

~/tmp/nu> ls | find yaml toml

Испоьзовать оригинальный find в Nushell:

^find . -type f -name "*.yaml" -o -name "*.toml"

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

Так не всегда сборочными скриптами всё делается, иногда что-то надо отлаживать в этом процессе. А иногда и сами скрипты писать.

Это было к тому, что архиватор мне вручную приходится запускать еще реже)

wandrien ★★★
()

@next_time, любой «живой» проект переутяжелен и загрязнен. Если вас тянет к идеализированным, сохраняющим чистоту идей проектам, то вам следует обратиться к лабораторным решениям, не получившим практического применения. Например, Plan 9 — там все с изяществом в порядке.

В Plan9 исходный код всех «coreutils» (ls, awk, cat, sed, tr, sort, grep…), занимает чуть больше 1Мб в архиве.

https://tools.suckless.org/9base/

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

Чем тебе тар не угодил? У него всего 4 ключа нужных: c (Create), x (eXtract), z (gZip), f (File). Если нужна всякая экзотика типа сжать bzip2 или xz то да, можно и в ман, а можно этот компрессор конвеером прицепить.

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

Всякую чушь из -Wall (parentheses особенно) включил а -Wshadow не включил, как так?

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

Так я и написал «Хотя я допускаю, что в определенных разовых моментах жизни забор может оказаться оптимальнее для решения задачи.» Я сам так могу поступить исходя из оценки затраченного времени хоть и понимая, что решаю не совсем правильно.

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

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

Думаю, многие тут могут сами догадаться, КАК ИМЕННО я об этом узнал.

Ага. :)

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

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

Топикастер озвучил уже давным, давно сформулированную идею UNIX Style, or cat -v Considered Harmful, в честь которой даже сайт назван.

http://cat-v.org/

At the USENIX Summer Conference of 1983 Rob Pike made a presentation titled ‘UNIX Style, or cat -v Considered Harmful’ and together with Brian Kernighan wrote the paper ‘Program Design in the UNIX Environment’ (pdf version, ps version), published as an article in AT&T Bell Laboratories Technical Journal, October 1984, Vol. 63 No. 8 Part 2.

http://harmful.cat-v.org/cat-v/unix_prog_design.pdf

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

Это было к тому, что архиватор мне вручную приходится запускать еще реже)

Согласен, вещь вообще не часто используемая, у меня набор ключиков с давних лет в мозг зашился когда использовалось чаще.

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

У него всего 4 ключа нужных: c (Create), x (eXtract), z (gZip), f (File).

Ещё v для красоты и успокоения можно добавлять.

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

между прочим и find и tar стандартизированы (POSIX). Так что претензии должны быть скорее к стандарту, чем к авторам конкретной реализации.

По поводу параметра name не понимаю, что в нём может быть непонятного (кроме разве что ожидания - - префикса для многобуквенной опции).

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

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

chupasaurus
()

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

Не требует, а можно, не подменяй понятия.

nano, vim

Пробовал писать текстовый редактор когда-нибудь? Там поцелуйно не получится никак, это огромный клубок алгоритмов, который должен уметь тысячу мелочей.

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

Мне тут двое деятелей наставили клоунов. Наверно потому, что find рекурсивный, а ls ищет только в текущем каталоге. Хотя суть коммента была в другом.

в Nushell есть такая комманда как glob, которая позволяет рекурсивно обходить каталоги, через предоставление списка файлов по строке шаблону.

Вот пример получения 5 самый больших файлов формата mp4. Поиск рекурсиво через glob.

# Nushell
ls -d ...(glob **/*.mp4) | sort-by -r size | first 5

И писал я прошлый комментарий о том, что есть разные подходы: кому-то удобнее команды-комбайны с большим количеством ключей, кому-то удобны последовательности относительно лаконичных команд. Синтаксис не основное, основное - результат.

Фильтровать через grep - вполне себе выход.

lbvf50txt
()
Последнее исправление: lbvf50txt (всего исправлений: 3)

В общем согласен, что fd удобней. Но это все «дело привычки». Ничего сложного в синтаксисе find нет.

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

Смотря в какой БД хранится учётная запись. Например LDAP object. Смонтируем LDAP через FUSE (https://sourceforge.net/projects/ldapfuse/), и вот уже будут файлы, как и хотел ТС. :-)

Что же касается MS Windows, то например учетки в AD (как и прочие AD объекты) сами по себе являются объектами, на которых можно настраивать ACL.

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

Наверно потому, что find рекурсивный, а ls ищет только в текущем каталоге.

ls ничего не ищет, man ls «List information about the FILEs (the current directory by default).»

anc ★★★★★
()

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

главное чтобы не следовали принципу «KISS MY ASS». Все остальное - дело наживное

Lrrr ★★★★★
()

Сравните с fd:

В жопу себе засунь свои методички по Rust Evangelism. Или в жопу своего партнёра по Rust Evangelism Strike Force.

Очередной «вопрос» в котором евангелист рассказывает про «неправильность», «неудобство», «устаревание» какой-то стандартной утилиты и как бы невзначай упоминает никому неизвестное и ненужное растоподелие написанное сектанатми (причём явно виндузятниками, ибо там зачем-то есть понятие «file extension» и даже спецключик, кстати, как и всё у растаманов криво реализованный даже для вендузятника), которое якобы чем-то лучше давно имеюшегося в любом дистре искаропки и думает что никто не заметит.

Не, у растофилов точно с головой проблемы, причём серьёзнейшие. Ну какой нормальный человек будет вот такие посты делать, якобы на отвлечённую тему только чтобы какое-нибудь растоподелие прорекламировать? Это же ненормально вообще.

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

Более того, в Nushell ls это build in, внутренняя команда поведение которой не зависит от операционной системы на которой запущена оболочка.

man ls опишет внешнюю команду ^ls - в синтаксисе Nushell. Для получения справки о внутренней команде help ls.

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

там зачем-то есть понятие «file extension» и даже спецключик

Ахренеть не встать, они это хоть как-то мотивировали?

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

ACLы в оффтопике всё ещё работают на SID-ах :)

Это внешнее проявление, а в реализации там черт ногу сломит :)

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

Это же ненормально вообще.

Ненормально оценивать утилиту по языку программирования на котором она написана, а не по ее функционалу и быстродействию. И начинать пост с «в **** себе засунь».

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

Ахренеть не встать, они это хоть как-то мотивировали?

Нет, конечно. Они и представить не могут, что где-то никаких file extension может и не быть.

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

причём явно виндузятниками, ибо там зачем-то есть понятие «file extension»

Лол. О чём я и говорил:

[У ripgrep и fd] собственный синтаксис, идиомы и острые углы. Стоит ли ими забивать голову?

Что только не придумают лишь бы не использовать регулярные выражения.

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

Ненормально оценивать утилиту по языку программирования на котором она написана

А я не про то, на чём она написана, я про то, кем она написана. Утилиты, которые пишут люди (?) считающие нормальным опускаться до методов рекламы уровня спамерских писем и маркетинга в социалочках - по определению говно и пользоваться ими не стоит, какими бы замечательынм их не расписывали.

И начинать пост с «в **** себе засунь».

Жопа есть, а слова нет? Rust Evangelism Strike Force реально задрали уже. Скоро им будут бить морду, как спамерам когда-то.

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

Что только не придумают лишь бы не использовать регулярные выражения.

Вы как-то сами себе противоречите, то вы за использование утилит так как удобней и дублирование функционала find через grep.

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

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

дублирование функционала find через grep

А зачем? find умеет -regex и даже в разных вариациях --regex-type

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

fd(1) |grep extension

Я имел ввиду то, что поиск по расширению легко выражается через условный grep '.\.c$' и флаг -e|--extension излишен.

Хотя я могу представить зачем этот флаг был добавлен. Частый случай использования должен быть простым, даже если он ломает некий общий интерфейс. Но это ещё надо убедиться, что случай действительно частый и новый интерфейс действительно значительно лучше.

Против расширений как таковых ничего против не имею.

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

Ненормально оценивать утилиту по языку программирования на котором она написана

Утилиты, которые пишут люди (?) считающие нормальным опускаться до методов рекламы уровня спамерских писем и маркетинга в социалочках…

Вы продолжаете оцеивать утилиту не по ее техническим характеристикам.

Ничего плохого в рекламе в социальных сетях нет. Маркетинг от слова рынок, базар, если кто-то зазывает на базаре в свою лавку клиентов, он ничего криминального не соврешает. Экономика как вы можете заметить рыночная.

Социальные сети живут за счёт рекламы, даже LOR имеет рекламные банеры.

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

Нет, конечно. Они и представить не могут, что где-то никаких file extension может и не быть.

Сильны ребята, реально сильны, мы запилим мега хрень, мы конечно многого не знаем, но наша хрень однозначно будет лучше.

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

что поиск по расширению легко выражается через условный grep ‘..c$’ и флаг -e|–extension излишен.

Это вам он излишен. А кому-то синтаксис regex излишен.

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

мы конечно многого не знаем, но наша хрень однозначно будет лучше.

Вы реально считаете, что разработчики этой утилиты, написавшие этот Makefile, не знают про необязательность файлового расшрения в Linux?

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

Вы реально считаете, что разработчики этой утилиты, написавшие этот Makefile, не знают про необязательность файлового расшрения в Linux?

Я не Ванга.

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

Вы продолжаете оцеивать утилиту не по ее техническим характеристикам.

Я никогда не куплю машину которую рекламируют трансгендеры и мошенники, какая бы замечательная она ни была.

Кроме того, хорошая утилита в рекламе вообще не нуждается.

Даже если опуститься до кода утилиты и поковыряться в потрошках, то утилита создатели которой считают что «extension» определяется паттерном «..{}$» не стоит внимания вообще. Интересно, эти люди вообще видели когда-нибудь «file.tar.gz» или там «error.log.1»

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

Вы реально считаете, что разработчики этой утилиты, написавшие этот Makefile, не знают про необязательность файлового расшрения в Linux?

Они реально дебилы, вообще ничего не соображающие. Потому что даже вендовое «расширение» не определяется паттерном «.\.{}$». Я на 100% уверен, что если в этом говнокоде как следует покопаться, то там ещё дохренищи такого бреда.

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

Интересно, эти люди вообще видели когда-нибудь «file.tar.gz» или там «error.log.1»

Не видели, вы им открыли Америку. Они сделали пакеты для Guix, Debian, OpenBSD и Manjaro c Devuan. А вот file.tar.gz они не видели.

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