Para ser pragmático, você sempre pode substituir seu ls
por uma pequena função shell
que pós-processa a saída de ls
. ls
geralmente já é um alias de shell
(para ver o uso: type ls
). Embora você possa usar o mesmo nome para a função,
É preferível usar um nome ligeiramente diferente como ll
para evitar qualquer
ambiguidade. Você logo se acostuma a digitar ll em vez de ls.
Aqui está uma função de shell (colocar, por exemplo, em seu ~ / .bash_profile). Usa
Perl para procurar as seqüências de código de escape ansi que definir a cor em torno de um
nome do arquivo terminando em .sh
e os substitui pela seqüência desejada. Você
pode ver esses códigos canalizando sua saída ls --color
através de cat -vet
.
Você pode precisar editar este script se você não vê a mesma sequência que eu fiz.
Além disso, o ls pode não reagir da mesma forma, já que a saída é um pipe e não um tty.
ll(){
/bin/ls --color "$@" |
perl -p -e '$want = "1;38;2;0;215;95";
s/(\e\[)([0-9;]*)(m[^\e]*\.sh\e\[0m$)/$1$want$3/;'
}
No comando perl substitute (s / pattern / replacement string /) \e
é o
caractere de escape, \[
é um colchete esquerdo ([), [0-9;]*
é qualquer sequência de
dígitos e (;), [^\e]*
são quaisquer caracteres que não incluam escape, \.
é um ponto (.) e $
é o final da linha. ()
são usados para capturar o
peças correspondentes em $ 1, $ 2 e $ 3, usadas na peça de reposição.
Se você realmente quiser o nome ls
, mantenha a função ll
e use alias ls=ll
, para que ela funcione apenas em shells interativos.