Mi okozza ezt a zöld hátteret az ls kimenetben?

az Linux kimenetén ls kimenet képernyője

Két könyvtárat mutat “ls”. Általában a könyvtárak bárhol kékek a fekete háttéren. De az első kék-zöld és nem olvasható. Miért ez? Hogyan lehet kék színűvé tenni a feketét, vagy legalább valami világosat valami sötétben?

Ez az Ubuntu 12.04-en van, a bash használatával a Gnome Terminalban. A Konsole-ban a kék kissé sötétebb, és olvasható, bár sokkal jobb is lehet.

Válasz

A színezésen kívül fájlok típusuk alapján (türkiz az audio fájloknál, élénkpiros az archívumok és a tömörített fájlok számára, valamint a lila a képek és videók esetében), / p>

  • A zöld háttérrel ellátott fekete szöveg azt jelzi, hogy a könyvtárat a tulajdonos felhasználótól és csoporttól eltekintve mások is írhatják, és a ragacsos bit be van állítva (o+w, +t) .
  • A zöld háttérrel ellátott kék szöveg azt jelzi, hogy egy könyvtárat a tulajdonos felhasználó és csoport kivételével mások is írhatnak, és nincs beállítva a ragacsos bit (o+w, -t).

Stephano Palazzo át a Ask Ubuntu ezt a nagyon tanulságos képet készítette a különböző attribútumszínek felett:

Wh a terminálon a különböző színek jelentik

Mint terdon rámutatott, a színbeállítások a dircolors . A különböző színbeállítások listája a dircolors --print-database gombbal érhető el.

Minden kimeneti sor, például BLK 40;33;01 , formájú:

[TARGET] [TEXT_STYLE];[FOREGROUND_COLOR];[BACKGROUND_COLOR] 
  • TARGET jelzi a színező szabály célját

  • TEXT_STYLE a szöveg stílusát jelzi:

    • 00 = nincs
    • 01 = félkövér
    • 04 = aláhúzás
    • 05 = villog
    • 07 = fordított,
    • 08 = rejtett
  • FOREGROUND_COLOR az előtér színét jelzi:

    • 30 = fekete
    • 31 = piros
    • 32 = zöld
    • 33 = sárga
    • 34 = kék,
    • 35 = bíborvörös
    • 36 = cián
    • 37 = fehér
  • BACKGROUND_COLOR jelzi a háttérszíneket:

    • 40 = fekete
    • 41 = piros
    • 42 = zöld
    • 43 = sárga
    • 44 = kék,
    • 45 = bíborvörös
    • 46 = cián
    • 47 = fehér

A mezők jobbról kiindulva elhagyhatók, így például a .tar 01;31 félkövéret és pirosat jelent.

Az XTerm és a legtöbb más modern terminálemulátor 256 színt támogat.

Az XTerm 256 színű előtér színkódja a következő formájú:

38;5;[FOREGROUND_COLOR] 

Az XTerm 256 színű háttérszín kódja a következő: form:

48;5;[BACKGROUND_COLOR] 

ahol FOREGROUND_COLOR és BACKGROUND_COLOR is egy számozza meg a 0-255 tartományt. A 16 és a 256 színmód teljes színkódjának listája az alábbi képernyőképen látható:

16 és 256 színmód színkódok

Megjegyzések

  • A BACKGROUND_COLOR kódok nem azonosak a FOREGROUND_COLOR-szal; A háttérkódok 40–47.
  • 38;5; elindít egy xterm 256-színű előtér színkódot. 48;5; elindít egy xterm 256 színű háttérszín kódot. A cián a dircolors kimenetemben 38;5;51 nem 36, bár az eredmény ugyanaz.
  • @stevesliva: Köszönöm a megjegyzést.

