Onde posso encontrar uma referência completa para a variável $ PS1?

17

A variável PS1 padrão na minha máquina (Kubuntu 13.10) é esta:

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$

Estou à procura de uma referência para o funcionamento da variável $ PS1 que, no mínimo, permite-me compreender a variável PS1 acima.

    
por Mark Raymond 12.01.2014 / 15:04

3 respostas

20

Referências

Até agora, não houve uma única referência para tudo o que pode acontecer em um prompt do Bash - mas como é um recurso que evoluiu ao longo de décadas e provavelmente varia de distribuição para distribuição, talvez seja pedir demais. Tentei resumir o que achei mais útil aqui.

Este manual é o mais completo, mas é muito longo e desconexo. Algumas das seções mais úteis:

  • Seção 2.4 e 2.5 explica os conceitos básicos da configuração do PS1, incluindo os caracteres de escape (imprimíveis).
  • Seção 3.4 explica por que \[ e \] são necessários.
  • A Seção 6 explica todas as principais seqüências de escape (não imprimíveis) que você pode usar, incluindo definindo a cor do prompt e o título de uma janela xterm.

Este guia explica como o ${} funciona no Bash em geral, e esta pergunta sobre o Ubuntu explica um pouco mais sobre como isso funciona com debian_chroot .

Entre esses, eu acho que todos os caracteres na variável padrão do Ubuntu PS1 são explicados.

Explicação do prompt do Ubuntu

Existem três partes no prompt:

  • \[\e]0;\u@\h: \w\a\] define a barra de título de uma janela xterm:

    • \[ inicia uma seção de caracteres não imprimíveis
    • \e]0; é a sequência de escape para 'set xterm title' (acredito que números diferentes de 0 irão definir outras propriedades xterm, embora eu não tenha testado isso)
    • \u@\h: \w do título a ser usado (veja abaixo para \u , \h e \w )
    • \a marca o final do título
    • \] marca o final dos caracteres não imprimíveis
  • ${debian_chroot:+($debian_chroot)} expande para o valor de $ debian_chroot entre parênteses se $ debian_chroot estiver definido. Veja esta questão para mais informações sobre $ debian_chroot.
  • \u@\h:\w\$ é o prompt em si:

    • \u se expande para o nome de usuário atual
    • \h se expande para o nome do host atual
    • \w se expande para o diretório de trabalho atual
    • \$ expande para # para raiz e $ para todos os outros usuários
por Mark Raymond 15.01.2014 / 09:43
6

De acordo com Manual de referência do Bash , PS1 é:

The primary prompt string. The default value is \s-\v\$. See Controlling a Prompt, for the complete list of escape sequences that are expanded before PS1 is displayed.

Algumas outras boas referências podem ser:

por Radu Rădeanu 12.01.2014 / 15:16
3

ss64.com parece ter a melhor referência que encontrei.

Explica as seguintes variáveis:

\d   The date, in "Weekday Month Date" format (e.g., "Tue May 26"). 

\h   The hostname, up to the first . (e.g. deckard) 
\H   The hostname. (e.g. deckard.SS64.com)

\j   The number of jobs currently managed by the shell. 

\l   The basename of the shell's terminal device name. 

\s   The name of the shell, the basename of $0 (the portion following 
    the final slash). 

\t   The time, in 24-hour HH:MM:SS format. 
\T   The time, in 12-hour HH:MM:SS format. 
\@   The time, in 12-hour am/pm format. 

\u   The username of the current user. 

\v   The version of Bash (e.g., 2.00) 

\V   The release of Bash, version + patchlevel (e.g., 2.00.0) 

\w   The current working directory. 
\W   The basename of $PWD. 

\!   The history number of this command. 
\#   The command number of this command. 

\$   If you are not root, inserts a "$"; if you are root, you get a "#"  (root uid = 0) 

\nnn   The character whose ASCII code is the octal value nnn. 

\n   A newline. 
\r   A carriage return. 
\e   An escape character. 
\a   A bell character.
\   A backslash. 

\[   Begin a sequence of non-printing characters. (like color escape sequences). This
     allows bash to calculate word wrapping correctly.

\]   End a sequence of non-printing characters.

O \[ ... \] define uma série de caracteres não imprimíveis. Eles são obrigados a manter o controle da posição do cursor corretamente.

O \e no seu prompt inicia uma sequência de escape. Mais sobre aqui (nota "Esc" nessa página é a seqüência \e ).

  • Nota: Eu nunca gostei de seqüências de escape. Use tput para obter o código de escape para você.

${debian_chroot:+($debian_chroot)} é a expansão do parâmetro. Veja aqui

  • Grava ($debian_chroot) se $debian_chroot estiver definido, caso contrário, nada.
por kiri 14.01.2014 / 09:05

Tags