A cor do primeiro plano é alterada após o comando 'ls'

2

Eu altero a cor do primeiro plano do shell com o comando echo -ne '\e[1;31m' , mas quando executo o comando ls , a cor do primeiro plano volta para a cor anterior original. Esse comportamento estranho não ocorre quando outros comandos são executados. Eu estou sem noção sobre a causa por trás disso.

Por favor, escreva uma explicação para isso e também sugira o remédio. obrigado

Estou usando UBUNTU 14.10 .

EDIT - Tentei remover a sequência de escape para o primeiro plano da cor branca definindo o alias para ls as:

alias ls='ls --color=auto |sed -r 's/\x1b[37m]//''

Mas, isso também tem um problema, o ls exibe todos os nomes de diretórios e nomes de arquivos com uma única cor, ou seja, não com as cores padrão para todos os itens.É estranho, pois removi apenas o [37m que é o primeiro plano branco, mas remove todas as cores.

    
por 0decimal0 19.08.2015 / 18:23

2 respostas

-1

UPDATE - Como o Walininator diz que executar o comando bash logo após o comando ls criará shell filho que provavelmente consumirá recursos, eu tive que procurar outra solução. Eu tentei executar echo -ne '\e[1;31m' luz após o comando ls, portanto, eu coloquei no bls funciton.

De alguma forma, cheguei à minha própria solução para esse problema. As sugestões do meuh e do Waltinator foram procurar seqüências de escape enviadas pelo comando ls e eu até descobri essas. Eu tentei remover a seqüência de escape usando sed , mas devido à minha inexperiência, eu não pude usá-lo perfeitamente, talvez.

Mais tarde, notei que a execução do comando bash after ls reverte o primeiro plano de volta para a cor que eu queria. I decided against using bash after ls

Enquanto isso, encontrei uma maneira como:

  1. Antes de tudo, coloco o comando echo -ne '\e[0;31m' em um script de shell e adiciono o script de shell a .bashrc .
  2. Em segundo lugar, defini uma função para que bash fosse executado logo após ls como:
  

bls () {

 ls "$@" && echo -ne '\e[1;31m';
 }
  1. Eu exportei a função acima como:

    export -f bls

Então, agora eu tenho que fazer um bls para listar diretórios e não alterar a cor de primeiro plano. Isso não resolveu o problema ls , mas me encontrou de outra forma. Eu só tenho que digitar mais uma letra em bls

    
por 0decimal0 20.08.2015 / 20:06
1

Os comandos que definem cores podem terminar enviando a seqüência ESC [ 0 m para redefinir os atributos atuais do terminal. A coisa mais fácil para você fazer é alterar o prompt do shell para sempre definir a cor de volta para o que você deseja.

Adicione ao seu .bash_profile :

export PS1='\e[1;31m'"$PS1"
    
por meuh 19.08.2015 / 18:39