Vraag Wat betekenen de verschillende kleuren in ls?


Wat doen de verschillende kleuren in Ubuntu's ls commando betekenen? Bijvoorbeeld, wanneer ik de typ ls commando in een van mijn mappen, krijg ik een van de bestanden in lichtgroen, de andere (dat is een map) in blauw met groene markering.

Wat betekenen die kleuren, en is er een handleiding over alle kleuren?


298
2017-12-14 08:15


oorsprong




antwoorden:


  • Blauw: Directory
  • Groen: Uitvoerbaar of erkend gegevensbestand
  • Hemelsblauw: Symbolisch linkbestand
  • Geel met zwarte achtergrond: Apparaat
  • Roze: Grafisch beeldbestand
  • Rood: Archiefbestand
  • Rood met zwarte achtergrond: Kapotte link

Ter informatie:

  • Om de kleur uit te zetten, moet je de volgende regels in commentaar voorzien .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
    
  • Ook als u uw eigen bash-kleur betekenissen wilt zien, kopieer en plak dan de volgende codes in uw terminal.

    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       
    } 
    

    Output:
    alt text

Notitie: 


306
2017-12-14 08:18



Dat eval script met de weergave van de uitvoerkleur voor elk type is geweldig ... bedankt! - Russ
Pure sourcery;) - Homunculus Reticulli
Een beter leesbare versie daarvan eval script is hier: github.com/gkotian/gautam_linux/blob/master/scripts/colours.sh - Gautam
Rood is ook een dode symlink. - Thomas Ward♦
hoe zit het met bestanden in normale witte tekst? - S..


Je kunt uitzoeken welke kleuren ls gebruikt door te kijken naar de $LS_COLORS variabele:

  • Turkoois: audiobestanden1
  • Felrood: Archieven en gecomprimeerde bestanden2
  • Paars: afbeeldingen en video's3

Bovendien worden bestanden gekleurd door attributen:

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, txz, zip, z, z, dz, gz, lz, xz, bz2, bz, tbz, tbz2, tz, deb, rpm, pot, rar, aas, zoo, cpio, 7z, rz.

  3. jpg, jpeg, gif, bmp, pbm, pgm, ppm, tga, xbm, xpm, tif, tiff, png, 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.


Al deze informatie staat in de uitvoer van dircolors --print-database, maar de opmaak ervan is nogal onleesbaar.

Hier is een technische uitleg over wat er gebeurt:

Voorbeeld:

CHR 40;33;01

De kleurcode bestaat uit drie delen:

  • Het eerste deel vóór de puntkomma staat voor de tekststijl.

    • 00 = geen, 01 = vet, 04 = onderstreping, 05 = knipperen, 07 = achteruit, 08 = verborgen.
  • Het tweede en derde deel zijn de kleur en de achtergrondkleur:

    • 30 = zwart, 31 = rood, 32 = groen, 33 = geel, 34 = blauw, 35 = magenta, 36 = cyaan, 37 = wit.

