Nur eine kurze Frage. Ist es möglich, die Ausgabe auf Ubuntu 16.04 LTS zu tabulieren? Ich habe unten zwei Bilder erstellt, um zu veranschaulichen, was ich damit meine.
Nur eine kurze Frage. Ist es möglich, die Ausgabe auf Ubuntu 16.04 LTS zu tabulieren? Ich habe unten zwei Bilder erstellt, um zu veranschaulichen, was ich damit meine.
Antworten:
Sie könnten so etwas tun - mit Dateideskriptoren:
Speichern Sie den aktuellen Ausgabedeskriptor, damit wir ihn später wiederherstellen können
exec 3>&1
Leiten Sie den Ausgabestream an eine Prozessersetzung weiter , die die Registerkarte einfügt - zum Beispiel
exec 1> >(paste /dev/null -)
Ab diesem Zeitpunkt wird bei jedem Prozess, der in die Standardausgabe schreibt, diese Ausgabe durch den paste
Befehl zum Einfügen von Registerkarten am Anfang "gefiltert" .
Wenn Sie fertig sind, können Sie das normale Verhalten wieder aufnehmen, indem Sie den gespeicherten Dateideskriptor wiederherstellen und den temporären schließen
exec 1>&3 3>&-
less
oder ähnliche Tools verwenden, um das Scrollen der Ausgabe zu ermöglichen, wie z man
.
Ich verstehe, dass diese Antwort für Sie nicht optimal ist, aber Sie könnten eine Bash-Funktion mit dem einfachen Namen _
(oder etwas anderem, das noch nicht verwendet wird) erstellen, die den Befehl ausführt, den sie als Argumente erhält, und die gesamte Ausgabe mit einem Tabulator einrückt.
Ein Beispiel:
$ _ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04 LTS
Release: 16.04
Codename: xenial
Der Code dieser Funktion wäre nur:
_(){ sed "s/^/\t/" <($*); }
Sie können es an Ihre ~/.bashrc
Datei anhängen, damit es in allen Bash-Sitzungen Ihres Benutzers verfügbar ist, indem Sie Folgendes ausführen:
echo '_(){ sed "s/^/\t/" <($*); }' >> ~/.bashrc
Wenn Sie es allen Benutzern zur Verfügung stellen möchten, fügen Sie es /etc/bash.bashrc
stattdessen an (erfordert Administratorrechte):
echo '_(){ sed "s/^/\t/" <($*); }' | sudo tee -a /etc/bash.bashrc
Alternativ können Sie auch eine Skriptdatei /usr/local/bin/_
mit folgendem Inhalt erstellen , um dies auch ohne Bash-Funktionen und für alle Benutzer zu erreichen:
#!/bin/bash
sed "s/^/\t/" <($*)
Sie müssen das Skript nach dem Speichern der Datei mit ausführbar machen
sudo chmod +x /usr/local/bin/_
Mit echo
können Sie Backslash-Escapes wie \t
einen Tabulator mit dem -e
Schalter interpretieren lassen :
echo -e "\tHello World"
Aber es wäre kaum machbar (oder wahrscheinlich möglich), die Ausgabe jedes Befehls auf diese Weise zu ändern. Wenn Sie das Lesen erleichtern möchten, sollten Sie das Aussehen (z. B. die Farbe) Ihrer Eingabeaufforderung wie folgt anpassen:
Sie können Ihre Eingabeaufforderung anpassen, indem Sie den Inhalt der Umgebungsvariablen ändern PS1
. Ein kleines Beispiel dafür finden Sie im Blog-Beitrag, aus dem der obige Screenshot stammt. Die detaillierte Verwendung dieser sogenannten ANSI-Escape-Sequenzen, die Verwendung komfortablerer Tools, die Standardanwendung der Änderungen in neuen Terminals usw. sind nicht Gegenstand dieser Antwort. Wenn Sie sich jedoch für diese Technik entscheiden, finden Sie im Internet zahlreiche Tutorials und weitere Informationen.
YOUR COMMAND | indent
oder wenn Sie einen anderen Befehl davor eingeben müssten (könnte sogar nur ein Unterstrich sein) wie_ YOUR COMMAND
?