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:
echo $?
Ein Rückgabestatus von 0bedeutet, 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.hund definiert /usr/include/asm-generic/errno.h.
Auch in Bash .bashrcdefiniert das einen Alias alert, mit dem der Status der Fertigstellung benachrichtigt werden kann. Sie müssten den Alias mit dem Befehl oder der Befehlskombination wie folgt anhängen:
some_command --some-switch; alert
Sie können die folgende Codezeile an Ihre ~/.bashrcDatei anhängen , um den Rückgabestatus des zuletzt ausgeführten Befehls anzuzeigen .
# show the return code of last command executed
PS1='${debian_chroot:+($debian_chroot)}\u@\h(lst ret. $(echo $?) ):\w\$ '
(Öffnen Sie die Datei ~/.bashrcmit 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 mit PS1wie unten abgebildet.)
eine kleine Demo:
hash@precise(lst ret. 0 ):~$ ls -sh someFileThatsNotThere
ls: cannot access someFileThatsNotThere: No such file or directory
hash@precise(lst ret. 2 ):~$
hash@precise(lst ret. 2 ):~$ aCommandThatsNot
aCommandThatsNot: command not found
hash@precise(lst ret. 127 ):~$
hash@precise(lst ret. 127 ):~$ echo "you should get a lst ret. 0, I believe the system has echo installed :)"
you should get a lst ret. 0, I believe the system has echo installed :)
hash@precise(lst ret. 0 ):~$
hash@precise(lst ret. 0 ):~$ sudo touch /tmp/someTestFile
[sudo] password for hash:
hash@precise(lst ret. 1 ):~$
hash@precise(lst ret. 1 ):~$ chown $USER:$USER /tmp/someTestFile
chown: changing ownership of `/tmp/someTestFile': Operation not permitted
PS1Ich spiele nur mit :) ..ein bisschen mehr,
function showRetStat {
## line1: initiliazing retStat with the return status of the previous command
retStat=$?
## line2: Left padding the return status with spaces. If you prefer the unpadded one, you can just replace
# $retStatFtd in the lines initializing noErrStr and errStr among other possible ways.
retStatFtd=$(sed -e :a -e 's/^.\{1,2\}$/ &/;ta' <<< $retStat)
## lines3&4: Setting the strings to display for a successful and unsuccessful run of previous command
# which we are going to display with the prompt string. Change the strings to display text of your
# choice like you may set noErrStr="yippie!" , errStr="oopsie!" in place of what they're now.
noErrStr="retStat "$retStatFtd" :: PASS ^_^"
errStr="retStat "$retStatFtd" :: FAIL x_x"
## line5: Applying the logic and display the proper string at the prompt. Space padded number i.e. retStatFtd, here,
# worked in the logic, originally I intended to use this for the display while retStat in the conditional
# check; you could make the function one statement less if you want to.
echo "$([ $retStatFtd = 0 ] && echo "$noErrStr" || echo "$errStr")"
}
## Combining the function showRetStat into the prompt string.
PS1='${debian_chroot:+($debian_chroot)}\u@\h($(showRetStat)):\w\$ '
(Sie können die Funktion ändern, um sie ausgefallener zu gestalten, so wie es @gronostaj in seinem Beitrag tut.)