Что ж, может быть не хорошая идея захватывать вывод, обрабатывать и отображать вывод каждой команды, которую вы вводите на терминале.
Но вы можете сделать это для конкретной команды через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
или viafifo
по следующим ссылкам сделать что-то, если обнаружена конкретная команда или вывод.
Отправлять уведомление или оповещение, когда bash запрашивает ввод данных от пользователя
Прямое использование vialog
работает, как в следующем примере.
vialog 2>&1 | tee saved-output | grep 'docker container ls' && echo 'it was mentioned'
В реальном случае, я думаю, вы хотели бы начать что-то более продвинутое, чем echo 'it was mentioned'
, но это только демонстрационный пример. И все может быть эффективнее, если вы встроите специальные проверки в vialog
и отключите оповещения, которые, вероятно, не нужны в вашем случае.
Скриншот во время диалога:
Скриншот после диалога:
Таким образом, вы можете легко проверить, не найдена ли вызываемая команда:
$ 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
Пинг запускается один раз :у него есть собственный внутренний таймер для повторения задачи, но тот же процесс остается там до тех пор, пока не истечет отсчет, или пока вы не остановите его, в зависимости от параметров.
Host — это внешняя команда, а не встроенная -оболочка, поэтому она не имеет ничего общего с подпроцессами -. Но он работает до завершения 50 000 раз. Вероятность того, что он находится в таблице процессов, когда ps | grep
ищет его, составляет, вероятно, 1%. Если вы также запустите ps в цикле, в конечном итоге вы можете увидеть несколько совпадений. Это возможно при двух запущенных диагностических процессах, создание процесса host
может никогда не синхронизироваться с ps из-за некоторого ограничения планировщика.