Maison  >  Article  >  développement back-end  >  Compréhension approfondie de la couleur et du contrôle de sortie Shell

Compréhension approfondie de la couleur et du contrôle de sortie Shell

高洛峰
高洛峰original
2017-02-07 17:24:351397parcourir

Avant-propos

Tout le monde sait que lorsque vous utilisez la commande ls pour lister des fichiers, différents types de fichiers seront affichés dans différentes couleurs. Alors, comment obtenir une sortie de texte aussi colorée ? La réponse n’est pas compliquée, que ce soit en utilisant le shell ou le langage C.

1. Méthode d'implémentation sous shell

Parlons d'abord de la façon de l'implémenter sous shell. Ceci peut être réalisé avec la commande echo. Voir l'exemple suivant :

echo -e "33[32mHello, world!"

Lorsque vous tapez cette commande dans le terminal, constatez-vous que le système affiche "Bonjour tout le monde". en vert ? !", non seulement cela, mais aussi l'invite de commande suivante est devenue verte ? Ne vous inquiétez pas, écoutez-moi. L'option -e de la commande echo active l'interprétation par le terminal du caractère d'échappement barre oblique inverse (ie). 33 entre guillemets est utilisé pour guider les séquences de caractères non conventionnelles. La fonction ici est de guider le réglage des attributs de sortie. Le [32m suivant consiste à définir la couleur de premier plan sur le vert. La lettre m représente la catégorie d'attribut définie et le nombre représente. la valeur de l'attribut. Les paramètres

peuvent être utilisés individuellement, par exemple :

echo -e "33[0m"

La fonction de cette ligne de commande est de restaurer les attributs à leurs valeurs par défaut, c'est à dire de par exemple, l'élément de réglage 0m est utilisé pour restaurer la valeur par défaut. Est-ce que tout fonctionne correctement sur votre terminal maintenant ?

Après avoir compris cela, le reste est facile. Avec cette commande, en plus de définir la couleur de premier plan du texte, vous pouvez également définir de nombreuses propriétés.

D'autres paramètres sont répertoriés ci-dessous :

33[0m 关闭所有属性
33[1m 设置高亮度
33[4m 下划线
33[5m 闪烁
33[7m 反显
33[8m 消隐
33[30m 至 33[37m 设置前景色
33[40m 至 33[47m 设置背景色
33[nA 光标上移n行
33[nB 光标下移n行
33[nC 光标右移n行
33[nD 光标左移n行
33[y;xH设置光标位置
33[2J 清屏
33[K 清除从光标到行尾的内容
33[s 保存光标位置
33[u 恢复光标位置
33[?25l 隐藏光标
33[?25h 显示光标

Les couleurs représentées par chaque numéro sont les suivantes :

mots Gamme de couleurs de fond : 40----49

40 : Noir

41 : Rouge foncé

42 : Vert

43 : Jaune

44 : Bleu

45 : Violet

46 : Vert foncé

47 : Blanc

Couleur du personnage : 30-----------39

30 : Noir

31 : Rouge

32 : Vert

33 : Jaune

34 : Bleu

35 : Violet

36 : Vert foncé

37 : Blanc

De plus, plusieurs éléments de réglage du même type peuvent être combinés avec un point-virgule au milieu ( ;) séparé.

est la suivante :

echo -e "33[20;1H33[1;4;32mHello,world33[0m"

Cette ligne de commande d'abord 33[20;1H déplace le curseur vers la 20ème ligne et la 1ère colonne du terminal, et then 33[1; 4;32m Définissez les propriétés du texte sur surbrillance, souligné et vert, puis affichez Hello, world; Enfin 33[0m restaurez les propriétés du terminal à leurs valeurs par défaut, afin que vous ne voyiez pas l'invite de commande après le la commande est terminée. Elle a également changé.

Un contrôle complexe de la sortie du terminal peut être obtenu grâce à la combinaison des commandes ci-dessus.

2. Comment l'implémenter en programmation C ?

Après avoir compris la méthode d'implémentation ci-dessus dans Shell, il est très simple de l'implémenter en C. On peut dire qu'il vous suffit d'utiliser la fonction printf pour remplacer le echo -e ci-dessus. Voir l'exemple suivant :

int color = 32;
 
printf("33[20;1H33[1;4;%dmHello, world.33[0m", color);

Cet exemple est similaire au dernier exemple de. le shell ci-dessus, sauf que la valeur de couleur est passée ici. La variable color est spécifiée (bien sûr, elle peut également être spécifiée directement).

3. Lenovo

En voyant cela, vous vous demandez peut-être si des méthodes similaires peuvent être utilisées pour contrôler la sortie du terminal dans d'autres langages de programmation ? La réponse est oui ! Par exemple, en python, le résultat peut être le suivant :

color=32
 
print “33[20;1H33[1;4;%dHello, world.33[0m"%color

L'effet de cet exemple est le même que celui de l'exemple C ci-dessus.

Résumé

Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article pourra apporter de l'aide aux études ou au travail de chacun. peut laisser un message pour communiquer.

Pour une compréhension plus approfondie des articles relatifs à la couleur et au contrôle de sortie Shell, veuillez prêter attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn