Tty
如何在 QNX 中擷取不是標準輸出或標準錯誤(直接到 tty)的輸出?
我有一個實用程序
foo
,我想從中 grep 輸出、重定向或執行所有正常的文本操作。可惜!看看它的作用…$ foo bar $ foo > /dev/null bar $ foo 2> /dev/null bar $ foo | grep abc bar $ foo 2| grep abc bar
顯然輸出既不是
stdout
也不是stderr
。也許foo
直接對 tty 而不是對標準輸出的權利。這裡有一個答案,它提供了一種使用script -c
. 但又是一次!$ script -c foo > /dev/null script: illegal option -- c usage: script [-a] [file]
也許我的
script
實用程序不是完整版。作業系統是 QNX。對於我們這些無法使用
script -c
解決方法的人,我們如何輕鬆擷取輸出?如果有任何意義,有沒有辦法重定向 tty 文件本身?有可能做類似的事情
foo (/dev/ttyp0)| grep abc
嗎?這可能不會完全如圖所示,但有沒有辦法做類似的事情?要求首先重定向文件(如果可能的話)的答案很好,所以類似的東西/dev/ttyp0 please go to /dev/null ; foo
是可以的。最終,我希望能夠將輸出通過管道
foo
傳輸到grep
和/或將foo
輸出重定向到文件。
是的,
foo
應用程序很可能直接寫信給 TTY。這是一個執行相同操作的腳本:
#!/bin/sh echo 'bar' >$(tty)
由於您的
script
實用程序不能用於foo
直接執行(只能通過實用程序啟動的互動式 shell),您必須找到另一種分配新 TTY 以執行命令的方法。一種這樣的方法是使用
ssh
:ssh -t localhost "$PWD/foo" >output.log
這將(ab)用於
ssh
連接到localhost
,強制分配 TTY-t
並執行foo
位於目前目錄中的應用程序。的輸出foo
,包括在 TTY 中寫入的所有內容,到標準輸出和標準錯誤,將從 的標準輸出返回給您ssh
,然後您可以將其重定向到您想要的任何地方。