The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Представлена новая командная оболочка nushell, opennews (??), 29-Авг-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


9. "Представлена новая командная оболочка nushell"  +3 +/
Сообщение от Аноним (9), 29-Авг-19, 12:10 
> Например, nushell позволяет использовать такие конструкции, как "ls | where size > 10kb" и "ps | where cpu > 10"

bash-скрипты позволяют в 10 раз больше. Это для тех тупеньких админов, которые не осилили?

Ответить | Правка | Наверх | Cообщить модератору

10. "Представлена новая командная оболочка nushell"  +8 +/
Сообщение от anonymoussssss (?), 29-Авг-19, 12:13 
Это для вендузятников, у них же нормального шелла не завезли.
Ответить | Правка | Наверх | Cообщить модератору

12. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от anonimbl (?), 29-Авг-19, 12:22 
в винде есть нормальный bash.
Ответить | Правка | Наверх | Cообщить модератору

14. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от anonymoussssss (?), 29-Авг-19, 12:31 
Через WSL2? Такое себе удовольствие виртуалку ради шелла запускать. Ещё и занимает 2 ГБ или около того.
Ответить | Правка | Наверх | Cообщить модератору

33. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от НяшМяш (ok), 29-Авг-19, 13:39 
Запускай через WSL1
Ответить | Правка | Наверх | Cообщить модератору

66. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Аноним (65), 29-Авг-19, 15:28 
Наличие на машине WSL запускает Hyper-V всегда, даже если ты не юзаешь WSL в конкретный момент. Т.е. старт машины и расход ресурсов у тебя всегда будет дороже и дольше, потому что ты вообще WSL установил.

Плати всегда, пользуйся когда захочешь!

Ответить | Правка | Наверх | Cообщить модератору

90. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от НяшМяш (ok), 29-Авг-19, 20:17 
Как же я люблю экспертов с опеннета. Вы хотя бы изучите предмет своего хейта. WSL1 не использует виртуализацию от слова вообще. Это прослойка, которая реализует ограниченный набор апи ядра, благодаря чему работает большинство вещей типа баша. Линукс процессы даже видны в диспетчере задач рядом с виндовыми.

Если бы был активен Hyper-V во время работы первого WSL, то я бы об этом сразу узнал, потому что перестал бы работать VMware - он сразу ругается на несовместимость.

Ответить | Правка | Наверх | Cообщить модератору

91. "Представлена новая командная оболочка nushell"  +/
Сообщение от anonymoussssss (?), 29-Авг-19, 20:34 
Наверное он спутал с WSL2. Как бы то ни было, на сколько мне известно поддерживается сейчас только WSL2.
Ответить | Правка | Наверх | Cообщить модератору

111. "Представлена новая командная оболочка nushell"  +3 +/
Сообщение от НяшМяш (ok), 29-Авг-19, 23:33 
Да вы издеваетесь что ли? WSL2 ещё даже в релиз не вышел, он доступен только для Windows Insiders ветки.
Ответить | Правка | Наверх | Cообщить модератору

167. "Представлена новая командная оболочка nushell"  +2 +/
Сообщение от xm (ok), 31-Авг-19, 00:49 
велкам в чудесный мир искпердов оупеннет
Ответить | Правка | Наверх | Cообщить модератору

181. "Представлена новая командная оболочка nushell"  +/
Сообщение от rico (ok), 01-Сен-19, 21:00 
cygwin
Ответить | Правка | К родителю #14 | Наверх | Cообщить модератору

16. "Представлена новая командная оболочка nushell"  +2 +/
Сообщение от Аноним (9), 29-Авг-19, 12:32 
Может и есть, но только зачем тут винда? :)
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

101. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (101), 29-Авг-19, 21:34 
> в винде есть нормальный bash.

Сначала попробуйте хорошенько. Потом только оцените.

P.S. Работа с json/yaml - это очень Ок. Но, по ходу, у них ради этого надо заново написать весь Бизи Бокс с Ко' Утилс. ))))

Прикольная новость.

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

115. "Представлена новая командная оболочка nushell"  +2 +/
Сообщение от _ (??), 30-Авг-19, 04:45 
>P.S. Работа с json/yaml - это очень Ок.

Пффф ...

        jq is a tool for processing JSON inputs, applying the
        given filter to its JSON text inputs and producing the
        filter's results as JSON on standard output.

и не лохматьте мне ****
:-)

Ответить | Правка | Наверх | Cообщить модератору

123. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Аноним (122), 30-Авг-19, 09:33 
Ямла нет,и нет отдачи резулбтата в json vи т.п. Есть yq, но в поисковиках, в моём варике в Убу не завезди.


Это ведь АПИ. Стреляешь запросом из CLI и прилетает ответ в json/yaml/подобное.

Рай для автоматизации.

Ответить | Правка | Наверх | Cообщить модератору

161. "Представлена новая командная оболочка nushell"  +/
Сообщение от Michael Shigorinemail (ok), 30-Авг-19, 22:03 
Понимаете, юниксовый шелл силён не сам по себе, а всем тем, что вокруг него существует.  Это, гругря, тюбик суперклея, а не пятиколёсный велосипед с тремя зонтиками (и всё квадратное).
Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

198. "Представлена новая командная оболочка nushell"  +/
Сообщение от myhand (ok), 03-Сен-19, 16:30 
> Это, гругря, тюбик суперклея

А моя рука тянется почему-то к пист^Wсравнению с соплями...  Гругря, таки клей, да.

Ответить | Правка | Наверх | Cообщить модератору

15. "Представлена новая командная оболочка nushell"  +/
Сообщение от Wilem (?), 29-Авг-19, 12:32 
Это для умненьких разработчиков, понимающих силу и удобство единого набора операций над единым форматом данных. Ты, видимо, не понял про что шелл и чем он отличается от беша. Он на самом деле абсолютно не пригоден для работы в текущем виде, это фактически демо. Но концепция - уже реализованная и работающая - офигительная.
Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

18. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Аноним (9), 29-Авг-19, 12:37 
Проще надо быть, если хочешь, чтобы тебя понимали.
Разработчикам шелл скорее всего все-таки не нужен.

> Он на самом деле абсолютно не пригоден для работы в текущем виде

Какой работы?? Ты про какой-то реалтайм или про чо вообще?

Ответить | Правка | Наверх | Cообщить модератору

42. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Ordu (ok), 29-Авг-19, 14:15 
> Разработчикам шелл скорее всего все-таки не нужен.

Сидящим в VSCode может и не нужен, а если ты работаешь с файлами через emacs/vim/bash, то без шелла там никуда.

> Какой работы?? Ты про какой-то реалтайм или про чо вообще?

Я не он, но если ты под реалтаймом подразумеваешь интерактивную работу, то, думаю, ответом будет "да". sh по жизни развивался не зная чем он хочет быть, скрипт-языком или интерактивным шеллом. Из-за этого он и как скрипт-язык невыносимо плох, и как интерактивный шелл не фонтан.

Ответить | Правка | Наверх | Cообщить модератору

106. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Wilem (?), 29-Авг-19, 22:45 
Разработчикам не нужен шелл - это мощно. А что им нужно, Проводник? Они не люди что ли? Разработчик это синоним программист в данном случае, а программист постоянно занимается внезапно программированием, и всякие шеллы постоянно используются для скриптов этими программистами.
Ответить | Правка | К родителю #18 | Наверх | Cообщить модератору

128. "Представлена новая командная оболочка nushell"  +/
Сообщение от пох. (?), 30-Авг-19, 11:09 
> Разработчикам не нужен шелл - это мощно. А что им нужно, Проводник?
> Они не люди что ли? Разработчик это синоним программист в данном
> случае, а программист постоянно занимается внезапно программированием, и всякие шеллы
> постоянно используются для скриптов этими программистами.

не смешите мои тапочки. современный разработчик пользуется шеллом, копипастя туда со стековерфлоу sudo ls -l
(он не знает что делает первая команда, и зачем она ненужна - тоже. Ему так сказали когда-то - все команды начинать с sudo. А если и не сказали - в копипасте будет так.)

Ответить | Правка | Наверх | Cообщить модератору

133. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Anonymoustus (ok), 30-Авг-19, 11:40 
> не смешите мои тапочки. современный разработчик пользуется шеллом, копипастя туда со стековерфлоу
> sudo ls -l
> (он не знает что делает первая команда, и зачем она ненужна -
> тоже. Ему так сказали когда-то - все команды начинать с sudo.
> А если и не сказали - в копипасте будет так.)

В этом виноваты, пожалуй, не сами обезьянки, но их работодатели, требующие, чтобы готово было на вчера. У обезьянок просто нет выбора. Пока пролистаешь учебники и справочники, триста спартанцев^W индусов уже напишут за ведро карри твою работу.

Ответить | Правка | Наверх | Cообщить модератору

144. "Представлена новая командная оболочка nushell"  +/
Сообщение от Wilem (?), 30-Авг-19, 18:04 
Разработчики разные бывают. Речь про нормальных, которые и делают всю работу по существу. Зачем обсуждать криворуких, которым ничего не надо - непонятно.
Ответить | Правка | К родителю #128 | Наверх | Cообщить модератору

163. "Представлена новая командная оболочка nushell"  +/
Сообщение от Michael Shigorinemail (ok), 30-Авг-19, 22:12 
Кто не видит филерукости того организма, который выродил сабж -- тот обсуждать сорта разработчиков тем более не дорос, увы и ах.  Хотя Даннинг и Крюгер наверняка бы ухмыльнулись.

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

Так вот _гораздо_ более умные люди, чем вот это вот "поколение гибхаба", тогда к более-менее общему решению не пришли.  Может, потому, что "cpu > 10" (десять чего?  штук, процентов, килограмм?) в такие ворота не лезет?..

Ответить | Правка | Наверх | Cообщить модератору

183. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (189), 02-Сен-19, 04:51 
Почему бы не иметь для всех команд флаг для вывода структурированной информации? Попроще будет парсить, чем портянками на баше + грепом/седом/авк.

>Может, потому, что "cpu > 10" (десять чего?  штук, процентов, килограмм?) в такие ворота не лезет?

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

Ответить | Правка | Наверх | Cообщить модератору

37. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от myhand (ok), 29-Авг-19, 13:50 
Опытные разработчики давно уже что-то вроде jupyter notebook используют...
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

103. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (101), 29-Авг-19, 21:38 
Тока там библиотеки отфильтрованы из Пипа, славного своей лёгкой опомоеннностью.

А нужны стабилбные и отлаженные инструменты. Которые не исчезнут через два года на платформе продуктивных серверов.

Пишут в Юпитерах, да они на поверку ерундовистые IT'шники. Так - ... художники.

Ответить | Правка | Наверх | Cообщить модератору

