Defina as listagens de cor com base em regex em vez de globbing

4

É possível definir padrões de regex para correspondência de cores na variável LS_COLORS? Então, ao invés de apenas

*.jpg=38;5;220

Posso fazer

\.(jpg|gif)=38;5;220

Esse é apenas um exemplo, eu gostaria de ser mais complicado do que isso. Estou pedindo muito disso? Existe outra maneira de fazer esquemas de cores de terminais que eu possa ter mais gostoso?

Estou usando o zsh btw, então se eu puder fazer isso, mas não bater, tudo bem.

    
por Falmarri 07.12.2010 / 19:32

1 resposta

4

Esse é um recurso do utilitário ls em GNU coreutils . Não depende da casca. A sintaxe não está documentada (você deveria usar dircolors e descobrir a partir daí), mas uma rápida olhada na fonte mostra que a única maneira de combinar arquivos por nome é usar * seguido por uma string que deve ser um sufixo para um nome de arquivo corresponder. A string é interpretada literalmente, exceto que \ e ^ introduzem seqüências de escape (por exemplo, \n = ^J = newline).

Assim, você não pode corresponder extensões diferentes com o mesmo padrão. Mas você pode usar construções de programação shell para construir LS_COLORS :

for ext in jpg gif; do LS_COLORS="$LS_COLORS:*.$ext=38;5;220"; done
    
por 07.12.2010 / 22:33

Tags