No momento, o My Bash Prompt está configurando a barra de título xterm usando a seguinte sequência:
PS1='\033]0;\u@\h>\w\007'
Existe uma maneira fácil de exibir o comando atual na barra de título. Por exemplo, se estou seguindo um arquivo usando tail -f foo.log
, quero que minha barra de título diga tail -f foo.log
.
bash
prompt
xterm
window-title
dogbane
fonte
fonte
.bashrc
após cada comando no meu shell, recebo essa saída0;%s@%s:%s" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}
. Suponho que posso suprimir essa saída atribuindo o comando trap aPS1
? No entanto,PS1=trap 'echo -ne "\033]0;$BASH_COMMAND\007"' DEBUG
não funciona. Isso leva ao errobash: echo -ne "\033]0;$BASH_COMMAND\007": command not found
.trap
comando como um comando separado , não para atribuí-lo ao PS1.(Inspirado por esta resposta SU )
Você pode combinar alguns truques do bash:
$BASH_COMMAND
mantém o comando atualmente em execuçãoPortanto, prenda DEBUG e faça com que o manipulador defina o título para
$BASH_COMMAND
:Isso manterá o título alterado até que outra coisa o altere, mas enquanto você
$PS1
permanecer o mesmo, não será um problema - você inicia um comando, o manipulador DEBUG altera a barra de título e, quando o comando termina, o bash cria um novo prompt e redefine sua barra de título novamente.Uma dica útil encontrada aqui (também de onde veio a resposta da SU) é incluir:
Isso fará com que o bash propague a interceptação DEBUG para todos os subshells iniciados; caso contrário, a barra de título não será alterada
fonte
ssh
/dev/tty
vez de stderr?Eu trabalhei com minha própria solução em várias postagens ao redor. Isso cria um título contendo usuário, nome do host, pwd, tty e comando atualmente executado (para bash).
Parece com isso (nenhum comando sendo executado):
E assim (executando um comando):
Em algum lugar do .bashrc, estendi o PS1:
Adiciona o comando atual, usando o histórico 1 e trap :
Sinta-se livre para adotar as suas necessidades.
fonte