Domanda Cosa significano i diversi colori in ls?


Cosa fanno i diversi colori in Ubuntu ls comando significa? Ad esempio, quando digito il ls comando in una delle mie cartelle, ottengo uno dei file in verde chiaro, l'altro (che è una cartella) in blu con evidenziazione verde.

Cosa significano questi colori e c'è un manuale su tutti i colori?


298
2017-12-14 08:15


origine




risposte:


  • Blu: Directory
  • verde: File di dati eseguibili o riconosciuti
  • Cielo blu: File di collegamento simbolico
  • Giallo con sfondo nero: Dispositivo
  • Rosa: File immagine grafica
  • Rosso: File di archivio
  • Rosso con sfondo nero: Collegamento interrotto

Per tua informazione:

  • Per disattivare il colore, devi commentare le seguenti righe in .bashrc.

    # enable color support of ls and also add handy aliases
    #if [ -x /usr/bin/dircolors ]; then
    #    test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
    #    alias ls='ls --color=auto'
    #    #alias dir='dir --color=auto'
    #    #alias vdir='vdir --color=auto'
    #
    #    alias grep='grep --color=auto'
    #    alias fgrep='fgrep --color=auto'
    #    alias egrep='egrep --color=auto'
    #fi
    
  • Inoltre, se vuoi vedere i tuoi significati di colore bash, copia / incolla i seguenti codici nel tuo terminale.

    eval $(echo "no:global default;fi:normal file;di:directory;ln:symbolic link;pi:named pipe;so:socket;do:door;bd:block device;cd:character device;or:orphan symlink;mi:missing file;su:set uid;sg:set gid;tw:sticky other writable;ow:other writable;st:sticky;ex:executable;"|sed -e 's/:/="/g; s/\;/"\n/g')           
    {      
      IFS=:     
      for i in $LS_COLORS     
      do        
        echo -e "\e[${i#*=}m$( x=${i%=*}; [ "${!x}" ] && echo "${!x}" || echo "$x" )\e[m" 
      done       
    } 
    

    Produzione:
    alt text

Nota: 


306
2017-12-14 08:18



Quella eval lo script che mostra la rappresentazione del colore in uscita per ogni tipo è geniale ... grazie! - Russ
Pura stregoneria;) - Homunculus Reticulli
Una versione più leggibile di questo eval lo script è qui: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Il rosso è anche un link simbolico morto. - Thomas Ward♦
che dire dei file nel normale testo bianco? - S..


Puoi scoprire quali colori ls usa guardando il $LS_COLORS variabile:

  • Turchese: file audio1
  • Rosso brillante: archivi e file compressi2
  • Viola: immagini e video3

Inoltre, i file sono colorati per attributi:

alt text


  1. aac, au, flac, mid, midi, mka, mp3, mpc, ogg, ra, wav, axa, oga, spx, xspf.

  2. tar, tgz, arj, taz, lzh, lzma, tlz, tzz, zip, z, z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, jar, rar, asso, zoo, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, svg, svgz, mng, pcx, mov, mpg, mpeg, m2v, mkv, ogm, mp4, m4v, mp4v, vob, qt, nuv, wmv, asf, rm, rmvb, flc, avi, fli, flv, gl, dl, xcf, xwd, yuv, cgm, emf, axv, anx, ogv, ogx.


Tutte queste informazioni sono contenute nell'output di dircolors --print-database, ma la sua formattazione è alquanto illeggibile.

Ecco una spiegazione tecnica di ciò che sta accadendo:

Esempio:

CHR 40;33;01

Il codice colore è composto da tre parti:

  • La prima parte prima del punto e virgola rappresenta lo stile del testo.

    • 00 = nessuno, 01 = grassetto, 04 = trattino basso, 05 = lampeggia, 07 = retromarcia, 08 = nascosto.
  • La seconda e la terza parte sono il colore e il colore dello sfondo:

    • 30 = nero, 31 = rosso, 32 = verde, 33 = giallo, 34 = blu, 35 = magenta, 36 = ciano, 37 = bianco.

Ogni parte può essere omessa, assumendo l'avvio a sinistra. Ad esempio "01" significa in grassetto, "01; 31" significa in grassetto e rosso. E faresti stampare il tuo terminale a colori sfuggendo alle istruzioni con \33[ e finendo con un m. 33, o 1B in esadecimale, è il segno ASCII "ESCAPE" (un carattere speciale nel set di caratteri ASCII). Esempio:

"\33[1;31mHello World\33[m"

Stampa "Hello World" in rosso acceso.

Il comando ls con l'argomento --color=auto (su Ubuntu, ls è un alias per ls --color=auto) passa attraverso tutti i nomi dei file e cerca prima di abbinare diversi tipi, come Executable, Pipe e così via. Prova quindi a far corrispondere le espressioni regolari come * .wav e stampa il nome del file risultante, incluso in queste istruzioni che cambiano colore per bash.


