3 ms·
https://github.com/thanatos/dotfiles/blob/master/shell/zsh/prompt-alpha#L108-L171 https://github.com/thanatos/dotfiles/blob/master/shell/zsh/p... I've tried to
by deathanatos 5y ago
https://github.com/thanatos/dotfiles/blob/master/shell/zsh/prompt-alpha#L108-L171 https://github.com/thanatos/dotfiles/blob/master/shell/zsh/p...
I've tried to highlight roughly the relevant bits.
The basics of it is that we lazy-load an associative array between exit statuses that are signals and their prettified names. (Which we more or less build by querying Python, to get at what's, essentially, defined in signal.h.)
Once we have that assoc. array, when we get a non-zero exit, we see if it's in the array. If it is, look up the pretty name, print message. If not, just print message with raw exit status. Red & bold so it shows up. (Should probably also use bright red, too. But my work laptop is macOS, & so it's iTerm2, and iTerm2 interprets "bold" to mean "bright & bold".)
I also use zsh, which is able to be considerably more expressive in what it can accomplish in a PS1 than bash can. Note that the syntax,
${+VAR}
which appears in there is zsh-specific. It can be done in bash, but it isn't as neat. I don't recall if bash has associative arrays or just arrays, too…