Ao usar ls -lAhF
, a 3ª e a 4ª colunas são de propriedade do usuário e do grupo, ou seja:
drwxrwxrwt 2 root root 60 Nov 15 15:50 .X11-unix/
srwxr-xr-x 1 marti marti 0 Nov 15 15:51 .menu-cached-:0-marti=
srwxr-xr-x 1 marti marti 0 Nov 15 15:51 .pcmanfm-socket--0-marti=
drwxr-xr-x 4 root root 80 Nov 15 15:50 dtach/
drwx------ 2 marti marti 40 Nov 16 17:36 mc-marti/
drwx------ 2 root root 40 Nov 16 20:25 mc-root/
Eu gostaria de ter a palavra-chave "root" nas 3ª e 4ª colunas coloridas em vermelho, para que eu possa ver facilmente que o arquivo é de propriedade do root.
Portanto, se o grupo de usuários for diferente do root, tudo ficará como antes
Se o usuário for root, a palavra-chave "root" na 3ª coluna será de cor vermelha. Da mesma forma para a raiz do grupo.
Como eu poderia fazer isso? Estou usando 'zsh' como meu shell.
Acho que não ls
tem a possibilidade de configurar isso. Mas eu poderia usar algum alias/função em zsh
?
A função a seguir será colorida
root
em vermelho onde quer que apareça nals
saída de , seguida por um espaço:Isso corresponderá
root
nas colunas de usuário e grupo, mas também em arquivos contendo “root
” (com um espaço) para que não seja exatamente o que você deseja. Forçar a saída de cores garantirá pelo menos que ela não corresponda aos arquivos denominados “raiz”.A
sed
invocação pode usar recursos específicos do Zsh em vez detput
:echoti
:sed "s/root /$(echoti setaf 1)root$(echoti sgr0) /g"
sed "s/root /${(%):-%F{red}root${(%):-%f} /g"
(sim, a primeira chave é desbalanceada)colors
(autoload colors; colors
):sed "s/root /${fg[red]}root${reset_color} /g"
Se o seu terminal suportar mais de 16 cores, você poderá usar valores maiores com
setaf
.%F{red}
também pode usar valores numéricos. Onearcolor
módulo oferece uma maneira fácil de encontrar a cor correspondente mais próxima de um valor RGB desejado.Se você tiver um
ls
alias , setting--color=tty
, precisará desativá-lo, caso contrário--color=tty
virá depois--color=always
nals
invocação els
a própria coloração será desabilitada.Solução rápida e suja:
Por uma questão de simplicidade, isso também colorirá a palavra
root
em qualquer nome de arquivo.Eu não adicionei uma verificação para o uso do pipeline, mas você pode ver isso nas outras respostas aqui.