Alguém poderia explicar alguns desses códigos de escape?

3

Estou vendo isso no meu arquivo .bashrc :

 PS1='${debian_chroot:+($debian_chroot)}\[3[01;32m\]\u@\h\[3[00m\]:\
      [3[01;34m\]\w\[3[00m\]\$ '

e eu tenho absolutamente nenhuma ideia do que significam todos esses códigos de escape. Eu tentei procurar, mas não tenho idéia do que procurar (códigos de escape Unix? Códigos de escape BASH? Códigos de escape Terminal / TTY? Etc.) Alguém poderia gentilmente explicar o que eles são / como eles funcionam? :)

    
por Mehrdad 19.07.2011 / 18:33

1 resposta

9

Existem três tipos de códigos de escape: expansão do parâmetro bash , expansão de prompt do bash e códigos de escape do terminal .

  • ${debian_chroot:+($debian_chroot)} significa “se $debian_chroot estiver definido e não vazio, então ($debian_chroot) , senão nada”. (Veja /etc/bash.bashrc para como debian_chroot é definido. Como o nome indica, isso é uma coisa do Debian.)
  • As escapes de contrabarra são escapes imediatas. \u é substituído pelo nome do usuário, \h é substituído pelo nome da máquina e assim por diante (consulte o manual para obter uma lista). Partes dentro de \[…\] são saídas de terminal; os colchetes dizem que essas partes não ocupam espaço na tela (isso permite calcular a largura do prompt). 3 é o caractere ESC (número de caractere 033 octal, isto é, 27 decimal, às vezes escrito \e ou ^[ ); introduz sequências de escape terminais.
  • ESC [ codes m (escrito CSI Pm m na lista de sequências de controle do xterm) altera a cor ou a aparência do texto a seguir. Por exemplo, o código 1 muda para negrito, 32 muda a cor do primeiro plano para verde, 0 muda para os atributos padrão.
por 19.07.2011 / 18:49