szerkesztettem a választ, hogy helyesen tüntessem fel a háttérszínkódokat, és leírjam a 256 színű előtér és a háttér színkódjait.

  • tehát mit jelent a zöld csak az előtérben átlagos? mint itt ?
  • @ChagaiFriedlander: Futtatható fájlok (lásd a alsó sorát a kép ).
  • Válasz

    Az ls színei képviselhetik az engedélyeket , egyes rendszerek alapértelmezése szerint olyan könyvtárakat kell megjeleníteni, ahol mindenki zöld háttérrel rendelkezik írási engedéllyel:

    ide írja be a kép leírását

    A $LS_COLORS változó szerkesztésével megváltoztathatja a színeket a dircolors (

    ) használatával:

     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. 

    A szintaxis itt bizony elég idegesítő, de ezt a színt megváltoztathatja úgy, hogy létrehoz egy kívánt színű fájlt, és elmenti a következőt: ~/.dircolors:

    dircolors -p > ~/.dircolors 

    Ez a parancs kinyomtatja az alapértelmezett értékeket ~/.dircolors. Ezután meg kell szerkesztenie a fájlt, és módosítania kell ezt a sort:

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

    Például, ha fekete szöveget szeretne tenni piros háttéren (lásd: itt a színkódok listájához):

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

    Nem kell megadnia az összes alapértelmezett értéket , egyszerűen létrehozhat egy fájlt egyetlen sorral, és definiálja újra a módosítani kívánt sort. Mindenesetre, miután létrehozta a fájlt, töltse be:

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

    És itt van a művelet:

    írja ide a kép leírását

    Ahhoz, hogy ez automatikusan megtörténjen, adja hozzá a div id = “c4bd7009e3”> parancs a fenti ~/.bashrc fájlba.

    Megjegyzések

    • Úgy tűnik, hogy az alapértelmezett színek azt jelzik, hogy az eredeti szerző utál minket és szemünket …
    • Köszönet. Miért írsz néha ~ / .dirname, és néha ~ / dircolors, és néha ~ / .színkék? állítólag azonosak?
    • Th bunkók. Miért eval "$(dircolors ~/dircolors)"; a közvetlenebb út, például a dircolors ~/dircolors helyett?
    • @Tim, mert a dircolors csak a beállításokat nyomtatja ki, ki kell értékelni, hogy elolvashassák őket.
    • hogy ki olvassa őket?

    Válasz

    Noha az összes technikai válasz igaz, kissé informális figyelmeztetésnek tartanám, hogy kissé megadta a jogait a nagyvonalú vagy a criss + cross másolásához … (leggyakrabban mindannyian , hogy a dolgok kezdetben működjenek, mi?)

    Hogyan lehet fekete színűvé tenni …?

    Ez egy jó” zöldítésmentes “, amellyel visszatérhet a legvalószínűbb jogokhoz:

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

    A legjobban megérti, hogy mit csinál, ha megérti a nagybetű + X „speciális végrehajtás” célját, azaz lásd: Wikipédia

    Csak akkor hasznos, ha a “+” – val együtt használjuk, és általában kombinációban -R opcióval csoportos vagy más hozzáférést ad egy nagy könyvtárfához anélkül, hogy engedélyt adna a normál fájlokra (például szöveges fájlokra), ami általában akkor történne, ha csak a “chmod -R a + rx …

    Válasz

    Íme a 3 lépés, amellyel megváltoztattam a színeket:

    Először másolja át az alapértelmezett színeket egy fájlba

    dircolors -p > ~/.dircolors 

    Ezután módosítsa ezt a fájlt. A színekben találhat néhány értéket, és itt van még néhány:

    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 

    ( forrás )

    És végül adja hozzá a következő sort a ~/.bashrc fájljához a terminál megnyitásakor automatikusan betöltődő színekhez:

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

    A ~/.zshrc esetén:

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

    Válasz

    A probléma gyors megoldásához (tegye a többi írható fájlt sárgára a nobg-on):

    LS_COLORS+=":ow=01;33" 

    Cserélje le a 33 szöveget a 34 kifejezésre kékre a nemen. Még egyszerűbb, hogy a nobg-nofg legyen:

    LS_COLORS+=:ow= 

    A változtatás véglegesítéséhez csatolja a .profile-hoz:

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

    Az LS_COLORS nem kiterjesztéssel kapcsolatos szabályainak megtekintése:

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

    sed minden szabályt egy sorba rak, és grep eltávolítja a *.".


    fedezze fel a terminál ls színeit, fontolja meg

    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. } 

    Ezután

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

    Amint azt egy másik válasz (Thomas Nyman válasza megemlítette), 38;5; az előtér x-term 256-színének és 48;5; a háttér x-term 256 színhez. A 256 színt azonban nem támogatja az összes terminál.

    Lásd még: -Mit jelentenek a különböző színek ls-ben? – az AskUbuntuban .

    Megjegyzések

    • Úgy találtam, hogy a LS_COLORS+=':ow=01;33' elemet a ~/.zshrc segített a szín-háttér letiltásában a könyvtáraknál egy git-repo-ban.Ez egy Windows 10 gépen van, Pengwin-WSL terjesztéssel. Most a git-repo-n belül minden könyvtár olvasható.

    Válasz

    Nos, ez azt jelenti, hogy ennek a mappának vannak engedélyei, ha ezt futtatja:

    сhmod og-w AU_LI

    eltávolítja bgcolor 🙂

    Válasz

    Ennek kijavításához próbálkozzon a ow paraméter az LS_COLORS

    Például:

    ~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 

    írja ide a kép leírását

    Most hozzáadja a ow (OTHER_WRITABLE) opció

    ~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 

    írja ide a kép leírását Bamm !!

    Megjegyzések

    Válasz

    Megváltoztathatja a Putty zöld színét, hogy a szöveg olvasható legyen.

    Nyissa meg a Putty elemet, és lépjen az Ablak \ Színek, válassza az “ANSI Green” lehetőséget, állítsa sötétebb zöldre (R: 0 G: 70 B: 0).

    Vélemény, hozzászólás?

    Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük