Terminal
在終端中的每個命令後列印退出狀態程式碼
我想在 zsh 退出程式碼值中列印每個已發布的命令。例如
$ cat file_not_present cat: file_not_present: No such file or directory Exit code 1
我只知道我可以列印在終端中啟動的最後一個命令的錯誤程式碼
$ echo $?
我能怎麼做?
就我個人而言,我添加
%(?..%B(%?%)%b)
了$PROMPT
, 以便前一個命令的退出狀態在不成功的情況下以粗體顯示在括號中,這比列印每個命令的退出狀態更具侵入性。要列印每個失敗命令的退出狀態,您可以執行以下操作:
TRAPERR() print -u2 Exit status: $?
$假;錯誤的; (123號出口) 退出狀態:1 退出狀態:1 退出狀態:123 **(123)**$
(
(123)$
來自$PROMPT
上述的存在)。對於每個命令:
TRAPDEBUG() print -u2 Exit status: $?
但這可能會變得非常煩人。
您還可以列印執行的最後一個命令的退出狀態:
print_last_status() print -u2 Exit status: $? precmd_functions+=(print_last_status)
$ false; (exit 123); true Exit status: 0
與該
$PROMPT
方法一樣,您只能在上一個提示符發送的命令行中看到最後一個命令執行的狀態。在任何情況下,在 stderr 上列印它(就像我在上面用 做的那樣
-u2
)可能會比在 stdout 上列印它引起的問題更少。做起來print Exit status: $? > /dev/tty
可能會更好。