dd
私はコマンドを実行するために過去2時間を過ごしました。(または同様の「やり直すのが難しい」シナリオを想像してください)GUIのないLive CDから出てくるのは、信頼できる「マルチウィンドウ」( CTRL+ALT+F#
) Bash端末だけです。
ああ、コマンド中にdd
いくつかの不快なエラーメッセージが表示され、維持したい追加情報がありました。データを書き込むことができるUSBドライブを接続しましたが、コマンドを実行した後に古い出力をテキストファイルに保存するにはどうすればよいですか?
これが素晴らしいGUIのターミナルエミュレータである場合は、マウスを使用してテキストを選択してコピーし、文書に貼り付けることができます。コマンドがエラーを生成することがわかった場合は、まずそれをファイルに出力しましたが、残念ながら追加の出力は驚くべきことです。
コマンドを再実行せずに、前のコマンドのテキスト出力をファイルに保存する方法は?可能ですか?
ベストアンサー1
Linuxカーネルはそのデバイスにvtsスクリーンログを保存する必要があります/dev/vcsa*[ttynum]
。
これが次の方法がうまくいく理由です。
echo hey >/dev/tty2
dd bs=10 count=1 </dev/vcs2
...印刷...
hey
デバイスはフォーマットされたテキストのエンコード/dev/vcsa[ttynum]
されたバージョンを画面に保存し、純粋な/dev/vcs[ttynum]
ダンプになります。デバイスは、vcsa[ttynum]
各画面文字とその属性を記述するバイトペアと、参照されたttyを表す各論理ページの先頭にある文字列をエンコードします。行、列計算。
@kasperdが指摘したように、以前は各文字の間にBELがエンコードされていると仮定していましたが、\a
これは間違っていますが、実際には次のようになります.デフォルトの色の組み合わせはベル文字と一致します。
あなたの目的に応じて/dev/vcs[ttynum]
使用するのが最も簡単な方法です。l
違いを見てみましょう。
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$