45. "Представлена новая командная оболочка nushell"  +/
Сообщение от kai3341 (ok), 29-Авг-19, 14:26 
>  Это для умненьких разработчиков, понимающих силу и удобство единого набора операций над единым форматом данных. Ты, видимо, не понял про что шелл и чем он отличается от беша. Он на самом деле абсолютно не пригоден для работы в текущем виде, это фактически демо. Но концепция - уже реализованная и работающая - офигительная.

Два чаю вам. Идея в том, что в stdout сегодня пишется не поток байт, а структурированная информация. К структурированной информации же можно применять фильтрацию, конвертацию, аггрегирование.

В своё время очень искал некую помесь bash и SQL, когда логи лопатил

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

50. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от user90 (?), 29-Авг-19, 14:39 
Так и нужно было говорить: передаются объекты.
Но вспомни, что шелл используется для администрирования. Итак, в итоге у нас получается "объектно-ориентированное администрирование", ыыыы. Подобное - особенно в текстовой консольке - сложно даже под тяжелыми галлюциногенами представить..
Ответить | Правка | Наверх | Cообщить модератору

56. "Представлена новая командная оболочка nushell"  +/
Сообщение от Crazy Alex (??), 29-Авг-19, 14:57 
Ну вот если кто-то соорудит простой и удобный гибрид - тогда, может, и взлетит. Думаю, никто не будет против того, чтобы там, где таблица, прилетала таки таблица, заранее корректно разделённая и без нужды в экранировании, если это не будет ломать уже привычные вещи. Что, например, подразумевает, что на вход "старой" тулзы, ожидающей текст, должен прилететь именно текст, обратно слепленный из этой таблицы.
Ответить | Правка | Наверх | Cообщить модератору

59. "Представлена новая командная оболочка nushell"  +/
Сообщение от user90 (?), 29-Авг-19, 15:03 
Такой - не соорудит. В итоге все равно выйдет что-то мышекликательное и с картинками. На электроне))
Ответить | Правка | Наверх | Cообщить модератору

80. "Представлена новая командная оболочка nushell"  +/
Сообщение от Crazy Alex (ok), 29-Авг-19, 17:16 
Это совсем другой вопрос
Ответить | Правка | Наверх | Cообщить модератору

78. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от kai3341 (ok), 29-Авг-19, 16:55 
Вовсе не обязательно делать nushell шеллом по умолчанию -- структурированный stdout бывает реально редко. Но он может простимулировать добавление структурированного stdout в софт. Тут кого прижало, тот и сделал патч
Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

146. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Wilem (?), 30-Авг-19, 18:26 
> Но вспомни, что шелл используется для администрирования.

Шелл используется в основном для программирования. Ещё небольшая часть использования шелла - это интерфейс для человека, то есть интерактивный режим. "Администрирование" это что-то размытое. Для программирования беш удобен только до определённого предела и проблем и неудобств с ним - завались. В этом смысле что-то типа `nushell` - отличная штука. Когда допилят функционал.

Ответить | Правка | К родителю #50 | Наверх | Cообщить модератору

55. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от анонн (ok), 29-Авг-19, 14:56 
> Два чаю вам. Идея в том, что в stdout сегодня пишется не
> поток байт, а структурированная информация. К структурированной информации же можно применять
> фильтрацию, конвертацию, аггрегирование.

Есть (причем давние) попытки с прикруткой libxo:


