ターミナルに何かを書き込むターミナルアプリケーションを作成しています。そしてそれをテストするために、私は本当にターミナルに実際に表示されているものをテストする必要があります。どういうわけか、端末に実際に表示されているデータを読み取る方法はありますか?
端末はどこかにあるファイルでなければならないので、そこにあるものを読み取る方法が必要です。
cat /dev/tty
そこにあるデータのストリームを私に与えているようです。しかし、私はキーストロークを見たくありません。私が書いたものだけです。
1つのオプションは、追跡するすべてのコマンドの前にtee
ツールを使用することです。このようにして、すべての出力を選択したログファイルに保存できます。
以下の例を参照してください。ここでは、すべてのbash
出力をlog.txt
というテキストファイルに保存しています。
bash | tee log.txt
echo 'hello world'
ls
exit
cat log.txt
完了したら、CTRL+D
を使用して新しいBASHセッションを終了するか、単にexit
と入力します(上記の例を参照)。
ターミナルに実際に渡されるコマンドのみを探している場合(これが元の質問で望まれていたものかどうかはわかりませんでした)、いつでもhistory
を実行するか、~/.bash_history
を確認できます。
いくつかのターミナルプログラムは画面ダンプを提供しますが( xterm など)、ほとんどは提供しません( 画面からファイルへの既存のコマンドラインテキスト?(非グラフィカル)を参照) Linux) たとえば)。 gimpなどのツールを使用してスクリーンショットを作成することはできますが、実際のキャラクターが何であるかはわかりません。開発のために、私はそれを知る必要があります。
script
を使用して出力をTypeScript
に記録します。画面にcat
戻すことができます(または、エスケープシーケンスが十分に単純な場合はless -R
を使用します)。より複雑なものや長いトレースには、他のツールを使用します。
slowcat
cat
の進行を遅くしますvile-pager
エスケープを読み取り可能な形式にフィルタリングする(less
—カラーシーケンスよりも優れている)行間で機能しますが、それでも1行のカーソル移動に制限されます)。これは、 vi-like-emacs を使用し、特別な目的で tility を使用するフィルターです。違いを説明するために、Debianマシンの1つでless -r
を実行したときのTypeScript
ファイルのapt-get update
のスクリーンショットを次に示します。
対照的に、vile-pager
は、テキストが上書きされた場所を強調表示します。
いずれにせよ(少ないか下品か)、アプリケーションがカーソルを画面上で動かした場合、出力を確認する唯一の方法はcat/slowcat/etcを使用することです。