Domanda

Se faccio

$ ls -l --color=always

ho un elenco di file all'interno della directory con qualche bella colorazione per i diversi tipi di file, ecc ..

Ora, voglio essere in grado di inviare l'output a colori di ls attraverso grep per filtrare alcuni file non ho bisogno. La chiave è che ho ancora voglia di conservare la colorazione dopo il filtro grep.

$ ls -l --color=always | grep -E some_regex

^ perdo la colorazione dopo grep

EDIT: sto usando senza testa-server di Ubuntu 8.10, Bash 3.2.39, praticamente un magazzino installare senza configs fantasia

È stato utile?

Soluzione

Il grep è probabilmente rimuovendo i codici colore ls s 'perché ha la sua colorazione accesa.

"potrebbe" fare questo:

ls -l --color=always | grep --color=never pattern

Tuttavia, è molto importante che si capisce che cosa esattamente si sta grep ping qui. Non solo è glob ping <=> inutili (utilizzare un <=> invece), questo caso particolare è <=> ping attraverso non i nomi dei file e le statistiche dei file solo, ma anche attraverso i codici dei colori aggiunti da <=>!

La vera risposta alla tua domanda è: non <=> esso. Non c'è mai una necessità di tubo di <=> in qualcosa o catturare la sua uscita. <=> è destinato solo per l'interpretazione umana (ad es. Per cercare a in un interattivo solo shell, e per questo scopo è estremamente maneggevole, ovviamente). Come accennato prima, è possibile filtrare quali file <=> enumera utilizzando gocce:

ls -l *.txt      # Show all files with filenames ending with `.txt'.
ls -l !(foo).txt # Show all files with filenames that end on `.txt' but aren't `foo.txt'. (This requires `shopt -s extglob` to be on, you can put it in ~/.bashrc)

I altamente consigliamo di leggere questi due eccellenti documenti sulla questione:

Altri suggerimenti

Si dovrebbe verificare se si sta realmente utilizzando i ls "reali", semplicemente chiamando direttamente il file binario:

/bin/ls ....

A causa:. Il codice che hai descritto in realtà dovrebbe funzionare, a meno che ls ignora --color = sempre per qualche motivo strano o bug

Ho il sospetto che alcuni alias o una funzione che aggiunge (direttamente o tramite una variabile) alcune opzioni. Fare doppio verificare che questo non è il caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top