bash 的命令编号 ( \# ) 在 zsh 中的等效项

bash 的命令编号 ( \# ) 在 zsh 中的等效项

我正在寻找一个字符放入我的 中zsh,它$PROMPT相当于(bash\#该命令的命令号, 根据本网站)。到目前为止我只找到了%h但这不是我要找的,它相当于\!

答案1

由于您已经浏览了相应的手册页并且没有找到任何合适的内容,我将提供一种替代方法:

  1. setopt PROMPT_SUBST, 所以参数扩展、命令替换和算术扩展都在提示符中进行。

  2. cmdcount通过钩子为每个执行的命令增加一个变量(初始化为 1) preexec在读取命令并即将执行后立即执行。(...)

  3. $cmdcount在您的提示中使用。


复制并粘贴您的代码~/.zshrc

setopt PROMPT_SUBST
[[ $cmdcount -ge 1 ]] || cmdcount=1
preexec() { ((cmdcount++)) }
PS1='$cmdcount '                # notice the single(!) tics

它的工作原理如下(左=bash使用\#in PROMPT,右=zsh使用建议的代码):

bash$ PS1="\# "                                   |  zsh$ source ./above_code
2 /bin/echo some external command                 |  1 /bin/echo some external command
some external command                             |  some external command
3 cd internal command                             |  2 cd internal command
bash: cd: internal: No such file or directory     |  cd: string not in pwd: internal
4      [no command, just pressed enter]           |  3      [no command, just pressed enter]
4                                                 |  3 
4                                                 |  3

我不知道\#bash 中的具体行为,但乍一看,这两个 shell 的行为现在很相似。

相关内容