명령의 출력을 캡처하여 처리하고 터미널로 출력합니다.

명령의 출력을 캡처하여 처리하고 터미널로 출력합니다.

표준 출력(터미널로 전송)을 캡처하고 터미널(사용자용) 출력 후에 일부 처리를 수행하고 싶습니다.

출력을 얻고, 처리하고, 그에 따라 변경하는 방법을 알고 싶습니다.

(가능하다면) 터미널에 입력하는 모든 명령에 대해 이 작업이 수행되기를 바랍니다.


편집: 임시 채팅 포럼에서 대화를 나눈 후에는 분명합니다.

  • 우리는해야한다

    • 둘 다 어떤 명령이 실행되었는지 찾습니다.
    • 명령의 출력은 무엇입니까
  • 특정 명령이나 출력이 감지되면 특정 작업을 수행합니다.

답변1

글쎄, 어쩌면 그럴 수도 있겠지아니요출력을 가져와 처리하고 표시하는 좋은 아이디어모든터미널에 입력하는 명령입니다.

하지만 일부 특정 명령에 대해서는 다음과 같이 할 수 있습니다.tee

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

처리 도구의 결과를 볼 때 saved-output(출력이 짧은 경우) 또는 (출력이 긴 경우)를 사용하여 예제를 볼 수 있습니다.catless

예:

$ 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하고 경고를 비활성화하면 상황이 더 효율적이 됩니다. 이는 귀하의 경우에는 필요하지 않을 수 있습니다.

대화 스크린샷:

여기에 이미지 설명을 입력하세요.

대화 후 스크린샷:

여기에 이미지 설명을 입력하세요.

이렇게 하면 호출된 명령을 찾을 수 없는지 쉽게 확인할 수 있습니다.

$ 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

관련 정보