Como você já selecionou a página man correspondente e não encontrou nada adequado, apresentarei um método alternativo:
-
setopt PROMPT_SUBST
, portanto, a expansão de parâmetros , a substituição de comandos e a expansão aritmética são executadas em prompts. -
Incremente uma variável
cmdcount
(inicializada com 1) para cada comando executado através dopreexec
hook: Executado logo após um comando ter sido lido e estar prestes a ser executado. (...) -
Use
$cmdcount
no seu prompt.
Copiar & Colar código para o seu ~/.zshrc
:
setopt PROMPT_SUBST
[[ $cmdcount -ge 1 ]] || cmdcount=1
preexec() { ((cmdcount++)) }
PS1='$cmdcount ' # notice the single(!) tics
E aqui está como funciona (à esquerda = bash
com \#
em PROMPT
, à direita = zsh
com código proposto):
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
Eu não sei sobre o comportamento específico de \#
no bash, mas, à primeira vista, ambos os shells se comportam de maneira semelhante agora.