% ps --libxo json|jq  
{
  "process-information": {
    "process": [
      {
        "pid": "77004",
        "terminal-name": "v7 ",
        "state": "I",
        "cpu-time": "0:00,36",
        "command": "-zsh (zsh)"
      },
      {
        "pid": "83425",
        "terminal-name": "v7 ",
        "state": "I+",
        "cpu-time": "0:00,01",
        "command": "/bin/sh /usr/local/bin/startx"
      },

% netstat --libxo json|jq                                                      
{
  "statistics": {
    "socket": [
      {
        "protocol": "tcp4",
        "receive-bytes-waiting": 0,
        "send-bytes-waiting": 0,
        "local": {
          "address": "XXX.XXX.XXX.XXX",
          "port": "34508"
        },  
        "remote": {
          "address": "wfe0.nyi.freebsd",
          "port": "https"
        },
        "tcp-state": "CLOSE_WAIT "
      },

seq 3|wc --libxo xml                                                        
<wc><file><lines>3</lines><words>3</words><characters>6</characters></file></wc>        


Но толку-то, если оно более нигде не поддерживается …

Ответить | Правка | К родителю #45 | Наверх | Cообщить модератору

84. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Дон Ягон (ok), 29-Авг-19, 17:58 
> Есть (причем давние) попытки с прикруткой libxo

Кстати да, вспомнить эту активность во FreeBSD в контексте темы новости уместно.

> Но толку-то, если оно более нигде не поддерживается

Ну почему: можно пайпить в какой-нибудь jq или что-то подобное. Это едва ли всегда будет удобнее, чем стандартная связка из возможностей shell + sed + awk, но иногда может быть и удобнее.

У меня к этому другая претензия: очень часто это попахивает оверинжинирингом.
Например, зачем это в ls или в том же wc?
Примерно все языки позволяют тривиально воспроизводить функционал ls и wc (и тому подобное).
Точно ли нужно вкорячивать это в стандартные утилиты, а не написать нужную тебе логику на нужном тебе ЯП?

Ответить | Правка | Наверх | Cообщить модератору

87. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от анонн (ok), 29-Авг-19, 19:04 
> Ну почему: можно пайпить в какой-нибудь jq или что-то подобное. Это едва
> ли всегда будет удобнее, чем стандартная связка из возможностей shell +
> sed + awk, но иногда может быть и удобнее.

Можно, но на мой взгляд, это будет все равно костыль/полумера - передаем через пайп данные в виде текста, только в дополнительной обертке + с сильным оверхедом, да еще и только для вывода данных - "скормить" вывод в пайп следующей стандартной утилите без доп. обработки не получится.

Хотя, с другой стороны, задумано libxo вообще-то для "форматированного вывода" - с чем оно, имхо, прекрасно справляется.

> У меня к этому другая претензия: очень часто это попахивает оверинжинирингом.Например, зачем это в ls или в том же wc?
> Примерно все языки позволяют тривиально воспроизводить функционал ls и wc (и тому
> подобное).
> Точно ли нужно вкорячивать это в стандартные утилиты, а не написать нужную
> тебе логику на нужном тебе ЯП?

А вот тут я не согласен - посмотрите на реализацию этого в wc (в ls как раз еще не встроили)
https://github.com/freebsd/freebsd/blob/master/usr.bin/wc/wc.c


if (doline)
        xo_emit_h(xop, " {:lines/%7ju/%ju}", linect);
    if (doword)
        xo_emit_h(xop, " {:words/%7ju/%ju}", wordct);
    if (dochar || domulti)
        xo_emit_h(xop, " {:characters/%7ju/%ju}", charct);
    if (dolongline)
        xo_emit_h(xop, " {:long-lines/%7ju/%ju}", llct);
    if (file != NULL)
        xo_emit_h(xop, " {:filename/%s}\n", file);

и сравните с
https://github.com/wertarbyte/coreutils/blob/master/src/wc.c
(в котором кстати в 2 раза больше строк кода ;) )

if (print_lines)
    {
      printf (format_int, number_width, umaxtostr (lines, buf));
      format_int = format_sp_int;
    }
  if (print_words)
    {
      printf (format_int, number_width, umaxtostr (words, buf));
      format_int = format_sp_int;
    }
  if (print_chars)
    {
      printf (format_int, number_width, umaxtostr (chars, buf));
      format_int = format_sp_int;
    }

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

Ответить | Правка | Наверх | Cообщить модератору

113. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 30-Авг-19, 03:31 
> Можно, но на мой взгляд, это будет все равно костыль/полумера - передаем через пайп данные в виде текста, только в дополнительной обертке + с сильным оверхедом, да еще и только для вывода данных - "скормить" вывод в пайп следующей стандартной утилите без доп. обработки не получится.

Имхо, это не столько костыль или полумера, сколько "не нужно" в бОльшей части случаев. А там, где от этого польза таки есть, она незначительна и представляет собой упрощение написания команды и/или её сокращение и/или более явное описание того, что хочется получить.

> Хотя, с другой стороны, задумано libxo вообще-то для "форматированного вывода" - с чем оно, имхо, прекрасно справляется.

Как по мне, libxo задуман, чтобы не парсить выхлоп сложных и специфичных утилит а-ля gpart или netstat из скриптов. В большей степени на perl/python/ruby/js/..., хотя sh + jq (или аналог) тоже возможен (только зачем?).

> в ls как раз еще не встроили

Пишут, что встроили - https://svnweb.freebsd.org/base?view=revision&revision=284198 + https://wiki.freebsd.org/LibXo .
Но сам я давно FreeBSD не использовал, так что лучше проверить, может отломали обратно - я не знаю.

> А вот тут я не согласен - посмотрите на реализацию этого в wc

...
> Т.е. никаких особых усложнений нет, зато предоставлется одинаковый формат вывода утилит.

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

Однако, впиливание libxo в условные ls или wc - это тоже неоправданное усложнение.
Зачем хочется получать выхлоп условного netstat в json/xml мне понятно, зачем хочется получать выхлоп ls/wc в них - не понятно. Любой язык программирования позволяет сделать это своими средствами и так и надо делать. Вызывать ls --libxo json для получения списка директорий из условного perl/python - говнарство. Не надо давать возможность делать так.
Если бы с этим можно было бы как-то удобно работать из shell, типа как в nushell, например, это имело бы какой-то смысл. Но нет. И рождается теперь такое например: https://unix.stackexchange.com/questions/407850/how-to-use-t...

Стоит ли говорить, что лучше бы он просто написал на perl то, что ему нужно?

Я, с одной стороны придираюсь, с другой стороны правда не понимаю зачем неплохую идею доводить до абсурда.

Ответить | Правка | Наверх | Cообщить модератору

127. "Представлена новая командная оболочка nushell"  +3 +/
Сообщение от анонн (ok), 30-Авг-19, 10:51 
>> Можно, но на мой взгляд, это будет все равно костыль/полумера - передаем
>> Хотя, с другой стороны, задумано libxo вообще-то для "форматированного вывода" - с чем оно, имхо, прекрасно справляется.
> Как по мне, libxo задуман, чтобы не парсить выхлоп сложных и специфичных
> утилит а-ля gpart или netstat из скриптов. В большей степени на
> perl/python/ruby/js/..., хотя sh + jq (или аналог) тоже возможен (только зачем?).

Это само-собой - для человеков-то оно уже отформатированно "пробелами"
>> в ls как раз еще не встроили
> Пишут, что встроили - https://svnweb.freebsd.org/base?view=revision&revision=284198
> + https://wiki.freebsd.org/LibXo .
> Однако, впиливание libxo в условные ls или wc - это тоже неоправданное
> усложнение.
> Зачем хочется получать выхлоп условного netstat в json/xml мне понятно, зачем хочется
> получать выхлоп ls/wc в них - не понятно. Любой язык программирования
> позволяет сделать это своими средствами и так и надо делать. Вызывать
> ls --libxo json для получения списка директорий из условного perl/python -
> говнарство. Не надо давать возможность делать так.


commit 8d50f6fe856dd7e9d32b7ac4867a8e89e82d1e9a
Author: cem <cem@FreeBSD.org>
Date:   Wed Jan 17 22:47:34 2018 +0000

    Convert ls(1) to not use libxo(3)
    
    libxo imposes a large burden on system utilities. In the case of ls, that
    burden is difficult to justify -- any language that can interact with json
    output can use readdir(3) and stat(2).


Ответить | Правка | Наверх | Cообщить модератору

129. "Представлена новая командная оболочка nushell"  +/
Сообщение от пох. (?), 30-Авг-19, 11:14 
> Author: cem <cem@FreeBSD.org>

надо ж, нашелся хоть один (полу) вменяемый (полу - потому что опять ниасилен ifdef)

интересно, сколько уязвимостей вывалится из этой очередной ненужно, если в нее чуть-чуть пальчиком потыкают?

Учитывая что очередной code exec в прекрасной libxml2 по сей день находят раз в пару месяцев (не потому что их стало меньше ,конечно, а потому что всем надоело)

Ответить | Правка | Наверх | Cообщить модератору

139. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 30-Авг-19, 14:42 
> полу - потому что опять ниасилен ifdef

Ну и зачем он тут нужен? Это блин ещё хуже, чем неотключаемое наличие lixo'шного выхлопа в ls.
Бесполезный код придётся поддерживать, "продвинутые" пользователи будут жаловаться, что не работает, выносить мозг странными вопросами и т.п.
Не нужно поощрять возможность сделать херню, даже опционально.

Ifdef в этом месте признак не гибкости, а неуверенности в своей правоте.

Ответить | Правка | Наверх | Cообщить модератору

141. "Представлена новая командная оболочка nushell"  +/
Сообщение от пох. (?), 30-Авг-19, 17:13 
> Ну и зачем он тут нужен?

потому что следом появились бы такие же в ifconfig и прочих местах. И я был бы счастлив одним на всю систему -DNOLIBXO

Ответить | Правка | Наверх | Cообщить модератору

143. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 30-Авг-19, 17:58 
> И я был бы счастлив одним на всю систему -DNOLIBXO

А, ты об этом. С этим соглашусь.
Не согласен был с оборачиванием ifdef'ом одного лишь ls.

Ответить | Правка | Наверх | Cообщить модератору

135. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 30-Авг-19, 14:14 
> libxo imposes a large burden on system utilities. In the case of ls, that
> burden is difficult to justify -- any language that can interact with json
> output can use readdir(3) and stat(2).

Круто! И то, что провели работу над ошибками, и то, что их мотивация выпилить libxo из ls похожа на то, что я про это думаю.

Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

116. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от _ (??), 30-Авг-19, 04:51 
Срам то какой! :(
Линуксойды - копипастеры бойлерплейта, ну а фуле от ракешкумаров ожидать :(
Ответить | Правка | К родителю #87 | Наверх | Cообщить модератору

124. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (122), 30-Авг-19, 09:36 
Это не овер.
Это АПИ: даёшь команду, получаешь машино-читаемый ответ из ls.

Что не писать сложные фильтры, зависящие от реализации и проч. нюансы.

Это для  скриптования оч. хор.

Ответить | Правка | К родителю #84 | Наверх | Cообщить модератору

137. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 30-Авг-19, 14:24 
> даёшь команду, получаешь машино-читаемый ответ из ls.

Но зачем? Каждый язык, умеющий парсить json умеет всё, что умеет ls. В чём профит?

Ответить | Правка | Наверх | Cообщить модератору

190. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (189), 02-Сен-19, 11:23 
Вас пример с | where size > 10kb не убедил? Фильтр, который и парсит json, может быть отдельной утилитой. Ему не нужно ничего знать про файлы.
Ответить | Правка | Наверх | Cообщить модератору

193. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 02-Сен-19, 18:13 
> Вас пример с | where size > 10kb не убедил?

Конечно нет. Чего тут может убедить-то?
То же самое делается awk'ом, и очень тривиально.

> Фильтр, который и парсит json, может быть отдельной утилитой. Ему не нужно ничего знать про файлы.

Зато нужно знать про все возможные схемы json, которые в него прилетят.

Ответить | Правка | Наверх | Cообщить модератору

194. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (189), 02-Сен-19, 19:25 
>То же самое делается awk'ом, и очень тривиально.

Да, и как же? Пишется adhoc парсер для каждой новой утилиты? Или классика, по номеру столбца выбирать?

>Зато нужно знать про все возможные схемы json, которые в него прилетят.

Для выборки значения по ключу теперь потребовалась схема.

Ответить | Правка | Наверх | Cообщить модератору

195. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 02-Сен-19, 19:40 
>>То же самое делается awk'ом, и очень тривиально.
> Да, и как же? Пишется adhoc парсер для каждой новой утилиты? Или классика, по номеру столбца выбирать?

Да, именно так. В этой теме было уже по меньшей мере два примера, как (автор сообщений не я, если что).

>>Зато нужно знать про все возможные схемы json, которые в него прилетят.
> Для выборки значения по ключу теперь потребовалась схема.

Конечно. Очевидно, что у ps и у ls будет разный по смыслу выхлоп - https://www.opennet.ru/openforum/vsluhforumID3/118309.html#55 .
(у ls libxo'шный выхлоп, к счастью, оторвали, но для примера - ок)
Это если мы про FreeBSD utils и libxo.
Если мы про nushell, то я не смотрел, как именно там сделано. Если по-аналогии с powershell, то история разные объекты в разных случаях и необходимость уметь понимать, с чем мы имеем дело никуда не делась. Там, вероятно, сложности будут не такие вопиющие, как в примере с libxo (потому что то, что с libxo делалось, насколько я понимаю, вообще без оглядки на использование в стиле powershell), но концептуально никуда не денутся.

Ответить | Правка | Наверх | Cообщить модератору

52. "Представлена новая командная оболочка nushell"  +2 +/
Сообщение от Crazy Alex (??), 29-Авг-19, 14:53 
Оно будет иметь хоть какой-то право на жизнь если будет обратно-совместимо с существующим всем - утилитами, скриптами, привычками. То есть пишешь как писал - получаешь те же резулдьтаты, что и в bash. Ставишь, я не знаю, тройной пайп или ту самуб шляпу - получаешь "расширенный" вариант. Только эту совместимость поддерживать - немного свихнёшься, а без неё - не взлетит (и правильно).
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

107. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Wilem (?), 29-Авг-19, 22:48 
Культ старья ни к чему хорошему не приведёт.
Ответить | Правка | Наверх | Cообщить модератору

117. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от _ (??), 30-Авг-19, 04:56 
ты уже заменил колёса на квадратные? Д,Б!(С)
Ответить | Правка | Наверх | Cообщить модератору

130. "Представлена новая командная оболочка nushell"  +/
Сообщение от пох. (?), 30-Авг-19, 11:15 
> ты уже заменил колёса на квадратные? Д,Б!(С)

каменный век! Только старперы ездят на квадратных. У нормального-то хипстера - глянь, треугольные!

Ответить | Правка | Наверх | Cообщить модератору

147. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Wilem (?), 30-Авг-19, 18:29 
Я с юниксами и шеллами и программированием года так с 1996. Только потому, что беш - старый и все его знают, не делает его лучшим или идеальным. Как-то так получается, что прогресс идёт через обобщение опыта и переход на что-то лучшее.  Правда, что бы понять что лучшее, а что худшее - надо в теме неплохо разбираться. Беш задрал - уже сил нет, и концептуально новый шелл давно уже назрел.
Ответить | Правка | К родителю #117 | Наверх | Cообщить модератору

92. "Представлена новая командная оболочка nushell"  +/
Сообщение от KonstantinB (ok), 29-Авг-19, 20:42 
Непонятно, зачем все ломать было для этой концепции. Достаточно научиться работать с JSON, а все остальное оставить как было.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

148. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от Wilem (?), 30-Авг-19, 18:34 
JSON непозволительно беден в поддерживаемых типах данных. Ну и собственно nu с джейсоном работать умеет, насколько это возможно, т.к. смотри бедноту типов.
Ответить | Правка | Наверх | Cообщить модератору

150. "Представлена новая командная оболочка nushell"  +/
Сообщение от KonstantinB (ok), 30-Авг-19, 18:48 
А каких типов данных не хватает для шелла? Массивы есть, хэш-таблицы есть, числа есть, булевые значения есть, null есть. Что еще надо? Строгую типизацию в шелл? Нафига она там?
Ответить | Правка | Наверх | Cообщить модератору

162. "Представлена новая командная оболочка nushell"  +/
Сообщение от Michael Shigorinemail (ok), 30-Авг-19, 22:07 
Таки читайте воспоминания Ашманова про "единую шину" "умненьких разработчиков" -- вдруг что-то да дойдёт, _кто_ непригоден для работы и где "единый формат данных", а где та несусветная чушь, что приведена в тексте новости как достижение.
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

17. "Представлена новая командная оболочка nushell"  –4 +/
Сообщение от Аноним (17), 29-Авг-19, 12:36 
Согласен, что баш скрипты в общем случае более гибки. Особенно если сравнивать с текущей веврсии этого nushell, в которой судя по всему ещё даже условий, циклов и прочего не завезли.

Но если гововорить про пример с ls, то аналогичный эффект в баше можно достичь вот так:
find . -maxdepth 1 -type f -size +10k -exec ls {} \;

Мне кажется, что в nushell всё же более лаконичный синтаксис.

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

23. "Представлена новая командная оболочка nushell"  +2 +/
Сообщение от Аноним (5), 29-Авг-19, 12:43 
Метаязыки не нужны.
Ответить | Правка | Наверх | Cообщить модератору

25. "Представлена новая командная оболочка nushell"  +5 +/
Сообщение от Аноним (25), 29-Авг-19, 12:55 
А вы дошли до страницы в мане, где find болванки прожигает?
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

26. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Аноним84701 (ok), 29-Авг-19, 12:56 

> Но если гововорить про пример с ls, то аналогичный эффект в баше
> можно достичь вот так:
> find . -maxdepth 1 -type f -size +10k -exec ls {} \;

% ls -l | awk '$5>10000'

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

47. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (17), 29-Авг-19, 14:30 
Ну так гораздо понятнее да. Ну и эффект не соответствует выводу команды ls, из которого убрали отфильтрованные файлы.
Ответить | Правка | Наверх | Cообщить модератору

57. "Представлена новая командная оболочка nushell"  +/
Сообщение от Crazy Alex (??), 29-Авг-19, 14:59 
...и вместо читаемого слёту получаем нечто, где надо понимать, а что там за пятое поле. Хотя компактнее, конечно.
Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

62. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Аноним84701 (ok), 29-Авг-19, 15:09 
> ...и вместо читаемого слёту получаем нечто, где надо понимать, а что там

Если хочется получить максимально близкий "перевод"  примера
> ls | where size>10k

то придется так.

Для эстетствующих  есть вариант:


ls -l | awk -v 'size_col=5' '$size_col>10000'

Ответить | Правка | Наверх | Cообщить модератору

175. "Представлена новая командная оболочка nushell"  +/
Сообщение от Анонимный Алкоголик (??), 31-Авг-19, 21:05 
>> ...и вместо читаемого слёту получаем нечто, где надо понимать, а что там
> Если хочется получить максимально близкий "перевод"  примера
>> ls | where size>10k
> то придется так.
> Для эстетствующих  есть вариант:
>
 
> ls -l | awk -v 'size_col=5' '$size_col>10000'
>  

У нас из любимых файлов такие:
Инцидент "Бедфорд".mpeg
Stormy Daniels.mp

(короче, правильно find)

Ответить | Правка | Наверх | Cообщить модератору

177. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним84701 (ok), 31-Авг-19, 21:48 
> У нас из любимых файлов такие:
> Инцидент "Бедфорд".mpeg
> Stormy Daniels.mp
> (короче, правильно find)

Зачем писать загадками?
Что не так (нет, я догадываюсь, но неплохо бы услышать подтверждение)?
long listing format -l, если что, отнюдь не глупые люди придумали:
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/l...
> I "%s %u %s %s %u %s %s\n", <file mode>, <number of links>,
>   <owner name>, <group name>, <size>, <date and time>,
>   <pathname>
>

Ответить | Правка | Наверх | Cообщить модератору

185. "Представлена новая командная оболочка nushell"  +/
Сообщение от Анонимный Алкоголик (??), 02-Сен-19, 05:09 
> Зачем писать загадками?
> Что не так (нет, я догадываюсь, но неплохо бы услышать подтверждение)?
> long listing format -l, если что, отнюдь не глупые люди придумали:
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/l...
>> I "%s %u %s %s %u %s %s\n", <file mode>, <number of links>,
> >   <owner name>, <group name>, <size>, <date and time>,
>>   <pathname>

Ну эта... Как эта... Эта ну такой вот файл. Допустим их там не 2... Это в глазах двоится.
Опровергаем. Поднимаем.

Ответить | Правка | Наверх | Cообщить модератору

31. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от bubuka (?), 29-Авг-19, 13:22 
find . -maxdepth 1 -type f -size +10k -ls, тогда не будет на каждый файл по процессу запускать
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

43. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от Ordu (ok), 29-Авг-19, 14:17 
> Но если гововорить про пример с ls, то аналогичный эффект в баше можно достичь вот так:
> find . -maxdepth 1 -type f -size +10k -exec ls {} \;

А это уже синтаксис find, а не синтаксис bash. ad hoc решение для файлов.

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

93. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от anonymous (??), 29-Авг-19, 20:42 
Вообще это юнихвей, когда одна программа делает одно действие и делает это хорошо.
Ответить | Правка | Наверх | Cообщить модератору

97. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 29-Авг-19, 21:28 
> Вообще это юнихвей, когда одна программа делает одно действие и делает это
> хорошо.

Это ты намекаешь, что find делает одно действие? find -- это комбайн, да такой, что таких ещё поискать надо. Сделай man find в консольке и почитай.

Ответить | Правка | Наверх | Cообщить модератору

120. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Аноним (120), 30-Авг-19, 08:34 
и что этому комбайну мешает быть одной программой, которая делает эти действия хорошо?
Ответить | Правка | Наверх | Cообщить модератору

134. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Ordu (ok), 30-Авг-19, 13:45 
> и что этому комбайну мешает быть одной программой, которая делает эти действия
> хорошо?

Ничто. Но и тем не менее, если unixway -- это на каждое действие по программе, то find -- это не unixway, потому что тут на много действий одна программа.

Ответить | Правка | Наверх | Cообщить модератору

136. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Andrey Mitrofanov_N0 (??), 30-Авг-19, 14:19 
>если unixway -- это на каждое
> действие по программе,

Нет.

>то find -- это не unixway

Нет.

>, потому что
> тут на много действий одна программа.

Ответить | Правка | Наверх | Cообщить модератору

138. "Представлена новая командная оболочка nushell"  –2 +/
Сообщение от Ordu (ok), 30-Авг-19, 14:33 
>>если unixway -- это на каждое
>> действие по программе,
> Нет.

Нет.

>>то find -- это не unixway
> Нет.

Нет.


Ответить | Правка | Наверх | Cообщить модератору

140. "Представлена новая командная оболочка nushell"  +1 +/
Сообщение от Andrey Mitrofanov_N0 (??), 30-Авг-19, 14:54 
>>>если unixway -- это на каждое
>>> действие по программе,
>> Нет.
> Нет.

Уникальное расширенное предложение.  Торопитесь!

"" Если Вы хорошо попросите [и не раньше!], я дам вам ссылочку на taoup -- на объяснения про юникс, про принципы, про почему не нарушение, про ... ""
я-- http://www.opennet.ru/openforum/vsluhforumID3/117299.html#132

Ответить | Правка | Наверх | Cообщить модератору

142. "Представлена новая командная оболочка nushell"  –3 +/
Сообщение от Ordu (ok), 30-Авг-19, 17:57 
>>>>если unixway -- это на каждое
>>>> действие по программе,
>>> Нет.
>> Нет.
> Уникальное расширенное предложение.  Торопитесь!
> "" Если Вы хорошо попросите [и не раньше!], я дам вам ссылочку
> на taoup -- на объяснения про юникс, про принципы, про почему
> не нарушение, про ... ""
> я-- https://www.opennet.ru/openforum/vsluhforumID3/117299.html#132

Я читал TAOUP лет пятнадцать назад, оно выглядело тогда откровением свыше, но сегодня я стал старше и умнее, и теперь оно выглядит попыткой натянуть сову на глобус. То есть попыткой взять существующий unix, и написать концепцию рационализирующую существующее положение дел, которая будет говорить, что то что есть -- хорошо, то чего нет -- плохо. Если X11 не влезает в концепцию и использует бинарный протокол вместо текстового, значит мы подопрём концепцию ad hoc костылём. Если find не влезает в концепцию, потому что комбайн, мы подопрём концепцию ещё одним ad hoc костылём. И на каждое несоответствие теоретической концепции с реальностью, мы воткнём ещё один рационализирующий ad hoc костыль.

Это ущербная методология, потому что действуя таким образом, под любое явление можно создать концепцию, которому это явление будет соответствовать. Любая правильная методология построения концепции даст концепцию, которой ни одно практическое решение не соответствует. Такая концепция будет _полезна_, потому что она позволит видеть, что не соответствует, а значит искать способы сделать это лучше. Концепция же которая рационализирует статус кво может быть полезна только в политических целях, чтобы громить оппонентов или воодушевлять сторонников. Но мы же, вроде, технари, а не политики? Или я ошибаюсь?

find содержит себе, например, синтаксис описания выборки, чтобы фильтровать данные, выбирая из них интересующее. Мы легко можем представить себе универсальный синтаксис, который будет работать не только с файлами, а с любыми данными. Есть sql, есть R, есть awk -- есть куча _универсальных_ вещей для фильтрации. В coreutils есть ряд утилит, позволяющих фильтровать поток данных. В конце-концов, в shell'е есть условные конструкции, которые позволяют фильтровать даные. Но find использует свой собственный ad hoc костыль. Но Эрик Раймонд рассказывает нам о том, что find -- это unix way. Его концепция unix-way ущербна и непригодна для применения без доработки напильником, потому что совершенно очевидно, что наличие в unix такого комбайна как find -- это провал концепции "программа делает одну небольшую вещь, но делает её хорошо". SQL и R, позволяют описывать гораздо лучше и понятнее гораздо более сложные выборки данных. awk позволяет работать с выборками гораздо лучше, выписывая много фильтров одновременно, и вешая на каждый фильтр свой обработчик. find же запиливает свой собственный ущербный синтаксис, только потому, что авторы не нашли способа как написать маленькую программу, которая хорошо умеет только рекурсивно обходить директории, обрабатывая всякие нюансы типа ссылок, а фильтрацию оставить другим утилитам, тому же awk'у например.

find -- это провал концепции, но для Эрика Раймонда -- это успех концепции. Чёрное -- это белое. Война -- это мир. Любовь -- это ненависть. И всё из-за ущербности методологии.

Ответить | Правка | Наверх | Cообщить модератору

168. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от Дон Ягон (ok), 31-Авг-19, 00:59 
> Эрик Раймонд

Так себе авторитет, ИМХО.

>  find -- это провал концепции "программа делает одну небольшую вещь, но делает её хорошо"

Позвольте полюбопытствовать, почему именно? Потому что там есть опции а-ля "--ls" или "--delete"? Если так, то имхо это придирка.

> find же запиливает свой собственный ущербный синтаксис, только потому, что авторы не нашли способа как написать маленькую программу, которая хорошо умеет только рекурсивно обходить директории, обрабатывая всякие нюансы типа ссылок, а фильтрацию оставить другим утилитам, тому же awk'у например.
> Есть sql, есть R, есть awk -- есть куча _универсальных_ вещей для фильтрации. В coreutils (findutils же вроде?) есть ряд утилит, позволяющих фильтровать поток данных. В конце-концов, в shell'е есть условные конструкции, которые позволяют фильтровать даные. Но find использует свой собственный ad hoc костыль

find делает всё правильно. awk - утилита для обработки текста. Она не знает ничего ни про права, ни про овнера/группу, ни про любое другое свойства любого объекта фс. В то же время, find только про это и знает, его возможности фильтрации по имени файла ограничены глобами, если хочется чего-то бОльшего, то нужно передавать выхлоп find через пайп хоть тому же awk.
Что касается sql и R, то лично я бы не хотел использовать подобный синтаксис в find. Это слишком многословно. Да, в теории это гибче, на практике, задачи, решаемые при помощи find крайне редко требуют что-то сложнее or|not|and и сравнения свойств объектов фс - такая гибкость просто не требуется, а она не бесплатна. Не имею ничего против приложения, которое работает как find, но вместо его аргументов принимает на вход, например, SQL запросы, но только не в базовой поставке, пожалуйста.

Ответить | Правка | Наверх | Cообщить модератору

173. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 31-Авг-19, 11:28 
> awk - утилита для обработки текста.

Так я о том и говорю. Для обработки текста свой язык фильтрации. Для обработки файлов ещё один язык фильтрации. Для обработки чего угодно ещё запилим ещё один язык фильтрации. На каждый чих запилим по языку фильтрации. Разве нужна концепция unix, чтобы заниматься этой хнёй?

> Не имею ничего против приложения, которое работает как find, но вместо его аргументов принимает на вход, например, SQL запросы, но только не в базовой поставке, пожалуйста.

Не нужен find со встроенным sql -- это не unix-way. Нужен find, который на выходе выдаёт вывод, который затем можно обрабатывать универсальной утилитой с синтаксисом sql. Или с синтаксисом R. Или ещё каким. Можно иметь несколько таких утилиток, с синтаксисами заточенными под разные случаи или вкусы. И вот тогда это будет unix-way: я беру задачу, разбиваю её на подзадачи, под каждую подзадачу выбираю ту утилиту, которая лучше всего на неё заточена, после чего комбинирую эти утилиты в единую командную строку и получаю результат. Если же поисковой синтаксис прибит гвоздями к find, то выбора уже не остаётся.

Ответить | Правка | Наверх | Cообщить модератору

176. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 31-Авг-19, 21:34 
>> awk - утилита для обработки текста.
> На каждый чих запилим по языку фильтрации. Разве нужна концепция unix, чтобы заниматься этой хнёй?

Она именно в этом и заключается. Поэтому, например, мы имеем отдельно awk и sed (были бы они ещё одинаковые в bsd и linux.. но это уже другая история).

> Не нужен find со встроенным sql -- это не unix-way.

Нет, это не так. Синтаксис тут вообще вторичен. Парсер SQL сложнее, синтаксис многословнее, а бОльшая гибкость в задачах find будет почти никогда не нужна. Но find принимающий на вход текущие аргументы или find, принимающий на вход sql будут "юниксвейны" в одинаковой степени.

> Нужен find, который на выходе выдаёт вывод, который затем можно обрабатывать универсальной утилитой с синтаксисом sql. Или с синтаксисом R. Или ещё каким.

А зачем он нужен? Чтобы выпендриваться типа крутой архитектурой? Но она выходит сильно круче решаемых задач -> оверинжиниринг.
Ей богу, я могу придумать только какую-то оторваную от реальности жесть, чтобы sql в find был оправдан. В обычных задачах пользы от этого не будет.
Следовательно конструировать весь этот ужас со "сменными насадками" смысла нет.

И в любом случае, вы можете написать утилиту с каким угодно синтаксисом, которая будет разбирать выхлоп find. Но ведь это не то, чего хотите вы? Вы хотите чтобы недо-find только отдавал описание объектов ФС в каком-то бинарном формате и произвольное число фронтендов, этот формат читающих?
Если да, то это абсурд, потому что не понятно, зачем в этой схеме недо-find нужен вообще - можно же сразу читать данные с ФС, из самой программы, недо-find тут - избыточная абстракция.

> Можно иметь несколько таких утилиток, с синтаксисами заточенными под разные случаи или вкусы.

Можно, но не нужно.

> И вот тогда это будет unix-way:

Это будет оверинжиниринг.

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

А где грань разумности? Можно ведь чуть ли не каждый сискол обернуть примитивной программой и потом конвееры из них строить. Или наоборот, писать монстров на все случаи жизни, а-ля systemd - некоторые тоже считают, что это юниксвейно, ведь оно решает задачу только одну задачу - запуск программ, просто смотрит на неё "достаточно широко"...
Как мне кажется, делать нужно только самые основные возможности, плюс наиболее практичные и часто нужные, если их тривиально написать. Остальной функционал, при необходимости, реализуется сторонними приложениями, которым через пайп передаются данные от предыдущего и так далее.
Если мы говорим о юниксвейном приложении для базовой поставки с ОС.

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

Всё так. Но синтаксис не является признаком "юниксвейности".

Ответить | Правка | К родителю #173 | Наверх | Cообщить модератору

178. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 31-Авг-19, 22:37 
>>> awk - утилита для обработки текста.
>> На каждый чих запилим по языку фильтрации. Разве нужна концепция unix, чтобы заниматься этой хнёй?
> Она именно в этом и заключается. Поэтому, например, мы имеем отдельно awk
> и sed (были бы они ещё одинаковые в bsd и linux..
> но это уже другая история).
>> Не нужен find со встроенным sql -- это не unix-way.
> Нет, это не так. Синтаксис тут вообще вторичен. Парсер SQL сложнее, синтаксис
> многословнее, а бОльшая гибкость в задачах find будет почти никогда не
> нужна.

Но когда она будет нужна, я не смогу использовать find с sql. Мне придётся выёживаться мухой на стекле, чтобы получить csv, который затем можно будет затолкать в sqlite, чтобы затем сделать оттуда выборку.

> Но find принимающий на вход текущие аргументы или find, принимающий
> на вход sql будут "юниксвейны" в одинаковой степени.

Мне не нужен find принимающий на вход sql. Всё что он должен принимать -- это список файлов/директорий, которые выданы ему шеллом. По-хорошему, он даже вообще не нужен, потому что это умеет ls, и рекурсивно обходить директории ls тоже умеет. Ещё du умеет обходить рекурсивно. Зачем нужен этот десяток реализаций рекурсивного обхода директорий, когда можно обойтись одним?

>> Нужен find, который на выходе выдаёт вывод, который затем можно обрабатывать универсальной утилитой с синтаксисом sql. Или с синтаксисом R. Или ещё каким.
> А зачем он нужен? Чтобы выпендриваться типа крутой архитектурой? Но она выходит
> сильно круче решаемых задач -> оверинжиниринг.

Да ладно, оверинжиниринг -- это find, в который напихали всё что нужно, всё что не нужно, и ещё немного.

> Ей богу, я могу придумать только какую-то оторваную от реальности жесть, чтобы
> sql в find был оправдан. В обычных задачах пользы от этого
> не будет.

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

Попробуй сделать это find'ом, и ты быстро придёшь к выводу, что проще использовать ad hoc решения, типа всяких там интересных опций cp, которые позволяют условно копировать файлы. Если конечно в списке опций cp есть набор, позволяющий выполнить нужную тебе операцию над множествами. Или ещё проще даже забить болт, и сделать cp -r dir1/* dir2/, забив на ненужные копирования файлов. Ну будет оно 10-20-30 лишних минут копировать, и чё? Зато не надо 10 минут возиться с сочинением злой командной строки, покуривая между делом маны.

А если найденные файлы можно скормить языку, который умеет в sql, то... эмм... А нужен ли нам вообще в системе find? Нужен ли нам du? Может там ещё пяток утилит, которые можно выкинуть? И ещё можно будет опции cp прочистить, избавив его от всех этих условных копирований. Оставить только то, что часто используется, и поэтому удобно иметь аббревиатуры,

>[оверквотинг удален]
> в каком-то бинарном формате и произвольное число фронтендов, этот формат читающих?
> Если да, то это абсурд, потому что не понятно, зачем в этой
> схеме недо-find нужен вообще - можно же сразу читать данные с
> ФС, из самой программы, недо-find тут - избыточная абстракция.
>> Можно иметь несколько таких утилиток, с синтаксисами заточенными под разные случаи или вкусы.
> Можно, но не нужно.
>> И вот тогда это будет unix-way:
> Это будет оверинжиниринг.
>> я беру задачу, разбиваю  её на подзадачи, под каждую подзадачу выбираю ту утилиту, которая лучше всего на неё заточена, после чего комбинирую эти утилиты в единую командную строку и получаю результат.
> А где грань разумности?

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

>> Если же поисковой синтаксис прибит гвоздями к find, то выбора уже не остаётся.
> Всё так. Но синтаксис не является признаком "юниксвейности".

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

Ответить | Правка | К родителю #176 | Наверх | Cообщить модератору

179. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 01-Сен-19, 16:50 
> Но когда она будет нужна, я не смогу использовать find с sql. Мне придётся выёживаться мухой на стекле, чтобы получить csv, который затем можно будет затолкать в sqlite, чтобы затем сделать оттуда выборку.

Ключевой вопрос: а когда она будет нужна? Но безусловно, если есть регулярная задача, в которой нужно делать выборку по объектам ФС, да так хитро, что без SQL не обойтись - это повод написать своё, всецело устраивающее решение. Но не тянуть ничем не оправданные во всех прочих случаях костыли в стандартные утилиты.

> Мне не нужен find принимающий на вход sql. Всё что он должен принимать -- это список файлов/директорий, которые выданы ему шеллом.

Конечно, ведь это так эффективно - гонять данные от одного процесса к другому, особенно, когда нет никаких причин сразу не сделать всё во втором процессе.

> По-хорошему, он даже вообще не нужен, потому что это умеет ls, и рекурсивно обходить директории ls тоже умеет. Ещё du умеет обходить рекурсивно. Зачем нужен этот десяток реализаций рекурсивного обхода директорий, когда можно обойтись одним?

Скопипасть или вынеси в библиотеку. Проблема то.

> Да ладно, оверинжиниринг -- это find, в который напихали всё что нужно, всё что не нужно, и ещё немного.

Например, что? --delete? --ls? Ну да, это небольшое пренебрежение идеологией во имя практичности.
Но настолько очевидно нужное и тривиальное, что всерьёз к этому цепляться на мой взгляд - придирки.
find делает, в целом, ровно то, что должен - показывает те объекты дерева ФС, которые удовлетворяют описанным опциями командной строки требованиями.

>> Ей богу, я могу придумать только какую-то оторваную от реальности жесть, чтобы sql в find был оправдан. В обычных задачах пользы от этого не будет.
> Есть две директории, в них много одинаковых файлов, но есть разные, я хочу создать третью директорию как объединение/пересечение/дополнение/любая-другая-операция-над-множествами из этих двух. В идеале даже сделать так, чтобы из одной из первых двух была бы сделана "третья", минимальным копированием файлов, потому что она находится на тормозном внешнем носителе, а файлы довольно большие.

Ну я и говорю: высосанная из пальца жесть. Которую даже ценителям надо делать один раз в жизни.
Конечно, это повод делать из простой и быстрой утилиты комбайн.

> Попробуй сделать это find'ом, и ты быстро придёшь к выводу, что проще использовать ad hoc решения, типа всяких там интересных опций cp, которые позволяют условно копировать файлы. Если конечно в списке опций cp есть набор, позволяющий выполнить нужную тебе операцию над множествами. Или ещё проще даже забить болт, и сделать cp -r dir1/* dir2/, забив на ненужные копирования файлов. Ну будет оно 10-20-30 лишних минут копировать, и чё? Зато не надо 10 минут возиться с сочинением злой командной строки, покуривая между делом маны.

Конечно же я не буду решать эту задачу find'ом. Есть же rsync.

> А если найденные файлы можно скормить языку, который умеет в sql, то... эмм... А нужен ли нам вообще в системе find? Нужен ли нам du? Может там ещё пяток утилит, которые можно выкинуть? И ещё можно будет опции cp прочистить, избавив его от всех этих условных копирований. Оставить только то, что часто используется, и поэтому удобно иметь аббревиатуры,

А с чего ты решил, что твоя конструкция вообще будет эффективнее? Она также обойдёт ВСЕ файлы в директориях и потрогает диск столько же раз.
Замена N маленьких приложений на один комбайн - действие противоположное "юниксвею" по смыслу.

> Задача фильтрации информации -- это вещь, которая нужна везде и постоянно. Вынести её в отдельную утилиту, которая умеет _хорошо_ фильтровать: сам бог велел.

1) Такие утилиты уже есть.
2) Отрывать функционал фильтрации там, где он действительно нужен - вредительство и больше ничего. Наличие ограниченного функционала фильтрации где-то не отменяет утилит из пункта 1.

>>> Если же поисковой синтаксис прибит гвоздями к find, то выбора уже не остаётся.
>> Всё так. Но синтаксис не является признаком "юниксвейности".
> Ой, ну давайте теперь будем жонглировать словами, играя в самую низкопошибную демагогию. Я уже третий? четвёртый? раз объясняю что я имею в виду? Не надо делать вид, что ты до сих пор не понял.

По тексту моих ответов ты мог бы и сообразить, что я тебя понял.
Только я продолжаю утверждать, что то, чего хочешь ты не имеет отношения к "unix way".

PS: Идеология должна служить коллективу, а не коллектив идеологии. Иначе это уже тоталитарная секта, а не коллектив.

Ответить | Правка | К родителю #178 | Наверх | Cообщить модератору

180. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 01-Сен-19, 19:42 
>> Мне не нужен find принимающий на вход sql. Всё что он должен принимать -- это список файлов/директорий, которые выданы ему шеллом.
> Конечно, ведь это так эффективно - гонять данные от одного процесса к
> другому, особенно, когда нет никаких причин сразу не сделать всё во
> втором процессе.

Если нужна эффективность, то тебе не нужен shell -- интерпретатор на интерпретаторе, интерпретатором погоняет. Тебе нужна программа на C. Эффективность -- это к компилируемым языкам, а интерпретаторы -- это для того, чтобы быстро слепить.

> Скопипасть или вынеси в библиотеку. Проблема то.

Угу. И где это сделано кроме как в busybox?

>> Да ладно, оверинжиниринг -- это find, в который напихали всё что нужно, всё что не нужно, и ещё немного.
> Например, что? --delete? --ls? Ну да, это небольшое пренебрежение идеологией во имя
> практичности.

Прикинь, я даже не знал про такие опции, я постоянно пользовался фишкой: -exec rm {} \;. Про ортогональность API разработчики find тоже ничего не слышали?

> Но настолько очевидно нужное и тривиальное, что всерьёз к этому цепляться на
> мой взгляд - придирки.

Вот Реймонд тоже так считает. Когда что-то буквально следует его принципам unix way, он говорит, что это победа unix way. Когда что-то самым гнусным образом нарушает эти принципы, он говорит, что это придирки, практичность важнее, и поэтому это тоже победа unix-way. Поэтому я и говорю, что вся концепция unix-way (её ведь Реймонд назвал словами "unix way" и сформулировал, так?) -- это гнилой политический базар.

> find делает, в целом, ровно то, что должен - показывает те объекты
> дерева ФС, которые удовлетворяют описанным опциями командной строки требованиями.

И он совершенно был бы не нужен, если бы в unix-овом шелле был бы предусмотрен стандартный метод передачи табличных данных через пайп.

>>> Ей богу, я могу придумать только какую-то оторваную от реальности жесть, чтобы sql в find был оправдан. В обычных задачах пользы от этого не будет.
>> Есть две директории, в них много одинаковых файлов, но есть разные, я хочу создать третью директорию как объединение/пересечение/дополнение/любая-другая-операция-над-множествами из этих двух. В идеале даже сделать так, чтобы из одной из первых двух была бы сделана "третья", минимальным копированием файлов, потому что она находится на тормозном внешнем носителе, а файлы довольно большие.
> Ну я и говорю: высосанная из пальца жесть. Которую даже ценителям надо
> делать один раз в жизни.

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

> Конечно же я не буду решать эту задачу find'ом. Есть же rsync.

Во-во. Ещё один ман с тысячью опций. И на каждую специфическую задачу по ещё одному man'у.

> А с чего ты решил, что твоя конструкция вообще будет эффективнее? Она
> также обойдёт ВСЕ файлы в директориях и потрогает диск столько же
> раз.

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

> Замена N маленьких приложений на один комбайн - действие противоположное "юниксвею" по
> смыслу.

Во-во. Я о том же.

>> Задача фильтрации информации -- это вещь, которая нужна везде и постоянно. Вынести её в отдельную утилиту, которая умеет _хорошо_ фильтровать: сам бог велел.
> 1) Такие утилиты уже есть.

Пример?
grep? Ха-ха.
awk? Он так и не научился в заголовки столбцов, их так и приходится отсчитывать на пальцах, чтобы выбрать нужный. Да и синтаксис его совершенно не совместим с shell'ом, приходится жестоко экранировать. Ну, и мне не нравится, то, что в awk не стоит умолчательного действия "вывести совпадающую строку".
R? R умеет в заголовки столбцов, но вот несовместимость синтаксиса с шеллом остаётся. Плюс он ещё менее awk заточен на использование в составе более сложной команды.

> 2) Отрывать функционал фильтрации там, где он действительно нужен - вредительство и
> больше ничего.

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


>>>> Если же поисковой синтаксис прибит гвоздями к find, то выбора уже не остаётся.
>>> Всё так. Но синтаксис не является признаком "юниксвейности".
>> Ой, ну давайте теперь будем жонглировать словами, играя в самую низкопошибную демагогию. Я уже третий? четвёртый? раз объясняю что я имею в виду? Не надо делать вид, что ты до сих пор не понял.
> По тексту моих ответов ты мог бы и сообразить, что я тебя понял.

И тем не менее написал "синтаксис не является признаком юниксвейности". Зачем? Чтобы я усомнился в том, что ты меня понимаешь? Или чтобы я увидел, что ты умеешь в демагогию? Или чтобы была возможность поговорить со мной о демагогии, уведя разговор в сторону? Или зачем? Какую конкретно цель ты преследовал этой фразой?

> Только я продолжаю утверждать, что то, чего хочешь ты не имеет отношения к "unix way".

Давай уточним. Что ты понимаешь под unix-way? То что описал Раймонд в TAOUP? Естественно, что то, что я говорю, не имеет отношения к TAOUP. Я бы себя уважать перестал, если бы оно имело бы отношение. Вот если взять TAOUP, выкинуть оттуда всю воду, разборы конкретных случаев, и оставить исключительно два-три принципа, и ещё две-три цели, которых unix-way пытается достичь, следуя этим принципам. Затем заявить, что эти принципы требуют неукоснительного выполнения, а отклонения от них -- это отклонения от unix-way, то получится декларация, которая уместится в трёх абзацах. К ней можно приложить несколько страниц более развёрнутого описания, и вот тогда, может быть, я и соглашусь с тем, что получится. Смотря что именно будет в том списке принципов. А TAOUP, может быть и описывает unix-way, но если так, то тогда нахрен он нужен такой unix-way? Зигмунд Фройд бы, чётко определил бы TAOUP в тяжкий случай психологической защиты под названием рационализация. Мне не нужны многостраничные высеры порождённые действием психологических защит.

> PS: Идеология должна служить коллективу, а не коллектив идеологии. Иначе это уже
> тоталитарная секта, а не коллектив.

Идея unix-way служит исключительно политическим целям. Никаких технических целей она решить не в состоянии. Тебе интересна политика? Мне интересна, но все эти насквозь прогнившие идеологии единственное предназначение которых пудрить мозги широким массам я изучаю исключительно чтобы лучше понять ущербности мышления широких масс. Других применений им я не могу найти.

Ответить | Правка | К родителю #179 | Наверх | Cообщить модератору

182. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 02-Сен-19, 02:56 
> Если нужна эффективность, то тебе не нужен shell -- интерпретатор на интерпретаторе, интерпретатором погоняет. Тебе нужна программа на C. Эффективность -- это к компилируемым языкам, а интерпретаторы -- это для того, чтобы быстро слепить.

Это совершенно не повод всё усугублять. Считать иначе - странно. Будь все программы, которые предполагается объединять в конвеер толстыми и неэффективными, пользоваться ими в стиле unix-way было бы просто невозможно.

> Угу. И где это сделано кроме как в busybox?

Подсказываю: нигде особенно не делают не потому что не знают, что так можно и/или не умеют. А в busybox есть требование к объёму.

> Прикинь, я даже не знал про такие опции, я постоянно пользовался фишкой: -exec rm {} \;. Про ортогональность API разработчики find тоже ничего не слышали?

Без понятия. Но наличие такой опции в find - логично, правильно и последовательно, чтобы ты там не говорил. Что за любовь к ничем не оправданным fork + exec, блин?

>> Но настолько очевидно нужное и тривиальное, что всерьёз к этому цепляться на мой взгляд - придирки.
> Вот Реймонд тоже так считает.

Почему тебя это вообще волнует? Реймонд - бесполезный горлопан и к принципам unix-way имеет очень мало отношения - по сути, он примазался к тому что уже было сформулировано до него. Смотри да хотя бы википедию.

> Когда что-то буквально следует его принципам unix way, он говорит, что это победа unix way. Когда что-то самым гнусным образом нарушает эти принципы, он говорит, что это придирки, практичность важнее, и поэтому это тоже победа unix-way.

Самым гнусным образом? Нет, не согласен.
Краеугольный камень в философии UNIX - это принцип KISS. Наличие опций вроде -delete и -ls в find не сильно усложняют код (по очевидным причинам) и сильно упрощают решение некоторых задач.
Задача программ - решать те или иные задачи в той или иной среде, а не соответствовать всем заповедям unix-way.

> Поэтому я и говорю, что вся концепция unix-way (её ведь Реймонд назвал словами "unix way" и сформулировал, так?) -- это гнилой политический базар.

Нет, это не так. И вообще, строгих заповедей нет. Реймонд (кажется) сказл как раз про то, что unix-way - это, в целом, KISS. Но он именно сформулировал, т.е. сказал то, что уже делалось по-факту. На мой взгляд, вот лучшая формулировка философии unix:
"Even though the UNIX system introduces a number of innovative programs and techniques, no single program or idea makes it work well. Instead, what makes it effective is the approach to programming, a philosophy of using the computer. Although that philosophy can't be written down in a single sentence, at its heart is the idea that the power of a system comes more from the relationships among programs than from the programs themselves. Many UNIX programs do quite trivial things in isolation, but, combined with other programs, become general and useful tools."

К DOTADIW Реймонд не имеет никакого отношения.

>> find делает, в целом, ровно то, что должен - показывает те объекты дерева ФС, которые удовлетворяют описанным опциями командной строки требованиями.
> И он совершенно был бы не нужен, если бы в unix-овом шелле был бы предусмотрен стандартный метод передачи табличных данных через пайп.

В теории - да.  А на практике.. А на практике быстро захочется не "стандартный метод передачи табличных данных", а как в powershell - когда всё, что передаётся через "пайп" объект.
Круто? С одной стороны - да. Например, потому что имена файлов с пробелами перестанут быть хоть какой-то проблемой. А с другой стороны, это полный ад, потому что использовать shell интерактивно становится почти невозможно. И из-за многословности и из-за того, что каждый отдельный случай требует помнить, какой объект возвращает та или иная команда и какие методы к этому объекту применимы есть.
Сравни, например, создание структуры директорий, аналогичной имеющейся (код для PS не мой):
find . -type d -exec mkdir -p /new/path/{} \;
и
cd $oldDir
Get-ChildItem ./ -Recurse -Directory |Resolve-Path -Relative |ForEach-Object {New-Item -ItemType Directory $newDir/$_}

Нужно ли тут что-то добавлять, или и так всё понятно?

> Не высосанная из пальца жесть. Это один из случаев с которыми я сталкивался. Да, именно с таким случаем я сталкивался единожды. Но я сталкивался с десятками других единичных случаев, когда я реально задумывался о том, что вся эта хвалёная "гибкость" командной строки заканчивается сразу же, как только я сталкиваюсь с неповседневной задачей.

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

> Во-во. Ещё один ман с тысячью опций. И на каждую специфическую задачу по ещё одному man'у.

А как ты хотел? Если через пайпы будут гоняться объекты, а не текст, маны придётся читать ещё чаще, к слову.

>> А с чего ты решил, что твоя конструкция вообще будет эффективнее? Она также обойдёт ВСЕ файлы в директориях и потрогает диск столько же раз.
> Смотря что с чем сравнивать. С cp, например, простейшим решением может оказаться копировать файлы безусловно, даже если я копирую копию файла в него самого. Есть два файла, совпадающих бит-в-бит, но я тем не менее копирую один в другой, дабы не плодить себе специальных случаев для обработки при написании командной строки.

Я сравнивал с не существующей конструкцией "недо-find + нечто, умеющее фильтровать и парсить sql".
Но в любом случае, тебе тогда был нужен rsync, судя по тому, что ты описал.

>> Замена N маленьких приложений на один комбайн - действие противоположное "юниксвею" по смыслу.
> Во-во. Я о том же.

Нет. Я понимаю, что, в теории, ты хочешь утилиту которая умеет рекурсивно обходить директории, которая передаёт всё в фильтратор, который уже передаёт всё в удалятор/переименоватор/что-то ещё.
Но на практике это жестокая жесть и верховенство идеологии над здравым смыслом.
Условное "find ./ | xargs rm -f" вместо "rm -fr ./" - это УЖОС и оверинжиниринг в чистом виде.
Простые вещи должны делаться просто.
Твоя конструкция решает только одну проблему: буквальное соответствие принципу DOTADIW.
Никакие практические проблемы не решаются. Более того, облегчив донельзя условные find и rm мы приходим не только к тому, что удаление директории теперь делается двумя командами, а не одной, но и к тому, что если мы захотим воткнуть в эту схему фильтратор между find'ом и rm'ом, то, в отличие от кастрированных find и rm, фильтратор обречён быть переусложнённым комбайном. Почему? Потому что он должен уметь фильтровать ВСЕ типы объектов, которые подаются ему на вход. Уметь понимать, какие объекты можно друг с другом сравнивать, какие нет. Уметь достаточно сложные выражения. Да много чего ещё должен будет уметь.

>> 1) Такие утилиты уже есть.
> Пример?
> grep? Ха-ха.
> awk? Он так и не научился в заголовки столбцов, их так и приходится отсчитывать на пальцах, чтобы выбрать нужный. Да и синтаксис его совершенно не совместим с shell'ом, приходится жестоко экранировать. Ну, и мне не нравится, то, что в awk не стоит умолчательного действия "вывести совпадающую строку".

Да, например, grep, awk, sed. Perl/python как вариант, хотя это уже часто повод сразу на них и написать.
Снова повторяю: юниксвей - это не когда у тебя одна тулза на все случаи жизни, а когда ты из кучи можешь слепить то, что решает твою проблему.
Серебряной пули всё равно не существует, предположение о том, что мы можем написать универсальный фильтратор на все случаи жизни - ложно. И дело не в синтаксисе, хоть с sql, хоть c R - всё равно их рано или поздно не хватит. Или хватит, но только уродливой конструкцией. Это, кстати, при том, что бОльшую часть времени это будет избыточный и неиспользуемый функционал.

>> 2) Отрывать функционал фильтрации там, где он действительно нужен - вредительство и больше ничего.
> Это утверждение, которое необосновано ничем. В этом треде никто ни разу не высказал ни единого слова, которое можно было бы считать аргументом в пользу этого утверждения.

Оно обосновано принципом KISS и нежеланием городить избыточные абстракции. См. выше примеры про powershell и про find + rm.

> И тем не менее написал "синтаксис не является признаком юниксвейности". Зачем? Чтобы я усомнился в том, что ты меня понимаешь? Или чтобы я увидел, что ты умеешь в демагогию? Или чтобы была возможность поговорить со мной о демагогии, уведя разговор в сторону? Или зачем? Какую конкретно цель ты преследовал этой фразой?

Да, кажется я всё же не в тему немного сказал, извиняюсь. Ну или просто не могу сейчас вспомнить, к чему это было.

> Давай уточним. Что ты понимаешь под unix-way?

Принципы проектирования приложений, главным образом, для использования в базовой поставке unix-like систем.

> То что описал Раймонд в TAOUP?

Знаком с этими принципами (по раймонду) только в рамках страницы на русскоязычной вики.
Вот этой: https://ru.wikipedia.org/wiki/%D0%A4%D0%...

Для меня юниксвейность всегда была тем, что там описано в начале (авторство - Дуг Макилрой).
И - самое главное - это _философия_ unix, а не заповеди, которым нужно следовать с неистовством религиозных фанатиков. Реймонд, на мой взгляд, прав только про KISS, но как по мне, его неправильно считать основоположником этого принципа хоть в какой-то мере.

> что эти принципы требуют неукоснительного выполнения, а отклонения от них -- это отклонения от unix-way

Понимаю, почему у тебя так бомбит даже не читая дальше. Конечно, пересказанное тобою - трэш.

> Зигмунд Фройд бы, чётко определил бы TAOUP в тяжкий случай психологической защиты под названием рационализация.

Вполне возможно. Я не читал. В целом, Реймонд воспринимается мной как балабол, который очень много говорит и советует, но не понятно, что на самом деле сделал нужного.

> Мне не нужны многостраничные высеры порождённые действием психологических защит.

Так игнорируй. И "Закон Линуса" и "Собор и Базар" реймонда - графоманские высеры, например, почему я не удивлён, что TAOUP, судя по всему, тоже?
Немного не в тему, но освежая в википедии память о реймонде не смог не заржать в голос с этого: "Реймонд — активный либертарианец (также называет себя политическим анархистом), имеет чёрный пояс в тхэквондо, он неоязычник и выступает за право носить и использовать огнестрельное оружие."
Неплохо так у чувака в голове намешано, да?)

> Идея unix-way служит исключительно политическим целям. Никаких технических целей она решить не в состоянии. Тебе интересна политика? Мне интересна, но все эти насквозь прогнившие идеологии единственное предназначение которых пудрить мозги широким массам я изучаю исключительно чтобы лучше понять ущербности мышления широких масс. Других применений им я не могу найти.

Unix-way - это философия написания простых и практичных программ. Ограниченно применимая.
Хотя это конечно как посмотреть. Для кого-то это религия или полит. идеология.
Вот это мне как раз (в конексте юниксвея) не интересно.
Ущербность мышления - считать, что unix-way (или любая иная философия проектирования чего-либо, сформулированная сложнее чем KISS) должна беспрекословно соблюдаться. Например, и vi и top появились ещё в ТЕ времена, формально являются нарушением "строгого" unix-way, но ничего от этого не случилось. И их даже нельзя назвать такими уж комбайнами (прим. - vi, но не vim).

Ответить | Правка | К родителю #180 | Наверх | Cообщить модератору

187. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 02-Сен-19, 10:09 
>> что эти принципы требуют неукоснительного выполнения, а отклонения от них -- это отклонения от unix-way
> Понимаю, почему у тебя так бомбит даже не читая дальше. Конечно, пересказанное
> тобою - трэш.

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

При этом, ты можешь сколько угодно демонстративно отрекаться от Эрика Раймонда, но ты сейчас делаешь ровно то же самое, что и он. _Ровно_ то же самое. И все эти отречения таким образом, яйца выеденного не стоят.

find можно делать как угодно, так как ты считаешь это удобным, но не надо считать что автоматические будет получаться так, что всё, что удобно тебе -- это unix-way. Тебе хочется всего и сразу, и иметь принципы, и делать всё что захочется, всё что ты считаешь удобным. Но так не бывает. Если твои принципы никак не ограничивают тебя, то это не принципы. Если всё, на что твои принципы способны -- это рационализировать статус кво, то это не принципы, а рационализация. Рационализация же совершенно бесполезна в инженерном смысле, она может быть полезна в психологическом/политическом смыслах, но в техническом она бесполезна и даже вредна.

Ответить | Правка | К родителю #182 | Наверх | Cообщить модератору

192. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 02-Сен-19, 18:10 
>>> что эти принципы требуют неукоснительного выполнения, а отклонения от них -- это отклонения от unix-way
>> Понимаю, почему у тебя так бомбит даже не читая дальше. Конечно, пересказанное тобою - трэш.
> Нет, не понимаешь. Пытаться на принципах созданных в популистских целях -- это абсолютно ущербный подход. Не принципы надо гнуть под реализацию, а реализацию под принципы. Если ты гнёшь принципы, то это называется беспринципность, или отсутствие принципов.

Какие принципы? Где ты такое слово-то нашёл? Сам сказал - сам опроверг - очень удобно.
Речь о филососфии unix, о ПОДХОДЕ к проектированию, а не о заповедях, сколько раз это нужно повторить, чтобы ты меня услышал?
Вот например, философия archlinux - rolling релизы и стремление поддерживать всегда актуальные версии. Если в archlinux откладывается попадание какого-то обновления, например, из-за того, что там есть баг или уязвимость - это не значит, что они нарушают какие-то принципы или попирают философию. Это значит, что они не являются тупыми фанатиками.
Ты же выставляешь тупейшую форму фанатизма не то что за норму, а за идеальное положение вещей.
"Принципы" проектирования unix были написаны постфактум и отражали реальное положение вещей, а не наоборот - никто не писал юникс по заранее написаным канонам. Философия появилась после, как попытка понять, почему юникс так выстрелил.

tl;dr - все твои претенезии исключительно от извращённого понимания того, что есть unix-way.

> При этом, ты можешь сколько угодно демонстративно отрекаться от Эрика Раймонда, но ты сейчас делаешь ровно то же самое, что и он. _Ровно_ то же самое. И все эти отречения таким образом, яйца выеденного не стоят.

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

> find можно делать как угодно, так как ты считаешь это удобным, но не надо считать что автоматические будет получаться так, что всё, что удобно тебе -- это unix-way.

Я так и не считаю. Цитату, где я пишу так в студию.

> Тебе хочется всего и сразу, и иметь принципы, и делать всё что захочется, всё что ты считаешь удобным. Но так не бывает.

Нет. Во-первых, я уже написал, что принципы - это твоя выдумка и больше ничего. Далее я написал, что "принципы" - это не заповеди, а потому строгое следование им не требуется.
В третьих, я сразу ограничил область применения "юникс-подхода" - 1) он хорош там, для чего был создан и в аналогичном 2) он по-определению предполагает не программы-комбайны, а совмещение возможностей нескольких программ. Даже если одной программой-комбайном удобнее.
("Фильтратор" в твоей конструкции именно комбайн. А find и rm - бесполезные, неюзабельные обрубки.)
Так что врать не надо.

