Bazı komutların başarılı bir şekilde çalışıp çalışmadığını kontrol etmek için önceki komutun verdiği dönüş durumunu aşağıdakilerle kontrol edebilirsiniz $?:
echo $?
Geri dönüş durumu 0, komutun başarıyla tamamlandığı anlamına gelirken, sıfırdan farklı bir çıktı ( hata kodu ) bazı sorunlarla karşılaşıldığı veya bir hata olduğu ve kategori hata kodundan bilinebileceği anlamına gelir. Linux / C hata kodları /usr/include/asm-generic/errno-base.hve /usr/include/asm-generic/errno.h.
Ayrıca bash'ta, tamamlanma durumu ile bildirmek için kullanılabilecek .bashrcbir takma ad tanımlar alert. Diğer adı şu komut veya komut combo'suna şu şekilde eklemeniz gerekir:
some_command --some-switch; alert
En son yürütülen komutun dönüş durumunu~/.bashrc görüntülemek için dosyanıza aşağıdaki kod satırını ekleyebilirsiniz .
# show the return code of last command executed
PS1='${debian_chroot:+($debian_chroot)}\u@\h(lst ret. $(echo $?) ):\w\$ '
(dosyayı istediğiniz ~/.bashrcmetin düzenleyicisiyle açın ve yukarıdaki satırı kopyalayın, dosyaya yapıştırın ve kaydedin. Terminalin yeni bir örneğini başlatın ve eylemde olmalısınız. Veya bunun yerine bazı işlevleri tanımlayabilir ve kullanabilirsiniz Bu ile PS1benzer gibi aşağıda gösterilen).
küçük bir 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
Sadece ile oynamak PS1:) .. biraz daha,
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\$ '
(@gronostaj gibi bir şey daha süslü hale getirmek için işlevi değiştirebilirsiniz.)