Bash: “número da história” vs “número do comando”

10

Enquanto pesquisando como personalizar meu prompt de shell através da variável PS1, vejo tabelas de caracteres especiais que podem ser usadas. Em particular:

          \!     the history number of this command
          \#     the command number of this command

"Número do histórico" parece ser mais comumente usado e sei como usar comandos como !523 para refazer comandos do histórico. Mas não consigo descobrir se o "número do comando" tem uma funcionalidade semelhante. Eu tentei colocar \# na minha variável PS1, e parece produzir o número de comandos inseridos em uma sessão particular (ao contrário de \! , que persiste após logout / exit).

Alguém sabe como usar o "número do comando" de maneira conveniente ou significativa?

    
por Lagrangian 30.03.2015 / 17:04

1 resposta

4

Tanto quanto eu posso dizer (e isso parece confirmado por sua pesquisa), não há como se referir a esse número mágico de forma interativa, ou não através de fc ou !n atalhos. Esses certamente parecem referir-se apenas à posição absoluta na lista de histórico, não à posição relativa desde que esse shell específico foi iniciado (que é o que waht \# refere, como você apontou corretamente).

A única maneira que encontrei para tornar isso mais interessante aqui é definir o seguinte:

export HISTFILESIZE=1001
export HISTSIZE=-1

Dessa forma:

  1. o histórico de uma nova sessão começa em 1000 , o que facilita a identificação de onde estou em uma sessão
  2. (algo não relacionado) não perco um histórico mais antigo em uma determinada sessão (mas ainda não inunda o arquivo)

Basicamente, ele ativou meu prompt modificado ( PS1="\!$ " ) em:

499$ 

para:

1000$ 

... o que faz com que seja um pouco mais limpo no início. Mas essa provavelmente não é a resposta que você estava procurando. :)

(A propósito, eu também olhei para o zsh para uma solução, e parece que simplesmente não tem o equivalente de \# , então isso não ajuda em nada também.)

    
por 03.06.2015 / 07:20