> Если твои принципы никак не ограничивают тебя, то это не принципы.

"Юникс-вей" - это и не принципы. И не заповеди. Сколько ещё раз я должен это повторить?

> Если всё, на что твои принципы способны -- это рационализировать статус кво, то это не принципы, а рационализация.

Нет, это философия, пытающаяся сформулировать подходы к написанию простых и универсальных решений.
Рационализация? Блин, АБСОЛЮТНО ВСЁ ПРОГРАММИРОВАНИЕ ЭТО РАЦИОНАЛИЗАЦИЯ!
Никто, кроме ПОЕХАВШИХ не пишет программы ради того, чтобы они соответствовали какой-то идеологии!
Юникс был написан чтобы РАБОТАТЬ, а не чтобы соответствовать unix-way!
Если проблему невозможно эффективно решить следуя каким-то "принципам", а проблему решать нужно, значит нужно накласть на все "принципы", "заповеди" и весь прочий сектантский бред и ДЕЛАТЬ.
Не знаю, замени слово "принципы" на "рекомендации", может так тебя отпустит.

> Рационализация же совершенно бесполезна в инженерном смысле, она может быть полезна в психологическом/политическом смыслах, но в техническом она бесполезна и даже вредна.

А я утверждаю противоположное. Программы должны решать проблемы пользователя, максимально удобным и универсальным способом. Таким был unix, поэтому подход, с которым его делали в той или иной мере стараются воспроизводить и по сей день.
При этом, ни одна идея-расширение "юниксвея", типа повершелла по-настоящему так и не выстрелила. Нишевый, мало кому нужный продукт.

