표준 출력(터미널로 전송)을 캡처하고 터미널(사용자용) 출력 후에 일부 처리를 수행하고 싶습니다.
출력을 얻고, 처리하고, 그에 따라 변경하는 방법을 알고 싶습니다.
(가능하다면) 터미널에 입력하는 모든 명령에 대해 이 작업이 수행되기를 바랍니다.
편집: 임시 채팅 포럼에서 대화를 나눈 후에는 분명합니다.
우리는해야한다
- 둘 다 어떤 명령이 실행되었는지 찾습니다.
- 명령의 출력은 무엇입니까
특정 명령이나 출력이 감지되면 특정 작업을 수행합니다.
답변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
시도해 보세요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