
Gostaria de ativar a saída de texto colorido em comandos SSH de uma linha, mas não consigo fazê-lo funcionar no OS X, Ubuntu 14.10 ou OpenSUSE 12.2.
Se eu fizer ssh em um servidor e digitar, digamos, ls --color=auto
no prompt, ele funcionará perfeitamente, mostrando diretórios, links simbólicos e arquivos regulares em cores diferentes, no entanto, se eu colocar o comando em uma linha única de ssh no mesmo sistema: ssh user@host "ls --color=auto"
, a saída não será colorida.
A digitação echo $TERM
me dá xterm-256color
se devo ou não colocá-lo em uma declaração de uma linha.
Isso se aplica principalmente a erros de codificação de cores e avisos em compilações remotas, mas seria bom ativá-lo para tudo.
Algum conselho?
Responder1
ssh user@host "ls --color=auto"
ls
só gera cores quando está gravando em um terminal. Quando você especifica um comando para ssh
ser executado no host remoto, o ssh não aloca um TTY (interface de terminal) por padrão. Portanto, quando você executa o comando acima, o ssh não aloca um terminal no sistema remoto, ls vê que não está gravando em um terminal e não gera cores.
Você pode executar o ssh com a -t
opção de alocar um terminal. O seguinte deve imprimir cores:
ssh -t user@host "ls --color=auto"
Se ssh
estiver sendo executado de forma não interativa e sua própria saída local não estiver indo para um terminal, ele ignorará um único -t
sinalizador. Neste caso, você pode especificar -t
mais de uma vez para forçar o ssh a alocar um TTY no sistema remoto:
ssh -tt user@host "ls --color=auto"
Responder2
Eu sugiro usar --color=always
no caso de ls, para forçar a cor. E para ter cores em outros aplicativos que suportam coloração, mas não suportam --color=value
, você também pode tentarssh <host> -t "TERM=${TERM} <command>"