Waren Sie schon einmal in einer Situation, in der Sie die Ausgabe eines Linux-Befehls an Ihren Kollegen oder Freund senden wollten, um Hilfe zu erhalten? Dieser einfache Linux-Hack wird Ihnen auf jeden Fall nützlich sein. Sie können die Ausgabe eines Linux-Befehls in einem Bild oder einer Datei speichern. Alles, was Sie brauchen, ist nur ImageMagick . Dies kann hilfreich sein, wenn Sie die Ausgabe an einen Mitarbeiter des technischen Supports oder einen Kollegen senden müssen.
Linux-Befehlsausgabe in einem Bild speichern
Installieren Sie zuerst das ImageMagick-Tool. Es ist in den Standard-Repositories der meisten Linux-Distributionen verfügbar.
Um beispielsweise ImageMagick in Arch Linux und seinen Derivaten zu installieren, führen Sie Folgendes aus:
$ sudo pacman -S imagemagick
Auf Debian, Ubuntu und anderen DEB-basierten Systemen können Sie es wie unten gezeigt installieren.
$ sudo apt-get install imagemagick
Auf Fedora:
$ sudo dnf install ImageMagick
Unter CentOS:
$ sudo yum install ImageMagick
Unter openSUSE:
$ sudo zypper install ImageMagick
Um nun die Ausgabe eines beliebigen Linux-Befehls in einer Bilddatei zu speichern, führen Sie einfach den folgenden Befehl aus:
$ ip a | convert label:@- myipaddress.png
Der obige Befehl speichert die Ausgabe des ifconfig-Befehls in einem Image und speichert es im aktuellen Arbeitsverzeichnis. Lassen Sie uns den obigen Befehl aufschlüsseln und sehen, was jede Option bewirkt.
- ip a zeigt die IP-Adresse Ihres Linux-Systems an.
- konvertieren Der Befehl speichert die Ausgabe in einem Bild.
- label:@- meineipaddress.png speichert die Befehlsausgabe im Bild mit dem Namen myipaddress.png .
Hier ist die Ausgabe des obigen Befehls in meinem Ubuntu 18.04-Desktopsystem.
Hier ist noch einer. Ich habe meine Linux-Kernel-Ausgabe in einem Bild gespeichert.
$ uname -a | convert label:@- mylinuxkernel.png
Beispielausgabe:
Was wir oben gesehen haben, ist, dass wir die Ausgabe des Befehls in einer Bilddatei gespeichert haben. Wir können die Ausgabe auch in einer vorhandenen Bilddatei speichern. Führen Sie dazu Folgendes aus:
$ convert -font -misc-fixed-*-*-*-*-*-*-*-*-*-*-*-* -fill black -draw "text 270,260 \" `lsb_release -a` \"" image.png systemdetails.png
Dieser Befehl druckt die Ausgabe von "lsb_release -a" Befehl zu einem Bild namens image.png und speichert es unter einem neuen Namen "systemdetails.png" .
Hier ist die Ausgabe des obigen Befehls:
Ziemlich einfach, nicht wahr? Sie können die Ausgabe jedes Befehls in einer Bilddatei speichern und an jeden senden, der Ihnen bei der Reparatur Ihres Systems helfen kann.
Fehlerbehebung
In neueren Ubuntu-Linux-Distributionen sind bestimmte Konvertierungsvorgänge aus Sicherheitsgründen eingeschränkt. Wenn Sie die obigen Befehle in Ubuntu OS ausprobiert haben, wird möglicherweise die folgende Fehlermeldung angezeigt:
convert-im6.q16: not authorized `@-' @ error/property.c/InterpretImageProperties/3516. convert-im6.q16: no images defined `myipaddress.png' @ error/convert.c/ConvertImageCommand/3258.
In diesem Fall müssen Sie policy.xml bearbeiten Konfigurationsdatei und ändern Sie die Richtlinie.
$ sudo nano /etc/ImageMagick-6/policy.xml
Suchen Sie die folgende Zeile:
<policy domain="path" rights="none" pattern="@*" />
Kommentieren Sie die folgende Zeile aus oder entfernen Sie sie:
[...] <!-- <policy domain="path" rights="none" pattern="@*"/> --> [...]
Speichern und schließen Sie die Datei. Jetzt können Sie die Befehle in der Bilddatei speichern.
Linux-Befehlsausgabe in einer Textdatei speichern
Wir wissen, wie man die Ausgabe eines Befehls in/in einem Bild speichert. Wir können auch die Ausgabe eines Linux-Befehls in einer Datei speichern.
Zum Beispiel, um die "IP-Adresse" zu speichern die Ausgabe des Befehls in eine Datei namens myipaddress.txt , ausführen:
$ ip addr > myipaddress.txt
Um dies zu überprüfen, zeigen Sie die Textdatei mit Ihren bevorzugten Textbetrachtern an. Oder wir können den "cat"-Befehl wie unten verwenden.
$ cat myipaddress.txt
Der folgende Befehl speichert my pacman.log in einer Datei namens mylogs.txt .
$ tail -f /var/log/pacman.log > mylogs.txt
Und wir können die IP-Details einfach mit dem Befehl speichern:
$ ip a > mynetworkdetails.txt
Möglicherweise möchten Sie die Ausgabe eines Befehls in mehrere Dateien schreiben. So geht's.
$ uname -a | tee file1 file2
Der obige Befehl schreibt die Ausgabe von "uname -a" Befehl an Datei1 und Datei2 . Wenn die Dateien noch nicht existieren, werden sie erstellt.
Standardmäßig wird der Inhalt von Datei1 und Datei2 überschrieben. Wenn Sie die Ausgabe an den vorhandenen Inhalt anhängen möchten, verwenden Sie -a kennzeichnen wie unten.
$ ip a | tee -a file1 file2
Dieser Befehl überschreibt nicht den vorhandenen Inhalt von Datei1 und Datei2. Stattdessen wird die Ausgabe des ifconfig-Befehls einfach an file1 und file2 angehängt. Mit anderen Worten, diese beiden Dateien haben jetzt die Ausgaben der Befehle "uname -a" und "ip a".