Elk onderdeel kan worden weggelaten, ervan uitgaande dat je aan de linkerkant begint. d.w.z. "01" betekent vet, "01; 31" betekent vet en rood. En u zou ervoor zorgen dat uw terminal in kleur afdrukt door aan de instructie te ontsnappen \33[ en eindigend met een m. 33, of 1B in hexadecimaal, is het ASCII-teken "ESCAPE" (een speciaal teken in de ASCII-tekenset). Voorbeeld:

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

Drukt "Hallo wereld" in helder rood af.

Het bevel ls met het argument --color=auto (op Ubuntu, ls is een alias voor ls --color=auto) doorloopt alle bestandsnamen en probeert eerst verschillende typen aan te passen, zoals Uitvoerbaar, Pijp enzovoort. Vervolgens probeert het reguliere expressies zoals * .wav aan te passen en wordt de resulterende bestandsnaam afgedrukt, ingesloten in deze kleurveranderende instructies voor bash.


86
2017-12-14 08:57



Bedankt! Ik keek naar een Git-topologievisualisatie  vraag en vroeg zich af waarom sommige tekens werden afgedrukt. - pdp


Als je typt dircolors (echo $LS_COLORS werkt ook) vanaf de opdrachtregel krijgt u een lijst met codes en kleuren voor veel van de bestandstypen in 1 regel. dircolors --print-database laat ze 1 regel tegelijk zien. Hier is een korte lijst (ik heb geprobeerd de belangrijkste in te voegen). Onderaan is er een uitleg over wat de verschillende codes aan het einde van elke regel weergeven:

NORMAAL 00 # algemene standaard, hoewel alles iets zou moeten zijn.
BESTAND 00 # normaal bestand
DIR 01; 34 # directory
LINK 01; 36 # symbolische link. (Als u dit op 'target' instelt in plaats van a
 # numerieke waarde, de kleur is zoals voor het bestand waarnaar wordt verwezen.)
FIFO 40; 33 # pijp
SOCK 01; 35 # socket
DEUR 01; 35 # deur
BLK 40; 33; 01 # block device driver
CHR 40; 33; 01 # character device driver
ORPHAN 40; 31; 01 # symlink naar niet-bestaand bestand of niet-stateerbaar bestand
SETUID 37; 41 # bestand dat is ingesteld (u + s)
SETGID 30; 43 # bestand dat setgid (g + s) is
STICKY_OTHER_WRITABLE 30; 42 # map is plakkerig en ander schrijfbaar (+ t, o + w)
OTHER_WRITABLE 34; 42 # map die anders schrijfbaar (o + w) is en niet plakkerig
STICKY 37; 44 # richt met de sticky bit set (+ t) en niet met een ander schrijfbaar
# archieven of gecomprimeerd (felrood)
.tar 01; 31
.tgz 01; 31
# afbeeldingsindelingen
.jpg 01; 35
.jpeg 01; 35
.gif 01; 35
.bmp 01; 35
# audioformaten
.aac 00; 36
.flac 00; 36
.ogg 00; 36
  • Kenmerkcodes: 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
  • Tekstkleurcodes: 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
  • Achtergrond kleurcodes: 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white

Als je hier wat mee wilt spelen, is hier een voorbeeld van hoe je een kleur instelt voor een bestand:

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

Dit zal instellen *.ogg en .mp3 naar bold magenta. En als je het in je plaatst .bashrc bestand zal het permanent worden.


27
2017-09-14 08:25



Hé, misschien komt iemand anders met een beter antwoord. Btw krijg je me meer dan 15k met deze upvote;) - Rinzwind
rock on! Je hebt jezelf daar ... Nogmaals bedankt, ik deed een "string" om te zoeken naar een aantal van de kleuren waar ik niet zeker van was - user784637
Dit (uitstekende) antwoord was samengevoegd, voor het geval je je afvraagt ​​over de datums. :-) - Stefano Palazzo♦
@Rinzwind, dus een kleur instellen pdf bestand, het proces is om te gebruiken export? Is het mogelijk om simpelweg één extensie toe te voegen als standaard? LS_COLORS  variabele? - Sigur


Geen van de antwoorden hier bevat de 256 kleurenopties in de nieuwste versies van Ubuntu. Ik heb een tekort aan kleuren (sommige kleuren geven me problemen bij elkaar), dus de standaard blauwe map op zwart is echt moeilijk voor mij om te lezen. Wat volgt is mijn onderzoek om dat te veranderen.

Type dircolors -p |less om je huidige kleurcode te zien.

De standaard .bashrc zou al niet alleen geconfigureerd moeten zijn om te profiteren van de systeemkleurencode, maar ook een in ~ / .dircolors dus dump de dircolors uitvoer naar .dircolor zodat je kunt beginnen met dat met deze opdracht. dircolors -p > ~/.dircolors

Alternatief: pak een zeer vergelijkbare 256 kleuren dircolors van seebi's zijn gesolariseerd project.

Grijp dit colortest script en voer het uit met het commando colortest -w zodat je alle kleuren tegelijk kunt zien. Kies een kleur. Ik hou van de oranje # 208. Ik wil dat dit de tekstkleur is, dus met deze info over uitgebreide kleurcodes kan ik dat toepassen.

