過去2時間、dd
コマンド(または同様の「やり直しが難しい」シナリオを想像してください)をGUIなしのライブCD。私が持っているのは、私の信頼できる「マルチウィンドウ」(CTRL+ALT+F#
)Bashターミナル。
悲しいかな、コマンドの実行中にdd
はいくつかの厄介なエラーメッセージと、私が保持したいもう少しの情報を投げ出しました。データを書き込むことができるUSBドライブが接続されていますが、コマンドがすでに実行された後、以前の出力をテキストファイルとして保存するにはどうすればよいですか?
これがNiceGUI内のターミナルエミュレータであった場合、マウスを使用してテキストを選択し、コピーして、ドキュメントに貼り付けるだけでした。また、コマンドでエラーが発生することがわかっていれば、最初はファイルにパイプで出力していましたが、残念ながら、追加の出力は驚きでした。
コマンドを再実行せずに前のコマンドからのテキスト出力をファイルに保存するにはどうすればよいですか?これも可能ですか?
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]
を使用するのがおそらく最も簡単です。違いはl
ookです:
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$
別のターミナルに移動(/ログイン)し、Sudo screendump N > screenoutput.txt
を実行します。ここで、N
は必要なターミナルの番号です。
バックログはありません、私は恐れています。それらの仮想コンソールが1つを保持している場合、私はそれを見たことがありません。しかし、それはあなたがそのターミナルで見ることができるすべてをあなたに与えます。