Ich habe gerade die letzten zwei Stunden damit verbracht, einen dd
Befehl von einer Live-CD ohne GUI auszuführen (oder mir ein ähnliches "schwierig zu wiederholendes" Szenario vorzustellen). Alles was ich habe ist mein vertrauenswürdiges "Multi-Window" ( CTRL+ALT+F#
) Bash Terminal.
Leider dd
habe ich während des Befehls einige unangenehme Fehlermeldungen und ein bisschen mehr Informationen ausgegeben, die ich gerne behalten würde. Ich habe ein USB-Laufwerk angeschlossen, auf das ich Daten schreiben kann, aber wie kann ich die vorherige Ausgabe als Textdatei speichern, nachdem der Befehl bereits ausgeführt wurde?
Wenn dies ein Terminal-Emulator in einer netten GUI gewesen wäre, hätte ich einfach meine Maus benutzt, um den Text auszuwählen, ihn zu kopieren und in ein Dokument einzufügen. Und wenn ich gewusst hätte, dass der Befehl Fehler erzeugt hätte, hätte ich ihn zunächst in eine Datei umgeleitet, aber leider war die zusätzliche Ausgabe eine Überraschung.
Wie speichere ich die Textausgabe meines vorherigen Befehls in einer Datei, ohne den Befehl erneut auszuführen? Ist das überhaupt möglich?
dd if=/dev/sda of=/backups/sda.img > result.txt
. Wenn ja, ist das Problem, dass ich dendd
Befehl bereits ausgeführt habe . Ich möchte auf jeden Fall vermeiden, den Befehl erneut auszuführen, was in einigen Situationen unmöglich ist.service start gpm
). Eine Region mit gedrückter linker Maustaste ausfegen. Tippencat > outputfile
und klicken Sie mit der rechten Maustaste, um die gerade ausgewählte Region einzufügen.Antworten:
Ein Linux-Kernel sollte ein On-Screen-Protokoll für Ihre VTS auf dem entsprechenden
/dev/vcsa*[ttynum]
Gerät speichern .Deshalb funktioniert Folgendes:
... was druckt ...
Das entsprechende
/dev/vcsa[ttynum]
Gerät speichert eine codierte Version des formatierten Texts auf dem Bildschirm, wohingegen/dev/vcs[ttynum]
dies ein einfacher Speicherauszug ist . Dievcsa[ttynum]
Geräte codieren ein Bytepaar, das die einzelnen Bildschirmzeichen und ihre Attribute beschreibt, sowie eine Zeichenfolge am Kopf jeder logischen Seite, die die Anzahl der Zeilen und Spalten der referenzierten Zeichen angibt .Wie @kasperd betont, habe ich mich vorher geirrt, indem ich davon ausgegangen bin, dass das
\a
BEL zwischen jedem Zeichen codiert ist, obwohl : Die Standardfarbkombination zufällig mit dem Klingelzeichen übereinstimmt.Für Ihre Zwecke
/dev/vcs[ttynum]
ist das wahrscheinlich am einfachsten. Hier ist einel
so schnell auf die Unterschiede:... druckt ...
...und...
... druckt ...
quelle
vcsa
setzt nicht dasselbe Zeichen zwischen alle Zeichen. Sie erhalten Paare von Bytes, aus denen hervorgeht, welches Zeichen auf dem Bildschirm angezeigt wird und welche Farbe es hat. Die Standardfarbkombination stimmt zufällig mit dem Klingelzeichen überein.Rufen Sie ein anderes Terminal auf (/ melden Sie sich an) und führen Sie es aus
sudo screendump N > screenoutput.txt
. DabeiN
handelt es sich um die Nummer des gewünschten Terminals.Kein Rückstand, fürchte ich. Wenn diese virtuellen Konsolen eine haben, habe ich sie noch nie gesehen. Aber es bringt Ihnen alles, was Sie auf diesem Terminal sehen können.
quelle
/dev/vcsa*[1-9]*
- (wofür sind die Superuser-Berechtigungen wohl gedacht) . Die Linux-Konsolen haben, glaube ich, auch für die meisten der 3. * -Serien einen Rückstand. Ich bin mir nicht sicher, wie man es nehmen könnte (im Gegensatz zur Verwendung der/dev/vcsa*[1-9]*
Geräte), aber vielleicht gibt es einen Weg./dev/vcs$i
und verwendet/dev/vcsa$i
. Es gibt jedoch ein lesbares Ergebnis. ;-)screendump
aber nicht drauf an, auch wenn ich in der gleichen Konsole bleibe.