Dus je hebt een kleur, wat nu. Eerst moeten we de string maken.

Het eerste cijfer is een attribuutcode, hoogstwaarschijnlijk 00, maar als je het wilt laten knipperen, ga dan met 05:

Kies een attribuutcode: 00 = geen 01 = vet 04 = onderstrepingsteken 05 = knipper 07 = achteruit 08 = verborgen

Kies vervolgens toevoegen ;38;5; naar die attribuutcode om je tekstkleur aan te geven om 00; 38; 5; en voeg vervolgens je kleur toe. Ik heb 208 gekozen, dus ik snap het 00;38;5;208.

Als je er ook een achtergrond op wilt plaatsen, kies dan een andere kleur (laten we zeggen 56) met het meest kleurige script en de append ;48;5;voor de achtergrond en 56 voor de kleur om een ​​totale reeks van te krijgen 00;38;5;208;48;5;56.

Dus nu heb je het, wat doe je ermee?

vim ~/.dircolors en vind de sectie die je wilt wijzigen (voor mij is dat DIR) naar de reeks die we hierboven hebben bepaald "00; 38; 5; 208".

Dit is niet meteen van toepassing, je moet de config laden. Gebruik dircolors ~/.dircolors naar de get-code om uw LS_COLORS-variabele in te stellen. U kunt dit gewoon in uw terminalsessie plakken of u kunt uw terminal sluiten en opnieuw openen. Je zou dat ook in een bestand kunnen pipen en het als een shellscript kunnen uitvoeren.

U kunt dezelfde procedure met 16 kleuren doen. Je hebt geen speciale, 38; 5 of; 48; 5 dingen nodig. Gooi de nummers gewoon in de string en geniet van de eenvoud.

Dankzij Dan en seebi voor hun aantekeningen en code hierover.


15
2018-03-22 20:45





Dit breidt zich uit Karthick87's antwoord.


Met de standaardinstelling

  • Niet gekleurd (wit): het dossier of niet-bestandsnaam tekst (bijvoorbeeld permissies in de uitvoer van ls -l)
  • Vet blauw: map
  • Vet cyaan: symbolische link
  • Vet groen: uitvoerbaar bestand
  • Vet rood: archiefbestand
  • Vet magenta: afbeeldingsbestand, video, afbeelding, etc. of deur- of stopcontact
  • Cyan: geluidsbestand
  • Geel met zwarte achtergrond: pijp (AKA FIFO)
  • Vet geel met zwarte achtergrond: blokkeer apparaat of karakter apparaat
  • Vet rood met zwarte achtergrond: wees symlink of ontbrekend bestand
  • Niet gekleurd met rode achtergrond: set-user-ID-bestand
  • Zwart met gele achtergrond: set-group-ID-bestand
  • Zwart met rode achtergrond: bestand met mogelijkheid
  • Wit met blauwe achtergrond: plakkerige directory
  • Blauw met groene achtergrond: andere-schrijfbare directory
  • Zwart met groene achtergrond: sticky and other-writable directory

Script om kleuren weer te geven

#!/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

Uitvoer met standaardinstelling:

gnome-terminal screenshot

Uitvoer met mijn setup (aangepaste dircolors en aangepast thema van Solarized terminal):

gnome-terminal screenshot

Ik heb de beschrijvingen van gekregen dircolors -p en man dir_colors, en vulde de gaten aan met mijn eigen onderzoek.

De kleuren en beschrijvingen zijn hetzelfde van 14.04 tot 17.10.


14
2018-02-17 21:05



Hoe wist je dat rs middelen RESET, mh middelen MULTIHARDLINK, ca middelen CAPABILITY enz? - Fredrick Gauss
@FredrickGauss Zoals ik in het antwoord schreef, kreeg ik beschrijvingen van hardlopen dircolors -p. - wjandrea
dircolors -p vermeld niet rs is RESET 0 # reset naar "normale" kleur . - Fredrick Gauss
@FredrickGauss Niet expliciet, maar "RESET" is de enige die kan worden afgekort als "rs" en de kleur (0) komt overeen. - wjandrea
Dat vraag ik. Je schat, concludeer. - Fredrick Gauss