Ответить | Правка | К родителю #187 | Наверх | Cообщить модератору

196. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 02-Сен-19, 23:00 
> Речь о филососфии unix, о ПОДХОДЕ к проектированию, а не о заповедях,
> сколько раз это нужно повторить, чтобы ты меня услышал?

Когда каждый использует свои собственные подходы -- это значит, что нет никаких единых подходов. Каждый городит кто во что горазд.


> Вот например, философия archlinux - rolling релизы и стремление поддерживать всегда актуальные
> версии.

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

>> При этом, ты можешь сколько угодно демонстративно отрекаться от Эрика Раймонда, но ты сейчас делаешь ровно то же самое, что и он. _Ровно_ то же самое. И все эти отречения таким образом, яйца выеденного не стоят.
> Мне очень смешно это читать.
> Вместо того, чтобы как-то по-существу возразить мне, ты обвинил меня в том,
> что я делаю что-то как чел в книге, которую я не
> читал.

То есть ты не только не можешь понять претензий к Раймонду, ты даже не замечаешь этих претензий? Любопытно.

Ответить | Правка | К родителю #192 | Наверх | Cообщить модератору

197. "Представлена новая командная оболочка nushell"  +/
Сообщение от Дон Ягон (ok), 03-Сен-19, 01:02 
>> Речь о филососфии unix, о ПОДХОДЕ к проектированию, а не о заповедях, сколько раз это нужно повторить, чтобы ты меня услышал?
> Когда каждый использует свои собственные подходы -- это значит, что нет никаких единых подходов. Каждый городит кто во что горазд.

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

