Wenn ich Befehle ausführe, wird manchmal keine Ausgabe angezeigt, daher bin ich mir nicht sicher, ob sie funktioniert haben oder nicht. Ist es möglich, dass alle Befehle eine Rückmeldung erhalten, ob sie korrekt ausgeführt wurden oder nicht? Oder zumindest, um die von ihnen ausgeführte Feedback-ID anzuzeigen (korrekt oder nicht)
command-line
Rajlego
quelle
quelle
cryptsetup
können standardmäßig einige Fehlermeldungen übersprungen werden. Es ist eine gute Sache,$?
in Ihrem zu habenPS1
. Der nächste Schritt ist, auch die aktuelle Zeit hinzuzufügen, um immer die Timings der Befehle zu kennen;)Antworten:
(Ich denke, da Sie in Ask Ubuntu posten, können wir davon ausgehen, dass Sie über die Standard-Shell sprechen, dh Bash .)
In der Frage zum Stapelüberlauf gibt es eine sehr gute Antwort. In einem Shell-Skript: Echo-Shell-Befehle, wenn sie ausgeführt werden (dies ist nicht nur eine Ubuntu-spezifische Lösung).
Was Sie tun müssen, ist den Befehl set zu verwenden, um verbose oder xtrace einzuschalten.
wird Ihnen eine Liste von denen aktuellen Parameter geschaltet auf oder ab .
oder die Langformversion:
schaltet ausführliche ON .
Ich denke, was Sie wollen, ist eigentlich xtrace. Dies gibt nicht nur jeden Befehl wieder, den Sie ausführen, sondern erweitert auch die Parameter und gibt Ihnen mehr Feedback. Wenn ich also etwas so Dummes tue wie das Eingeben von 'hi' am Terminal, erhalte ich das Echo meiner Eingabe sowie einen Bericht / eine Spur dessen, was die Shell getan hat, um den Befehl 'hi' auszuführen (siehe Abbildung unten) ):
So aktivieren Sie xtrace:
oder:
Um diese Parameter zu deaktivieren, rufen Sie (kontraintuitiv) dieselben Befehle auf, außer mit einem Pluszeichen + anstelle eines Bindestrichs oder Minuszeichens. Beispiel:
wird die ausführliche drehen OFF , ähnlich:
schaltet xtrace OFF .
Eine ausführliche Anleitung zu Shell-Optionen finden Sie in Kapitel 33. Optionen, Advanced Bash-Scripting Guide .
quelle
whoami >/dev/null
.Um zu überprüfen , ob einige Befehle erfolgreich oder nicht funktioniert können Sie das überprüfen Rückgabestatus , gegeben durch
$?
, von dem vorherigen Befehl mit:Ein Rückgabestatus von
0
bedeutet, dass der Befehl erfolgreich abgeschlossen wurde, während eine Ausgabe ungleich Null ( Fehlercode ) bedeuten würde, dass einige Probleme aufgetreten sind oder ein Fehler vorliegt und die Kategorie aus dem Fehlercode bekannt ist. Die Linux / C-Fehlercodes sind in/usr/include/asm-generic/errno-base.h
und definiert/usr/include/asm-generic/errno.h
.Auch in Bash
.bashrc
definiert das einen Aliasalert
, mit dem der Status der Fertigstellung benachrichtigt werden kann. Sie müssten den Alias mit dem Befehl oder der Befehlskombination wie folgt anhängen:Sie können die folgende Codezeile an Ihre
~/.bashrc
Datei anhängen , um den Rückgabestatus des zuletzt ausgeführten Befehls anzuzeigen .(Öffnen Sie die Datei
~/.bashrc
mit einem Texteditor Ihrer Wahl, kopieren Sie die obige Zeile, fügen Sie sie in die Datei ein und speichern Sie sie. Starten Sie eine neue Instanz des Terminals, und Sie sollten sie in Aktion haben. Stattdessen können Sie eine Funktion definieren und verwenden es mitPS1
wie unten abgebildet.)eine kleine Demo:
PS1
Ich spiele nur mit :) ..ein bisschen mehr,(Sie können die Funktion ändern, um sie ausgefallener zu gestalten, so wie es @gronostaj in seinem Beitrag tut.)
quelle
PS1
. Dies ist die, die ich benutze, mit roter Nummer im\[\033[01;41;37m\]${?#0}\[\033[00;01;36m\] \u@\h:\w\[\033[00m\]\$
~/.bashrc
Datei zu quellen ?^_^
über den Erfolg undx_x
über alles andere.Sie können Ihre Eingabeaufforderung so ändern, dass ein grünes Häkchen angezeigt wird, wenn der vorherige Befehl mit 0 und ansonsten mit rotem X beendet wird. Arch Linux Wiki hat einen schönen Code, den Sie Ihrem hinzufügen können
bash.rc
:(Ich habe den eigentlichen Fehlercode deaktiviert, weil er mir nicht gefällt. Wenn Sie genaue Codes sehen möchten, entfernen Sie ihn einfach
#
aus dieser Zeile:#PS1="$White\$? "
)So sieht es aus:
quelle
Ja , es ist möglich, für jeden Befehl, den Sie auf dem Terminal ausgeführt haben, eine Rückmeldung zu erhalten. Auf dieser Grundlage wird
echo $?
0 für einen erfolgreichen Befehlsabschluss und ein anderer Wert als 0 für einen Fehler zurückgegeben.Fügen Sie der
~/.bashrc
Datei die folgende Zeile hinzu, um das Feedback zu Erfolg oder Misserfolg zu erhalten .Und dann die Quelldatei
~/.bashrc
, damit es funktioniert.Erläuterung:
Für jeden Befehl, den Sie auf dem Terminal ausgeführt haben, wird dieser
;if [[ $? == 0 ]]; then tput setaf 6 && echo SUCCESS; tput sgr0; else tput setaf 1 && echo FAILURE; tput sgr0; fi;
Code automatisch daran gebunden.Beispiel:
quelle
bind 'RETURN: " && echo SUCCESS || echo FAILED \n"'
wird auch das gleiche tun, müssen Sie nicht[[ $? == 0 ]]
explizit überprüfen .