less param o comando para funcionar depois de definir o título do terminal de .tcshrc

1

Depois de adicionar o seguinte comando ao meu ~/.tcshrc :

echo "3]0;${PROJECT_NAME}
less log

ESC]0;MYPROJ^G
log (END) 
7"

O comando less em um novo gnome-terminal aberto para de funcionar corretamente. Mas o comando more não é afetado.

Isso é o que eu vejo ao tentar executar o comando less :

echo "3]0;${PROJECT_NAME}
less log

ESC]0;MYPROJ^G
log (END) 
7"
    
por Roman Kaganovich 30.01.2018 / 09:23

1 resposta

5

Seu less provavelmente está configurado para enviar sua saída por lesspipe ou um script semelhante. Isso acontece se a variável de ambiente LESSOPEN e / ou LESSCLOSE estiver configurada ou se uma configuração equivalente for usada no arquivo ~/.lesskey . A saída do seu ~/.tcshrc está misturando com os dados canalizados e causando confusão.

Seu ~/.tcshrc aparentemente executa o comando que você adicionou também quando executado para um shell que não possui um TTY. Isso causa o problema que você está vendo e também pode causar problemas com scp , rsync ou muitos outros comandos. Se você quiser adicionar um comando que produza saída de tela ao seu .tcshrc ou script de inicialização de shell similar, você deve sempre tornar o comando condicional para que seja executado apenas em sessões que sejam interativas e / ou tenham um TTY. / em>

A maneira mais fácil de corrigir isso é restringir qualquer saída nas sessões de shell ~/.tcshrc para interativo apenas. ou seja, aqueles que exibirão um prompt de shell. Você pode fazer isso tornando a saída condicional, ou seja, substituindo a única linha adicionada a .tcshrc com:

if ($?prompt) then
    echo "3]0;${PROJECT_NAME}
tty -s && echo "3]0;${PROJECT_NAME}
if ($?prompt) then
    echo "3]0;${PROJECT_NAME}
tty -s && echo "3]0;${PROJECT_NAME}%pre%7"
7" fi
7"
7" fi

Adicione isso antes de definir um prompt personalizado.

Outra maneira seria testar silenciosamente a validade do TTY primeiro:

%pre%     
por 30.01.2018 / 09:58