关于终端成功和失败的条件表情符号

eug*_*kgn 1 osx bash terminal

我使用的是 Mac,我希望能够为我输入的每个成功命令显示表情符号 X,并为每个导致失败的命令显示表情符号 Y。

nxn*_*nev 5

Bash 有一些变量可以让你控制提示:

  • PROMPT_COMMAND
  • PS1
  • PS2
  • PS3
  • PS4

在这个特定场景中,只有PROMPT_COMMAND(在打印主要提示之前执行的代码)和PS1(主要提示)是有帮助的。

该变量?让您知道最后执行的命令的退出状态。例如:

command

if [[ "${?}" == '0' ]]; then
  echo 'OK'
else
  echo 'ERROR'
fi
Run Code Online (Sandbox Code Playgroud)

所以你只需要利用这些方便的功能:

# Using PROMPT_COMMAND
PROMPT_COMMAND='if [[ "${?}" == "0" ]]; then printf "[OK]"; else printf "[ERROR]"; fi'

# Using PS1
PS1='$(if [[ "${?}" == "0" ]]; then printf "[OK]"; else printf "[ERROR]"; fi)\$ '
Run Code Online (Sandbox Code Playgroud)

两种方式都会打印出这样的东西(假设你的初始提示是$):

[OK]$ false
[ERROR]$ true
[OK]$ 
Run Code Online (Sandbox Code Playgroud)

只需将[OK]和替换[ERROR]为您想要的表情符号。

您可以阅读Bash 手册的Controlling the Prompt部分以了解有关此主题的更多信息。