Comment modifier les couleurs des répertoires et des fichiers dans la commande ls
Si vous avez couru le ls
Dans Bash, vous remarquerez que les répertoires et les fichiers que vous voyez sont colorisés en fonction de leur type. Vous pouvez personnaliser votre propre jeu de couleurs pour choisir différentes couleurs de texte, couleurs d'arrière-plan et mise en forme, telles que gras et souligné..
Comment ça marche
Le jeu de couleurs est stocké dans la variable LS_COLORS. Pour afficher votre jeu de couleurs actuel, vous pouvez indiquer au Bash d’imprimer le contenu de la variable:
echo $ LS_COLORS
Vous verrez une longue liste de types de fichiers et de codes numériques. Nous expliquerons comment créer une liste comme celle-ci.
Avant de vous en occuper, nous vous recommandons d’enregistrer le contenu actuel de la variable LS_COLORS dans une autre variable. Cela vous permettra de restaurer rapidement les paramètres par défaut sans vous déconnecter du shell ni vous reconnecter, ni fermer ni rouvrir la fenêtre du terminal. Pour enregistrer le contenu actuel de la variable LS_COLORS dans une nouvelle variable nommée ORIGINAL, exécutez:
ORIGINAL = $ LS_COLORS
A tout moment, vous pouvez exécuter la commande suivante pour annuler vos modifications et restaurer les couleurs par défaut:
LS_COLORS = $ ORIGINAL
Vos modifications sont toujours temporaires jusqu'à ce que vous modifiiez un fichier pour en faire vos nouvelles valeurs par défaut. Vous pouvez toujours vous déconnecter et vous reconnecter ou fermer et rouvrir une fenêtre de terminal pour restaurer les couleurs par défaut. Cependant, cela facilite la tâche avec une seule commande rapide.
Comment définir des couleurs personnalisées
La variable LS_COLORS contient une liste de types de fichiers avec les codes de couleurs associés. La liste par défaut est longue car elle spécifie différentes couleurs pour différents types de fichiers..
Commençons par un exemple de base pour montrer comment cela fonctionne. Supposons que nous voulions changer la couleur des répertoires du bleu gras par défaut au rouge gras. Nous pouvons exécuter la commande suivante pour le faire:
LS_COLORS = "di = 1; 31"
le di = 1; 31
peu raconte ls
ces répertoires (di
) sont (=
) audacieux (1;
) rouge (31
).
Cependant, il ne s’agit que d’une très simple variable LS_COLORS qui définit les répertoires comme une couleur et laisse tous les autres types de fichiers comme couleur par défaut. Supposons que nous voulions également que les fichiers portant l'extension .desktop deviennent une couleur cyan soulignée. Nous pouvons exécuter la commande suivante pour le faire:
LS_COLORS = "di = 1: 31: *. Desktop = 4; 36"
Cela raconte ls
ces répertoires (di
) sont (=
) audacieux (1;
) rouge (31
) et (:
) tout fichier se terminant par .desktop (* .desktop
) est (=
) souligné (4;
) cyan (36
).
Ceci est le processus pour assembler votre liste de types de fichiers et de couleurs. Spécifiez autant que vous le souhaitez sous la forme filetype = color, en les séparant par deux points (:)..
Pour constituer votre propre liste, il vous suffit de connaître la liste des codes de couleur et des codes de type de fichier. Ceci utilise les mêmes codes de couleur numériques que vous utilisez lorsque vous modifiez la couleur dans votre invite Bash.
Voici la liste des codes de couleur pour le texte au premier plan:
- Noir: 30
- Bleu: 34
- Cyan: 36
- Vert: 32
- Violet: 35
- Rouge: 31
- Blanc: 37
- Jaune: 33
Par exemple, puisque le texte jaune correspond au code de couleur 33, vous utiliseriez di = 33
faire des annuaires jaunes.
Voici la liste des attributs de couleur du texte:
- Texte normal: 0
- Texte en gras ou clair: 1 (Cela dépend de l'émulateur de terminal.)
- Dim Text: 2
- Texte souligné: 4
- Texte clignotant: 5 (Cela ne fonctionne pas dans la plupart des émulateurs de terminaux.)
- Texte inversé: 7 (Ceci inverse les couleurs de l'avant-plan et de l'arrière-plan. Vous verrez ainsi du texte noir sur un arrière-plan blanc si le texte actuel est du texte blanc sur un arrière-plan noir.)
- Texte caché: 8
Lorsque vous spécifiez un attribut ou plusieurs codes de couleur, séparez la liste de codes par un point-virgule (;). Vous n'avez pas besoin de spécifier 0 pour le texte normal, car le texte normal est utilisé lorsque vous ne spécifiez pas d'attribut ici..
Par exemple, puisque le texte en gras correspond au code de couleur 1 et le texte jaune au code de couleur 33, vous devez utiliser di = 1; 33
faire des annuaires audacieux jaune. Vous pouvez également spécifier plusieurs attributs. Par exemple, vous pouvez utiliser di = 1; 4; 33
faire des annuaires gras, souligné jaune.
Voici la liste des codes de couleur de fond:
- Fond noir: 40
- Fond bleu: 44
- Contexte cyan: 46
- Fond vert: 42
- Fond violet: 45
- Fond rouge: 41
- Fond blanc: 47
- Fond jaune: 43
Par exemple, puisqu'un fond bleu est le code de couleur 44, vous utiliseriez di = 44
utiliser un fond bleu pour les répertoires. Vous pouvez également combiner un code de couleur d'arrière-plan, un code de couleur de premier plan et autant d'attributs que vous le souhaitez. Par exemple, di = 1; 4; 33; 44
vous donnerait du texte jaune souligné et gras sur un fond bleu.
Voici la liste des codes de type de fichier:
- Annuaire: di
- Fichier: fi
- Lien symbolique: ln
- Named Pipe (FIFO): pi
- Socket: alors
- Dispositif de bloc: bd
- Caractère: cd
- Lien symbolique orphelin (pointe vers un fichier qui n'existe plus): ou
- Fichier manquant (fichier manquant pointé par un lien symbolique orphelin): mi
- Fichier exécutable (avec l'autorisation «x»): ex
- * .extension: Tout fichier se terminant par une extension que vous spécifiez. Par exemple, utilisez * .txt pour les fichiers se terminant par .txt, * .mp3 pour les fichiers se terminant par .mp3, * .desktop pour les fichiers se terminant par .desktop, ou tout ce que vous préférez. Vous pouvez spécifier autant d'extensions de fichiers que vous le souhaitez.
Spécifiez autant de types de codes de type de fichier avec autant de couleurs que vous le souhaitez, séparés par le caractère:. Répétez cette procédure pour assembler votre variable LS_COLORS.
Par exemple, supposons que vous souhaitiez utiliser du texte violet en gras pour les répertoires, du texte souligné en rouge pour les fichiers exécutables et du texte vert en gras sur fond rouge pour les fichiers .mp3. En regroupant les codes de type de fichier et les codes de couleur des listes ci-dessus, vous obtenez:
LS_COLORS = "di = 1; 35: ex = 4; 31: *. Mp3 = 1; 32; 41"
Comment définir vos nouvelles couleurs par défaut
Vous avez maintenant une variable LS_COLORS personnalisée qui fonctionne dans la session Bash en cours. Cependant, vous souhaiterez probablement la rendre permanente afin qu'elle soit automatiquement utilisée chaque fois que vous démarrez une nouvelle session Bash sans que vous ayez à vous en souvenir..
Vous pouvez définir votre variable LS_COLORS personnalisée, ainsi que toute autre variable Bash de votre choix, en l'ajoutant au fichier .bashrc de votre compte d'utilisateur. Ce fichier se trouve dans ~ / .bashrc. Donc, si votre nom d'utilisateur est bob, vous le trouverez à /home/bob/.bashrc. Il existe également d'autres moyens de définir des variables d'environnement, mais il s'agit d'un moyen simple..
Commencez par ouvrir ce fichier dans votre éditeur de texte préféré. Nous allons utiliser nano ici à titre d'exemple, mais vous pouvez utiliser vi, emacs ou tout ce que vous voulez.
nano ~ / .bashrc
Ajoutez votre variable LS_COLORS personnalisée à une nouvelle ligne à la fin du fichier, comme suit:
LS_COLORS = "di = 1; 35: ex = 4; 31: *. Mp3 = 1; 32; 41"
Enregistrez le fichier et quittez. En nano, appuyez sur Ctrl + O, puis sur Entrée pour enregistrer, puis sur Ctrl + X pour quitter..
Chaque fois que vous démarrez une nouvelle session Bash, Bash lit le fichier .bashrc et définit automatiquement votre variable LS_COLORS. Pour changer vos couleurs dans le futur, retournez dans votre fichier .bashrc et éditez la ligne LS_COLORS.
Vous pouvez aussi simplement supprimer le LS_COLORS =
ligne que vous avez ajoutée à votre fichier .bashrc pour utiliser à nouveau les couleurs par défaut. Si vous ne définissez pas la valeur LS_COLORS, Bash utilisera les couleurs par défaut..