86
2017-12-14 08:57



Grazie! Stavo guardando a Visualizzazione della topologia Git  domanda e si chiedeva perché alcuni dei personaggi venivano stampati. - pdp


Se si digita dircolors (echo $LS_COLORS funziona anche) dalla riga di comando si otterrà un elenco di codici e colori per molti tipi di file in 1 riga. dircolors --print-database mostra loro 1 riga alla volta. Ecco una breve lista (ho cercato di inserire quelli più importanti). In fondo c'è una spiegazione su cosa rappresentano i diversi codici alla fine di ogni riga:

NORMAL 00 # globale predefinito, sebbene tutto dovrebbe essere qualcosa.
FILE 00 # file normale
DIR 01; 34 # directory
LINK 01; 36 # collegamento simbolico. (Se lo si imposta su "target" invece di a
 # valore numerico, il colore è come per il file indicato.)
FIFO 40; 33 # pipe
SOCK 01; presa 35 #
PORTA 01; 35 # porta
BLK 40; 33; 01 # driver del dispositivo a blocchi
CHR 40; 33; 01 # driver del dispositivo dei caratteri
ORPHAN 40; 31; 01 # link simbolico a file inesistente o file non statabile
SETUID 37; 41 # file che è setuid (u + s)
SETGID 30; 43 # file che è setgid (g + s)
STICKY_OTHER_WRITABLE 30; 42 # dir che è appiccicoso e scrivibile in altro modo (+ t, o + w)
OTHER_WRITABLE 34; 42 # dir che è scrivibile da altri (o + w) e non appiccicoso
STICKY 37; 44 # dir con il bit sticky set (+ t) e non altrimenti scrivibile
# archivi o compressi (rosso vivo)
.tar 01; 31
.tgz 01; 31
# formati immagine
.jpg 01; 35
.jpeg 01; 35
.gif 01; 35
.bmp 01; 35
# formati audio
.aac 00; 36
.flac 00; 36
.ogg 00; 36
  • Codici di attributo: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Codici colore del testo: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Codici colore di sfondo: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Se vuoi giocare con questo ecco un esempio su come impostare un colore per un file:

export LS_COLORS=$LS_COLORS:"*.ogg=01;35":"*.mp3=01;35"  

Questo verrà impostato *.ogg e .mp3 a bold magenta. E se lo metti nel tuo .bashrc file diventerà permanente.


27
2017-09-14 08:25



Ehi, forse qualcun altro ha una risposta migliore. Btw mi hai superato 15k con questo upvote;) - Rinzwind
rock on! Ci sei arrivato ... Grazie ancora, ho fatto una / "stringa" per cercare su alcuni dei colori di cui non ero sicuro - user784637
Questa (eccellente) risposta è stata fuse, nel caso ti stia chiedendo delle date. :-) - Stefano Palazzo♦
@Rinzwind, quindi per impostare un colore per pdf file, il processo è da utilizzare export? È possibile aggiungere semplicemente un'estensione nel valore predefinito LS_COLORS  variabile? - Sigur


Nessuna delle risposte qui include le 256 opzioni di colore nelle ultime versioni di Ubuntu. I colori sono carenti (alcuni colori mi danno problemi l'uno vicino all'altro) quindi la directory blu di default sul nero è davvero difficile da leggere per me. Quello che segue è la mia ricerca per cambiarlo.

genere dircolors -p |less per vedere il tuo codice colore attuale.

L'impostazione predefinita .bashrc dovrebbe essere già configurata non solo per sfruttare il codice colore del sistema, ma anche uno in ~ / .dircolors, quindi scaricare l'output di dircolors su .dircolor in modo da poter iniziare con questo comando. dircolors -p > ~/.dircolors

Alternativa: prendi un colore molto simile a 256 colori da seebi's solarized progetto.

Prendi questo script colortest ed eseguilo con il comando colortest -w così puoi vedere tutti i colori contemporaneamente. Scegli un colore. Mi piace l'arancione # 208. Voglio che sia il colore del testo, quindi usando queste informazioni sui codici colore estesi, posso applicarlo.

Quindi hai un colore, ora cosa. Per prima cosa dobbiamo creare la stringa.

Il primo numero sarà un codice di attributo, molto probabilmente 00, ma se vuoi farlo lampeggiare vai con 05:

Scegli un codice attributo: 00 = nessuno 01 = grassetto 04 = trattino basso 05 = lampeggio 07 = inverso 08 = nascosto

Prossima scelta append ;38;5; a quel codice di attributo per indicare il colore del tuo testo per ottenere 00; 38; 5; e poi aggiungi il tuo colore. Ho scelto 208 così ottengo 00;38;5;208.

