Este é o $PS1
meu shell Bash em um Ubuntu 18.04 recém-instalado:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$
Eu posso entender bem todas as outras partes do prompt:
${debian_chroot:+($debian_chroot)}
: Se estiver definido, mostre-o, mas adicione parênteses ao redor; se não estiver definido, não mostrar nada\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \$
: Prompt padrãouser@host:cwd $
com cores habilitadas usando sequências de escape CSI
Estou confuso com a primeira parte:
\[\e]0;\u@\h: \w\a\]
AFAIK, \[
e \]
expande para \001
e \002
para dizer ao GNU readline que os caracteres entre eles não devem ser contados para "comprimento do prompt". A pergunta se resumiria ao significado disso:
\e]0;\u@\h: \w\a
É <ESC>]0;user@host: cwd<ALARM>
. O que isso faz? (Nota: CSI <ESC>[
não é <ESC>]
, ou eu teria entendido)
Esta é uma seqüência de escape XTerm , que define o nome do ícone e o título da janela. Ele é suportado pela maioria dos emuladores de terminal gráfico (e alguns emuladores de terminal não gráficos também).