The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"Представлена новая командная оболочка nushell"
Отправлено анонн, 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;
    }

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

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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