Прикинул нужность нововведений товарища Щуклина (
amarao_san) по введению JSON в строку bash.
Если получится сделать несколько утилит, обменивающихся такими сообщениями, то может это даже будет выглядеть не так плохо.
Есть несколько вопросов к проекту:
1. как именовать ноды в JSON;
2. как поступать с программами, у которых иерархический вывод;
3. как парсить вывод программ с различными разделителями.
Последние 2 варианта сложны и нетривиальны. Далее их опустим.
Первый вариант применяется только к утилитам с выводом в виде таблицы. Его можно разрешить примерно следующим способом - задать имя и тип колонок. В случае с датой - стандарт расшифровки даты.
Для примера возьмем одну из стандартных утилит. Если формат вывода ls -la имеет следующий вид:
-rw-r--r-- 1 root root 66 апр. 17 08:13 .selected_editor
drwxr-xr-x 2 crast crast 4096 апр. 6 15:43 Templates
drwxrwxr-x 2 crast crast 4096 апр. 13 21:34 test_folder
-rwxrwxr-x 1 crast crast 53164 мая 18 08:38 thread
То в командной строке будет:
ls -la | power_bash --format "mod:s|links:i|group:s|user:s|size:i|date:dt|name:s"
На разбор с этим у меня не хватило терпения (
1). Как вариант можно задавать входные значения и количество слов в каждом поле.
Новое дополнение с fold'ом можно разрулить с запуском программы как дочернего процесса и переводом ввода в нашу программу.