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


12

GUIなしでライブCDからddコマンドを実行する(または同様の「やり直すのが難しい」シナリオを描く)のに、最後の2時間を費やしました。私が持っているのは私の信頼できる「マルチウィンドウ」(CTRL+ALT+F#)Bashターミナルだけです。

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

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

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


画面上のテキストを選択する方法を探していましたが、これまでのところ、プロンプトに入力したテキストを使用してこれを行う方法しか見つけていません。
–IQAndreas

出力リダイレクトを使用してみましたか?
eyoung100

2
@ eyoung100それは「配管」の別の言葉ですか?のようにdd if=/dev/sda of=/backups/sda.img > result.txt。その場合、問題はすでにddコマンドを実行したことです。どういうわけか、コマンドを再度実行することは避けたいのですが、状況によっては不可能です。
–IQAndreas

2
これがLinuxの場合:gpmをインストールします。(必要に応じて起動します、例:)service start gpm。マウスの左ボタンを押しながら領域を一掃します。入力cat > outputfileし、マウスの右ボタンをクリックして、選択した領域を貼り付けます。
マークPlotnick

1
目的が単に「情報を保持すること」である場合、最後の手段はカメラをつかんで画面の写真を撮ることです。(そして、理論的には、その上でOCRを実行できます。)
スコット

回答:


15

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が指摘しているよう\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$

1
vcsaすべての文字の間に同じ文字を挿入しません。画面にどの文字があり、どの色を持っているかを示すバイトのペアを提供します。デフォルトの色の組み合わせは、たまたまベル文字と一致します。
カスペルド

@kasperd-ありがとう。良いですか?
mikeserv

それは良いです。👍
kasperd

2

別の端末に移動(/ログイン)し、実行しますsudo screendump N > screenoutput.txt(ここNで、希望する端末の番号です)。

バックログはありません、私は恐れています。それらの仮想コンソールがそれを保持している場合、私はそれを見たことがない。しかし、それはあなたがその端末で見ることができるすべてを取得します。


それが機能する場合、それはおそらくそれを取得するためです/dev/vcsa*[1-9]*- (これはスーパーユーザーのアクセス許可が何であると思うでしょうか)。Linuxコンソールは、ほとんどの3. *シリーズのバックログもサポートしていると思います。どのようにそれをつかむかはわかりませんが/dev/vcsa*[1-9]*デバイスの使用に反対)、おそらく方法があります。
mikeserv

切り替えるとバックログが消去され、現在画面に表示されているものだけが保持されるため、別のコンソールに切り替えないことをお勧めします。
ジル 'SO-悪である停止

@mikeservはい。まあ、manページはとの両方 /dev/vcs$iを使用していると言っているよう/dev/vcsa$iです。しかし、読みやすい結果が得られます。;-)
シデキン

@Gillesああ、それでバックログはありますか?しかしscreendump、同じコンソールにいても、それには到達しません。
シデキン

1
Shift-PageUpを1回以上入力すると、スクロールバックを表示できます。gpmを介してマウスを使用する以外に、スクロールバックでテキストを切り取る方法がわかりません。
マークプロトニック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.