>> Вот например, философия archlinux - rolling релизы и стремление поддерживать всегда актуальные версии.
> Это не философия. Это способ реализовать миссию дистрибутива. Миссию с некоторой натяжкой можно назвать философией. Наверное можно.

А это уже софистика.
Философия archlinux (которую я почерпнул из сегодняшней новости про Кроа-Хартмана) это того же рода "философия", как и "философия unix". При желании можно заменить "философия archlinux" на "принципы archlinux" - суть моего посыла от этого не меняется.
Если арчедевелоперы отошли от своих "принципов" во имя объективных причин, они не беспринципные, а просто не фанатики.
Их "философия", "принципы" - это ориентир, цель, к которой нужно, по-возможности, стремиться. Вектор движения.
C "юниксвеем" всё аналогично.

>>> При этом, ты можешь сколько угодно демонстративно отрекаться от Эрика Раймонда, но ты сейчас делаешь ровно то же самое, что и он. _Ровно_ то же самое. И все эти отречения таким образом, яйца выеденного не стоят.
>> Мне очень смешно это читать.
>> Вместо того, чтобы как-то по-существу возразить мне, ты обвинил меня в том, что я делаю что-то как чел в книге, которую я не читал.
> То есть ты не только не можешь понять претензий к Раймонду, ты даже не замечаешь этих претензий? Любопытно.

