我想捕获标准输出(发送到终端),并在将其输出到终端后(对于用户)进行一些处理。
我想知道如何获取输出,处理并进行相应的更改。
(如果可能的话)我希望我在终端上键入的每个命令都发生这种情况。
编辑:在临时聊天论坛中进行对话后,很明显
我们应该
如果检测到特定命令或输出,请执行某些操作。
好吧,获取输出,处理并显示您在终端上键入的每个命令的输出可能不是一个好主意。
但是您可以通过以下方式针对某些特定命令执行此操作 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
根据以下链接如果检测到特定命令或输出,请执行某些操作。
可以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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句