Mikä aiheuttaa tämän vihreän taustan ls-tuotoksessa?

linux-koneen ls-lähdön kuvakansio

Näyttää kaksi hakemistoa ”ls”. Normaalisti hakemistot missä tahansa ovat sinisellä mustalla taustalla. Mutta ensimmäinen on sininen vihreällä ja mahdotonta lukea. Miksi tämä on? Kuinka tehdä siitä sininen mustana tai ainakin jotain valoa jossakin tummassa?

Tämä on Ubuntu 12.04: ssä käyttäen bashia Gnome Terminalissa. Konsolessa sininen on hieman tummempi ja helposti luettavissa, vaikka se voisi olla paljon parempi.

Vastaa

Värin lisäksi tiedostot tyypin perusteella (turkoosi äänitiedostoille, kirkkaan punainen arkistoille ja pakatuille tiedostoille ja violetti kuville ja videoille), ls myös värittää tiedostot ja hakemistot niiden ominaisuuksien perusteella:

  • Vihreällä taustalla oleva musta teksti osoittaa, että hakemisto on kirjoitettavissa muille paitsi omistavalle käyttäjälle ja ryhmälle ja että siihen on asetettu tahmea bitti (o+w, +t) .
  • Sininen, vihreällä taustalla oleva teksti osoittaa, että hakemisto on kirjoitettavissa muille paitsi omistavalle käyttäjälle ja ryhmälle, ja ei ole asettanut tahmeaa bittiä (o+w, -t).

Stephano Palazzo yli Ask Ubuntu on tehnyt tämän erittäin opettavan kuvan eri attribuuttiväreistä:

Wh eri väreissä tarkoittaa päätettä

Kuten terdon huomautti, väri-asetuksia voidaan muokata dircolors . Eri väriasetusten luettelo on käytettävissä dircolors --print-database -toiminnolla.

Jokainen ulostulorivi, kuten BLK 40;33;01 , on muodoltaan:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR] 
  • TARGET osoittaa värisäännön kohteen

  • iv TEXT_STYLE ilmaisee tekstityylin:

    • 00 = ei ole
    • 01 = lihavoitu
    • 04 = alaviiva
    • 05 = vilkkuu
    • 07 = käänteinen,
    • 08 = piilotettu
  • FOREGROUND_COLOR osoittaa etualan värin:

    • 30 = musta
    • 31 = punainen
    • 32 = vihreä
    • 33 = keltainen
    • 34 = sininen,
    • 35 = magenta
    • 36 = syaani
    • 37 = valkoinen
  • BACKGROUND_COLOR ilmaisee taustavärit:

    • 40 = musta
    • 41 = punainen
    • 42 = vihreä
    • 43 = keltainen
    • 44 = sininen,
    • 45 = purppura
    • 46 = syaani
    • 47 = valkoinen

Kentät voidaan jättää pois oikealta alkaen, joten esimerkiksi .tar 01;31 tarkoittaa lihavoitua ja punaista.

XTerm ja useimmat muut modernit pääteemulaattorit tukevat 256 väriä.

XTerm 256 -värisen etualan värikoodi on muotoinen:

38;5;[FOREGROUND_COLOR] 

XTerm 256 -värinen taustavärikoodi on lomake:

48;5;[BACKGROUND_COLOR] 

jossa sekä FOREGROUND_COLOR että BACKGROUND_COLOR on numeroi alue 0-255. Täydellinen luettelo värikoodeista 16 ja 256 väritilalle näkyy alla olevassa kuvakaappauksessa:

16 ja 256 väritilan värikoodit

Kommentit

  • BACKGROUND_COLOR-koodit eivät ole samat kuin FOREGROUND_COLOR; Taustatunnukset ovat 40–47.
  • 38;5; alkaa xterm 256-väri etualan värikoodi. 48;5; aloittaa xterm 256-värisen taustavärikoodin. Syaani dircolors-tuotoksessani on 38;5;51 ei 36, vaikka tulos on sama.
  • @stevesliva: Kiitos kommentistasi. Olen ’ muokannut vastausta osoittamaan taustavärikoodit oikein ja kuvaamaan 256-väriset etu- ja taustavärikoodit.
  • niin mitä vihreä vain etualalla tarkoittaa? kuten minulla on täällä ?
  • @ChagaiFriedlander: Suoritettavat tiedostot (katso alarivi kohdassa kuva ).