Se vuoi anche metterne uno sfondo, scegli un altro colore (diciamo 56) con lo script colortest e l'append ;48;5;per lo sfondo e 56 per il colore per ottenere una stringa totale di 00;38;5;208;48;5;56.

Quindi ora ce l'hai, cosa ne fai?

vim ~/.dircolors e trova la sezione che vuoi cambiare (per me quella è DIR) alla stringa che abbiamo determinato sopra "00; 38; 5; 208".

Questo non si applica immediatamente, è necessario caricare la configurazione. Uso dircolors ~/.dircolors al codice get per impostare la variabile LS_COLORS. Potresti semplicemente incollarlo nella sessione del terminale oppure puoi chiudere il terminale e riaprirlo. Potresti anche inserirlo in un file ed eseguirlo come uno script di shell.

Puoi fare la stessa procedura con 16 colori. Non hai bisogno del materiale speciale; 38; 5 o; 48; 5. Basta inserire i numeri nella stringa e goderti la semplicità.

Grazie a Dan e seebi per le loro note e il codice su questo.


15
2018-03-22 20:45





Questo si espande La risposta di Karthick87.


Con l'impostazione predefinita

  • Non colorato (bianco): file o testo non di nome file (ad esempio autorizzazioni nell'output di ls -l)
  • Grassetto blu: directory
  • Grassetto ciano: collegamento simbolico
  • Grassetto verde: file eseguibile
  • Grassetto rosso: file di archivio
  • Grassetto magenta: file immagine, video, grafica, ecc. o porta o presa di corrente
  • Ciano: file audio
  • Giallo con sfondo nero: pipe (AKA FIFO)
  • Grassetto giallo con sfondo nero: dispositivo di blocco o dispositivo di carattere
  • Grassetto rosso con sfondo nero: symlink orfano o File mancante
  • Non colorato con sfondo rosso: set-user-ID file
  • Nero con sfondo giallo: set-group-ID file
  • Nero con sfondo rosso: file con capacità
  • Bianco con sfondo blu: directory adesiva
  • Blu con sfondo verde: directory scrivibile in altro modo
  • Nero con sfondo verde: directory adesiva e scrivibile

Script per mostrare i colori

#!/bin/bash
# For LS_COLORS, print type and description in the relevant color.

IFS=:
for ls_color in $LS_COLORS; do
    color="${ls_color#*=}"
    type="${ls_color%=*}"

    # Add descriptions for named types.
    case "$type" in
    bd) type+=" (block device)" ;;
    ca) type+=" (file with capability)" ;;
    cd) type+=" (character device)" ;;
    di) type+=" (directory)" ;;
    do) type+=" (door)" ;;
    ex) type+=" (executable file)" ;;
    fi) type+=" (regular file)" ;;
    ln) type+=" (symbolic link)" ;;
    mh) type+=" (multi-hardlink)" ;;
    mi) type+=" (missing file)" ;;
    no) type+=" (normal non-filename text)" ;;
    or) type+=" (orphan symlink)" ;;
    ow) type+=" (other-writable directory)" ;;
    pi) type+=" (named pipe, AKA FIFO)" ;;
    rs) type+=" (reset to no color)" ;;
    sg) type+=" (set-group-ID)" ;;
    so) type+=" (socket)" ;;
    st) type+=" (sticky directory)" ;;
    su) type+=" (set-user-ID)" ;;
    tw) type+=" (sticky and other-writable directory)" ;;
    esac

    # Separate each color with a newline.
    if [[ $color_prev ]] && [[ $color != $color_prev ]]; then
        echo
    fi

    printf "\e[%sm%s\e[m " "$color" "$type"

    # For next loop
    color_prev="$color"
done
echo

Uscita con impostazione predefinita:

gnome-terminal screenshot

Output con la mia configurazione (dircolors personalizzati e tema del terminale Solarized personalizzato):

gnome-terminal screenshot

Ho avuto le descrizioni da dircolors -p e man dir_colorse riempito le lacune con la mia ricerca.

I colori e le descrizioni sono gli stessi dal 14.04 al 17.10.


14
2018-02-17 21:05



Come lo hai saputo rs si intende RESET, mh si intende MULTIHARDLINK, ca si intende CAPABILITY eccetera? - Fredrick Gauss
@FredrickGauss Come ho scritto nella risposta, ho ottenuto le descrizioni dalla corsa dircolors -p. - wjandrea
dircolors -p non dice rs è RESET 0 # ripristina il colore "normale" . - Fredrick Gauss
@FredrickGauss Non esplicitamente, ma "RESET" è l'unico che può essere abbreviato come "rs" e il colore (0) corrisponde. - wjandrea
Lo sto chiedendo. Basta stimare, dedurre. - Fredrick Gauss