Как я могу понять претензии к Реймонду, если я не читал TAOUP?
Может оставим его уже в покое? Кто угодно может сформулировать свои личные "принципы" юниксвея, но свершенно не понятно, почему мы должны обращать на это внимание. Всё было сформулировано задолго до Раймонда и без его помощи.
Какой вообще вклад Раймонда в опенсорс? Писал код в fetchmail и emacs? Написал эссе в котором технично вылизывает жопу Торвальдсу? Блин, его принципы unix были сформулированы, судя по дате выхода книги, в 2002 году, когда никакого юникса (в изначальном виде) уже толком и не было.
Я правда не понимаю, почему нужно обсуждать его, что бы там он не писал.
Но если и нужно, то с тем, кто читал. Со мной можно собор и базар, например, обсудить, если так хочется про Реймонда.

Но я, кстати, действительно в одном месте неверно тебя понял, а именно:
> эти принципы требуют неукоснительного выполнения, а отклонения от них -- это отклонения от unix-way

Я думал, что ты обвиняешь Реймонда в том, что он определил где-то строгие принципы unix-way, а потом рассказывает, что нарушать их тоже unix-way.
Но нет, этого, судя по всему, хочешь ты. И конечно же, ты тотально неправ в своих желаниях, это какой-то предельно оторванный от жизни идеализм. Когда программы пишут не исходя из потребностей, а из идеологии получается прокрустово ложе.
Могу тут сослаться на нелюбимого мной Торвальдса: "Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.".
Именно поэтому круто, что "unix-way" - это культурные нормы и подходы к разработке ПО, а не жёстко  прописанные правила, нарушение которых карается расстрелом. Эти нормы и подходы сформировались естественным путём и постфактум, в ходе написания ПО. И они отражают то, как удобно делать на практике, по-настоящему, а не на бумаги.
Если Реймонд выступает за это же, то он прав, с какой бы насмешкой я бы не относился к нему за собор и базар и тысячи глаз, которые обязательно не пропустят ошибку в коде. Но судя по википедии, всё же нет, он не про это; он просто графоман. Но всё же - я не читал TAOUP.

