web-dev-qa-db-ja.com

キーボードのみを使用して、前の端末コマンドからの出力を保存できますか?

過去2時間、ddコマンド(または同様の「やり直しが難しい」シナリオを想像してください)をGUIなしのライブCD。私が持っているのは、私の信頼できる「マルチウィンドウ」(CTRL+ALT+F#)Bashターミナル。

悲しいかな、コマンドの実行中にddはいくつかの厄介なエラーメッセージと、私が保持したいもう少しの情報を投げ出しました。データを書き込むことができるUSBドライブが接続されていますが、コマンドがすでに実行された後、以前の出力をテキストファイルとして保存するにはどうすればよいですか?

これがNiceGUI内のターミナルエミュレータであった場合、マウスを使用してテキストを選択し、コピーして、ドキュメントに貼り付けるだけでした。また、コマンドでエラーが発生することがわかっていれば、最初はファイルにパイプで出力していましたが、残念ながら、追加の出力は驚きでした。

コマンドを再実行せずに前のコマンドからのテキスト出力をファイルに保存するにはどうすればよいですか?これも可能ですか?

12
IQAndreas

Linuxカーネルは、対応する/dev/vcsa*[ttynum]デバイスにvtsの画面上のログを保存する必要があります。

これが、以下が機能する理由です。

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2

...印刷する...

hey       

対応する/dev/vcsa[ttynum]デバイスは、フォーマットされたテキストのエンコードされたバージョンを画面に格納しますが、/dev/vcs[ttynum]はプレーンダンプになります。 vcsa[ttynum]デバイスは、各画面上の文字とその属性を説明するバイトのペアと、参照されたttyのlines、columnsを示す各論理ページの先頭の文字列をエンコードします=カウント。

@kasperdが指摘しているように、実際には\a BELがすべての文字間でエンコードされていると仮定して、以前は間違っていました。デフォルトの色の組み合わせはたまたまベル文字と一致します。

目的には、/dev/vcs[ttynum]を使用するのがおそらく最も簡単です。違いはlookです:

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2 |
sed -n l

...プリント...

hey       $

...そして...

echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcsa2 |
sed -n l

...プリント...

0\200\000\004h\ae\ay\a$
15
mikeserv

別のターミナルに移動(/ログイン)し、Sudo screendump N > screenoutput.txtを実行します。ここで、Nは必要なターミナルの番号です。

バックログはありません、私は恐れています。それらの仮想コンソールが1つを保持している場合、私はそれを見たことがありません。しかし、それはあなたがそのターミナルで見ることができるすべてをあなたに与えます。

2
The Sidhekin