vastaus

ls -värit voivat edustaa käyttöoikeuksia , joidenkin järjestelmien oletuksena on näyttää hakemistot, joissa kaikilla on vihreällä taustalla olevat kirjoitusoikeudet:

kirjoita kuvan kuvaus tähän

Voit muuttaa värejä muokkaamalla $LS_COLORS -muuttujaa käyttämällä dircolors (osoitteesta man ls):

 Using color to distinguish file types is disabled both by default and with --color=never. With --color=auto, ls emits color codes only when standard output is connected to a terminal. The LS_COLORS environment variable can change the settings. Use the dircolors command to set it. 

Syntaksi on tosin eräänlainen ärsyttävä, mutta voit muuttaa tätä väriä luomalla haluamillasi väreillä tiedoston ja tallentamalla sen nimellä ~/.dircolors:

dircolors -p > ~/.dircolors 

Tämä komento tulostaa oletusarvot muotoon ~/.dircolors. Sitten sinun on muokattava tiedostoa ja muutettava tätä riviä:

OTHER_WRITABLE 34;42 # dir that is other-writable (o+w) and not sticky 

Esimerkiksi, jos haluat tehdä siitä mustan tekstin punaisella taustalla (katso täällä luettelo värikoodeista):

OTHER_WRITABLE 30;41 # dir that is other-writable (o+w) and not sticky 

Sinulla ei tarvitse olla kaikkia oletuksia , voit myös luoda vain yhden rivin tiedoston määrittelemällä uudelleen vain muutettavan rivin. Joka tapauksessa, kun olet luonut tiedoston, lataa se:

eval "$(dircolors ~/.dircolors)"; 

Ja tässä se on toiminnassa:

kirjoita kuvan kuvaus tähän

Jotta tämä tapahtuisi automaattisesti, lisää eval -komento yllä olevaan ~/.bashrc -tiedostoon.

Kommentit

  • Oletusvärit näyttävät usein osoittavan, että alkuperäinen kirjoittaja vihaa meitä ja silmiämme …
  • Kiitos. Miksi kirjoitat joskus ~ / .hakemistonimeä ja joskus ~ / dircolors ja joskus ~ / .värit? pitäisikö niiden olla samanlaisia?
  • Th pahoinpitelyt. Miksi eval "$(dircolors ~/dircolors)"; suoremman tavan, kuten dircolors ~/dircolors, sijaan?
  • @Tim koska dircolors tulostaa vain asetukset, täytyy arvioida se, jotta ne voidaan lukea.
  • jotta kuka tahansa lukisi heidät?

Vastaa

Vaikka kaikki tekniset vastaukset pitävät paikkansa, pidän sitä hieman epävirallisena varoituksena, että annoit hieman oikeuksia avokätisesti tai kopioida criss + cross … (useimmiten me kaikki , jotta asiat toimisivat alun perin, eikö?)

Kuinka tehdä sinistä mustaksi, …?

Hyvä” vihreämpi ”, jotta pääset takaisin todennäköisesti oikeuksiisi, on tämä lausunto:

chmod -R a-x,o-w,+X thatGreenFolderWithSubfolders/ 

Parhaiten ymmärrät, mitä se tekee, jos ymmärrät isojen kirjainten + X tarkoituksen ”erityinen suoritus” tarkoituksen, ts. Wikipedia

Se on todella hyödyllinen vain käytettäessä ”+”: n kanssa ja yleensä yhdessä -R-vaihtoehdolla ryhmä- tai muun pääsyn antaminen isoon hakemistopuuhun asettamatta suorita lupaa normaaleille tiedostoille (kuten tekstitiedostoille), mikä tapahtuisi normaalisti, jos käytät vain ”chmod -R a + rx … p>

Vastaa

Tässä on kolme vaihetta, joilla vaihdoin värejä:

Kopioi ensin oletusvärit tiedostoon

dircolors -p > ~/.dircolors 

