The OpenNET Project / Index page

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



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

Исходное сообщение
"Один из разработчиков GNOME предложил новую реализацию неиме..."
Отправлено opennews, 17-Авг-12 02:49 
Раздумывая над способами модернизации командной строки UNIX, Александр Ларсон (Alexander Larsson), активный разработчик GNOME и мантейнер таких проектов, как Nautilus, Gnome-vfs и Dia, предложил (http://blogs.gnome.org/alexl/2012/08/10/rethinking-the-shell.../) в своем блоге новый способ объединения команд с помощью пайпов, основная идея которого заключается передаче через канал не простых потоков неструктурированных данных, а объектов, представленных в бинарной форме. По словам Александра, его идея может сделать командный интерфейс более гибким, но не таким переусложненным как Microsoft PowerShell.


В качестве основы для представления объектов Александр предложил использовать тип данных GVariants (http://developer.gnome.org/glib/stable/glib-GVariant.html) из библиотеки Glibc, используемой также в GTK+ и GNOME. Он реализовал несколько утилит, повторяющих функциональность стандартных UNIX-команд ps, sort, head и других, которые принимают на вход и выдают на выходе объекты типа GVariants, причем в случае, если вывод осуществляется в терминал или принимающая команда не поддерживает на входе объекты, данные будут переданы в текстовой форме. Например, вывод его версии ps в терминал будет выглядеть так:


<font color="#461b7e">

   $ dps
   <{'pid': <uint32 1>, 'ppid': <uint32 0>, 'euid': <uint32 0>,  'user': <'root'>,...
   <{'pid': <uint32 2>, 'ppid': <uint32 0>, 'euid': <uint32 0>,  'user': <'root'>,...
   ...


</font>

Применив к этому выводу другие утилиты можно легко отсортировать объекты по необходимым полям и выполнить их фильтрацию на основе тех или иных полей:


<font color="#461b7e">
   $ dps | dfilter euid \< 1000 | dsort rss
   <{'pid': <uint32 1>, 'ppid': <uint32 0>, 'euid': <uint32 0>, 'user': <'root'>,
   <{'pid': <uint32 769>, 'ppid': <uint32 745>, 'euid': <uint32 0>, 'user': <'root'>,
   ...
</font>


В конце-концов можно использовать специальные утилиты для вывода данных удобочитаемом виде:


<font color="#461b7e">
   dps | dfilter euid \< 1000 | dsort rss | dhead 4 | dtable pid user rss vsize cmdline
   pid     user      rss    vsize  cmdline
     1   'root'    24408    61488 '/usr/lib/systemd/systemd'
   769   'root'    16028   108000 '/usr/bin/Xorg :0 -background none -logverbose 7 -seat seat0 -nolisten tcp vt1'
   608   'root'    15076   255312 '/usr/bin/python /usr/sbin/firewalld --nofork'
   747   'root'     8276   452604 '/usr/sbin/libvirtd'

</font>

Как говорит Александр, такой подход существенно расширяет возможности обработки данных, позволяя, например, применять к выводу типо-зависимые операции (сравнение euid с числом), выполнять правильное обрезание списка (без учета заголовка), работать одновременно со всеми полями объекта даже в том случае, если они не будут выведены на экран. Кроме того, все данные между командами передаются в бинарной форме, благодаря чему их обработка существенно упрощается.


URL: http://blogs.gnome.org/alexl/2012/08/10/rethinking-the-shell.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=34591

 

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



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

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