1639 votes

Comment changer la couleur de sortie de echo dans Linux

Je suis en train d'imprimer un texte dans le terminal en utilisant la commande echo.

Je veux imprimer le texte dans une couleur rouge. Comment puis-je le faire?

2180voto

Tobias Points 1803

Vous pouvez utiliser ces codes:

Black        0;30     Dark Gray     1;30
Blue         0;34     Light Blue    1;34
Green        0;32     Light Green   1;32
Cyan         0;36     Light Cyan    1;36
Red          0;31     Light Red     1;31
Purple       0;35     Light Purple  1;35
Brown/Orange 0;33     Yellow        1;33
Light Gray   0;37     White         1;37

Et puis, les utiliser comme ceci dans votre script:

red='\e[0;31m'
NC='\e[0m' # No Color
echo -e "${red}Hello Stackoverflow${NC}"

908voto

Drew Noakes Points 69288

Voici plus de détails sur l'impressionnant tput commande suggéré dans Ignacio réponse.

La couleur de commandes

tput setab [1-7] # Set the background colour using ANSI escape
tput setaf [1-7] # Set the foreground colour using ANSI escape

Les couleurs sont comme suit:

Num  Colour    #define         RGB

0    black     COLOR_BLACK     0,0,0
1    red       COLOR_RED       max,0,0
2    green     COLOR_GREEN     0,max,0
3    yellow    COLOR_YELLOW    max,max,0
4    blue      COLOR_BLUE      0,0,max
5    magenta   COLOR_MAGENTA   max,0,max
6    cyan      COLOR_CYAN      0,max,max
7    white     COLOR_WHITE     max,max,max

Il y a aussi des non-ANSI versions de la couleur des fonctions de réglage (setb au lieu de setab, et setf au lieu de setaf) qui utilisent des numéros différents, pas donné ici.

Les commandes en mode texte

tput bold    # Select bold mode
tput dim     # Select dim (half-bright) mode
tput smul    # Enable underline mode
tput rmul    # Disable underline mode
tput rev     # Turn on reverse video mode
tput smso    # Enter standout (bold) mode
tput rmso    # Exit standout mode
tput sgr 0   # Reset all attributes

Les commandes de déplacement du curseur

tput cup Y X # Move cursor to screen postion X,Y (top left is 0,0)
tput cuf N   # Move N characters forward (right)
tput cub N   # Move N characters back (left)
tput cuu N   # Move N lines up
tput ll      # Move to last line, first column (if no cup)
tput sc      # Save the cursor position
tput rc      # Restore the cursor position
tput lines   # Output the number of lines of the terminal
tput cols    # Output the number of columns of the terminal

Claire et insérer des commandes

tput ech N   # Erase N characters
tput clear   # Clear screen and move the cursor to 0,0
tput el 1    # Clear to beginning of line
tput el      # Clear to end of line
tput ed      # Clear to end of screen
tput ich N   # Insert N characters (moves rest of line forward!)
tput il N    # Insert N lines

D'autres commandes

tput bel     # play a bell

Avec compiz bancale windows, l' bel commande rend le terminal d'oscillation pour une deuxième pour attirer l'attention de l'utilisateur.

Exemple d'utilisation

echo "$(tput setaf 1)Red text $(tput setab 7)and white background$(tput sgr 0)"

Ressemble à ça sur mon Ubuntu terminal:

Screenshot of colour terminal text

Utilisez la commande" sgr 0 pour réinitialiser la couleur à la fin.

La réalisation de plusieurs opérations à la fois

tput accepte les scripts contenant une commande par ligne, qui sont exécutées dans l'ordre avant d' tput des sorties.

Éviter les fichiers temporaires en se faisant l'écho d'une multiligne chaîne et de la tuyauterie:

echo -e "setf 7\nsetb 1" | tput -S  # set fg white and bg red

Voir aussi

  • Voir man 1 tput
  • Voir man 5 terminfo pour la liste complète des commandes et plus de détails sur ces options. ( tput Commande est répertorié dans l' Cap-name colonne de la table immense qui commence à la ligne 81.)

182voto

Utiliser tput avec l' setaf de la capacité et un paramètre d' 1.

echo "$(tput setaf 1)Hello, world$(tput sgr0)"

119voto

Neo Points 1468
echo -e "\033[31m Hello World"

L' [31m contrôle la couleur du texte:

  • 30-37 jeux de premier plan de couleur
  • 40-47 jeux d'arrière-plan de couleur

28voto

Alireza Mirian Points 471

Un moyen sympa de changer de couleur pour un seul echo est de définir une telle fonction:

function coloredEcho(){
    local exp=$1;
    local color=$2;
    if ! [[ $color =~ '^[0-9]$' ]] ; then
       case $(echo $color | tr '[:upper:]' '[:lower:]') in
        black) color=0 ;;
        red) color=1 ;;
        green) color=2 ;;
        yellow) color=3 ;;
        blue) color=4 ;;
        magenta) color=5 ;;
        cyan) color=6 ;;
        white|*) color=7 ;; # white or invalid color
       esac
    fi
    tput setaf $color;
    echo $exp;
    tput sgr0;
}

Utilisation:

coloredEcho "This text is green" green

Ou vous pouvez directement utiliser les codes de couleurs mentionnées dans Drew réponse:

coloredEcho "This text is green" 2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X