Muokkaa sitten tiedostoa. Sisällä on joitain värejä koskevia arvoja, ja tässä on lisää:

Code Color 0 Default Colour 1 Bold 4 Underlined 5 Flashing Text 7 Reverse Field 31 Red 32 Green 33 Orange 34 Blue 35 Purple 36 Cyan 37 Grey 40 Black Background 41 Red Background 42 Green Background 43 Orange Background 44 Blue Background 45 Purple Background 46 Cyan Background 47 Grey Background 90 Dark Grey 91 Light Red 92 Light Green 93 Yellow 94 Light Blue 95 Light Purple 96 Turquoise 100 Dark Grey Background 101 Light Red Background 102 Light Green Background 103 Yellow Background 104 Light Blue Background 105 Light Purple Background 106 Turquoise Background 

( lähde )

Ja lopuksi lisää seuraava rivi ~/.bashrc -tiedostoon, jotta värit ladataan automaattisesti, kun avaat päätelaitteen:

eval "dircolors ~/.dircolors" > /dev/null 

Sivustolle ~/.zshrc:

if [[ -f ~/.dircolors ]] ; then eval $(dircolors -b ~/.dircolors) elif [[ -f /etc/DIR_COLORS ]] ; then eval $(dircolors -b /etc/DIR_COLORS) fi 

Vastaa

Voit korjata ongelman nopeasti (tee muut kirjoitettavat tiedostot keltaiseksi nobg-tiedostoon):

LS_COLORS+=":ow=01;33" 

Korvaa 33 sanoilla 34 sinisellä nobg-merkillä. Vielä yksinkertaisempi, jotta siitä tehdään nofg nobg: ssä:

LS_COLORS+=:ow= 

Jotta muutos olisi pysyvä, liitä se .profiiliin:

echo "export LS_COLORS+=":ow=01;33"" >> ~/.profile 

Voit tarkastella LS_COLORS-tiedostojen laajennuksiin liittyviä sääntöjä:

echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*." 

sed sijoittaa kukin sääntö yhdelle riville ja grep poistaa säännöt, jotka alkavat *.".


tutkia päätelaitteen ls värejä, harkitse

C="$LS_COLORS" function sc () { echo "$LS_COLORS" | sed "s/:/\n/g" | grep -v "\*." } function t () { ls /mnt # Or the path to your example directory. } 

Sitten

LS_COLORS="$C:ow=38;5;250;48;5;025";t 

Kuten toisessa vastauksessa (Thomas Nymanin vastauksessa) todettiin, 38;5; on etuliite x-termi 256-etualalle ja 48;5; taustalla x-term 256 väriä. Kaikki päätteet eivät kuitenkaan tue 256 väriä.

Katso myös -Mitä eri värit tarkoittavat ls: ssä? – AskUbuntussa .

kommentit

  • Löysin pudottavan LS_COLORS+=':ow=01;33' ~/.zshrc auttoi poistamaan väri-taustan hakemistoista git-repossa.Tämä on Windows 10 -laitteessa, jossa on Pengwin-WSL-jakelu. Nyt kaikki hakemistot git-repossa ovat luettavissa.

Vastaa

Tämä tarkoittaa, että tällä kansiolla on lupia, jos suoritat tämän:

сhmod og-w AU_LI

se poistaa bgcolor 🙂

Vastaa

Voit korjata ongelman kokeilemalla ow parametri LS_COLORS

Esimerkiksi:

~LS_COLORS="fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33" ~ls -l 

kirjoita kuvan kuvaus tähän

Nyt lisäät ow (OTHER_WRITABLE) -vaihtoehto

~export LS_COLORS="fi=0:ln=5:pi=0:so=7:bd=5:cd=5:or=31:mi=0:ex=93:*.py=36:di=40:*.zip=33:*.tgz=33:ow=0" ~ls -l 

kirjoita kuvan kuvaus tähän Bamm !!

Kommentit

vastaus

Voit muuttaa tekstin luettavaksi muuttamalla Puttyn vihreän sävyä.

Avaa Putty ja siirry ikkunaan \ Colors, valitse ”ANSI Green”, aseta se tummemmaksi vihreäksi (R: 0 G: 70 B: 0).

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *