número do comando do bash (\ #) equivalente em zsh

3

Estou procurando um caractere para colocar no zsh do meu $PROMPT que seria equivalente a bash ' \# ( o número do comando deste comando , de acordo com este site ). Até agora eu encontrei apenas %h , mas isso não é o que eu estou procurando, é equivalente a \! .

    
por shrx 03.01.2014 / 18:11

1 resposta

1

Como você já selecionou a página man correspondente e não encontrou nada adequado, apresentarei um método alternativo:

  1. 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.

  2. Incremente uma variável cmdcount (inicializada com 1) para cada comando executado através do preexec hook: Executado logo após um comando ter sido lido e estar prestes a ser executado. (...)

  3. 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.

    
por 04.01.2014 / 12:26