Ответить | Правка | К родителю #196 | Наверх | Cообщить модератору

186. "Представлена новая командная оболочка nushell"  +/
Сообщение от Анонимный Алкоголик (??), 02-Сен-19, 05:35 
Транслятор с языка Ада кстати тоже не нарушает увэй...
Ответить | Правка | К родителю #180 | Наверх | Cообщить модератору

188. "Представлена новая командная оболочка nushell"  +/
Сообщение от Ordu (ok), 02-Сен-19, 10:10 
> Транслятор с языка Ада кстати тоже не нарушает увэй...

Не нарушает. Но он не заточен под использование вместо шелла.

Ответить | Правка | К родителю #186 | Наверх | Cообщить модератору

199. "Представлена новая командная оболочка nushell"  +/
Сообщение от Анонимный Алкоголик (??), 05-Сен-19, 05:44 
Ну и find вообще-то вместо shell будет как-то неостёр...
Ответить | Правка | К родителю #188 | Наверх | Cообщить модератору

99. "Представлена новая командная оболочка nushell"  +2 +/
Сообщение от Аноним84701 (ok), 29-Авг-19, 21:33 
> Вообще это юнихвей, когда одна программа делает одно действие и делает это хорошо.

Нет, это просто удачно легло на приведенный пример.
А если нужно было бы отфильтровать вывод пакетного менеджера, статистику сетевой карты и т.д.?

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

Проблема в том, что нужно (помимо проблемы внедрения, но это вообще  лучше оставить за рамками этого обсуждения)  соблюсти баланс между простотой протокола и возможностью детализации/абстракции (не скатиться в оверинжиниринг).

Ответить | Правка | К родителю #93 | Наверх | Cообщить модератору

125. "Представлена новая командная оболочка nushell"  +/
Сообщение от Аноним (125), 30-Авг-19, 10:34 
структурированные и типизированные данные - это круто, да.
но дотнет - говно, а раст.. не понятно.
Ответить | Правка | Наверх | Cообщить модератору

109. "Представлена новая командная оболочка nushell"  –1 +/
Сообщение от Wilem (?), 29-Авг-19, 22:55 
Разница между nu-ls и find это не вопрос синтаксиса. К бешу это сравнение вообще не применимо, тк он не умеет инфу о файлах загружать. Find - это не беш.

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

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру