Захватить вывод команды, обработать его и ТОЛЬКО затем вывести на терминал

Если вы ссылаетесь на вывод ls , его справочная страница отправила меня в переменную среды LS_COLORS и вспомогательную программу dircolors , которая Вы можете превратить список спецификаций (расширения и т.п., включая специальные значения, такие как LINK и DIR ) в желаемые LS_COLORS .

dircolors --print-database предоставит вам закомментированные настройки по умолчанию.

-1
13.01.2019, 08:58
1 ответ

Что ж, может быть не хорошая идея захватывать вывод, обрабатывать и отображать вывод каждой команды, которую вы вводите на терминале.

Но вы можете сделать это для конкретной команды черезtee

your-command | tee saved-output | processing-tool

Когда вы увидите результат обработки инструмента -, вы можете посмотреть на saved-output, например, с помощью cat(, если короткий вывод ), или less(, если длинный вывод ).

Пример:

$ LANG=C sudo lshw | tee saved-output | grep -i -A2 disk
        *-disk              
             description: ATA Disk
             product: KINGSTON SKC300S
             physical id: 0.0.0
--
        *-disk
             description: ATA Disk
             product: WDC WD4002FYYZ-0
             vendor: Western Digital
$ less saved-output

После диалога во временном чате предлагаю

Прямое использование vialogработает, как в следующем примере.

vialog 2>&1 | tee saved-output | grep 'docker container ls' && echo 'it was mentioned'

В реальном случае, я думаю, вы хотели бы начать что-то более продвинутое, чем echo 'it was mentioned', но это только демонстрационный пример. И все может быть эффективнее, если вы встроите специальные проверки в vialogи отключите оповещения, которые, вероятно, не нужны в вашем случае.

Скриншот во время диалога:

enter image description here

Скриншот после диалога:

enter image description here

Таким образом, вы можете легко проверить, не найдена ли вызываемая команда:

$ LANGUAGE=C vialog 2>&1 | tee saved-output | grep -i 'Command.*not found' && echo 'it was mentioned'
Command 'docker' not found, but can be installed with:
it was mentioned
$ cat saved-output 
----- start vialog at 2019-01-12 18:57:33 ----------------------------
$ docker container ls

Command 'docker' not found, but can be installed with:

sudo apt install docker.io

$ exit
exit
------- end vialog at 2019-01-12 18:58:01 --- used 28 seconds
1
28.01.2020, 05:12

Теги

Похожие вопросы