Exibindo qual linha 'history' é atual no prompt do bash

3

Qual caractere de formatação precisa ser adicionado a um prompt bash para indicar a execução mais recente do history item (ou o número do comando atual se 1 puder ser adicionado à última entrada history )?

Minha string de prompt é esta:

\[3[33m\][\u@\[3[1;31m\]\h]\]3[0m {\W}\n3[1;34m\]\w\]3[0m >

Fornece a seguinte exibição:

[user@host] {~}
~ >

O usuário está em amarelo e o host está em vermelho. A entrada entre colchetes é o diretório atual, e a entrada antes do sinal de maior que é o% completopwd.

Posso acrescentar à primeira linha o número do comando atual para que eu tenha algo como o seguinte:

[user@host] {~} (nnn)
~ >

em que (nnn) é o número de comando atual (ou apenas processado), conforme mostrado ao executar history ?

    
por warren 07.05.2010 / 14:56

1 resposta

6

Na seção de PROMPTING da página man bash:

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

e mais abaixo:

The command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the history file ..., while the command number is the position in the sequence of commands executed during the current shell session.

Se você quiser o último número de comando, você pode incluir o número em uma avaliação aritmética como esta:

export PS1='last cmd num: $((\# -1)), this num: \# '
    
por 07.05.2010 / 15:35