GNU/Linux >> Tutoriels Linux >  >> Linux

Bash Shell PS1 :10 exemples pour rendre votre invite Linux comme Angelina Jolie

Photo publiée avec l'aimable autorisation de f1r3storm85

Dans l'article précédent, nous avons discuté des variables d'environnement Linux PS[1-4] et PROMPT_COMMAND. S'il est utilisé efficacement, PS1 peut fournir des informations précieuses directement sur l'invite de commande.

Dans Tomb Raider, Angelina Jolie a tous les gadgets et toutes les armes à portée de main pour résoudre le mystère avec style. Alors que le gadget et le style d'Angelina Jolie sont difficiles à égaler, essayons au moins de rendre la bonne vieille invite Linux très fonctionnelle et élégante en utilisant les 10 exemples fournis dans cet article.

1. Afficher le nom d'utilisateur, le nom d'hôte et le répertoire de travail actuel dans l'invite

La PS1 dans cet exemple affiche les trois informations suivantes dans l'invite :

  • \u – Nom d'utilisateur
  • \h – Nom d'hôte
  • \w – Chemin complet du répertoire de travail courant
-bash-3.2$ export PS1="\u@\h \w> "

ramesh@dev-db ~> cd /etc/mail
ramesh@dev-db /etc/mail>

2. Afficher l'heure actuelle dans l'invite

Dans la variable d'environnement PS1, vous pouvez directement exécuter n'importe quelle commande Linux, en spécifiant au format $(linux_command). Dans l'exemple suivant, la commande $(date) est exécutée pour afficher l'heure actuelle dans l'invite.

ramesh@dev-db ~> export PS1="\u@\h [\$(date +%k:%M:%S)]> "

ramesh@dev-db [11:09:56]>

Vous pouvez également utiliser \t pour afficher l'heure actuelle au format hh:mm:ss comme indiqué ci-dessous :

ramesh@dev-db ~> export PS1="\u@\h [\t]> "
ramesh@dev-db [12:42:55]>

Vous pouvez également utiliser \@ pour afficher l'heure actuelle au format 12 heures am/pm comme indiqué ci-dessous :

ramesh@dev-db ~> export PS1="[\@] \u@\h> "
[04:12 PM] ramesh@dev-db>

3. Afficher la sortie de n'importe quelle commande Linux dans l'invite

Vous pouvez afficher la sortie de n'importe quelle commande Linux dans l'invite. L'exemple suivant affiche trois éléments séparés par | (tuyau) dans l'invite de commande :

  • \! : Le numéro d'historique de la commande
  • \h : nom d'hôte
  • $kernel_version : La sortie de la commande uname -r de la variable $kernel_version
  • \$ ? : Statut de la dernière commande
ramesh@dev-db ~> kernel_version=$(uname -r)
ramesh@dev-db ~> export PS1="\!|\h|$kernel_version|\$?> "
473|dev-db|2.6.25-14.fc9.i686|0>

4. Changer la couleur de premier plan de l'invite

Afficher l'invite en bleu, ainsi que les informations sur le nom d'utilisateur, l'hôte et le répertoire actuel

$ export PS1="\e[0;34m\u@\h \w> \e[m"
[Note: This is for light blue prompt]

$ export PS1="\e[1;34m\u@\h \w> \e[m"
[Note: This is for dark blue prompt]
  • \e[ - Indique le début de l'invite de couleur
  • x;ym – Indique le code couleur. Utilisez les valeurs de code couleur mentionnées ci-dessous.
  • \e[m - indique la fin de l'invite de couleur

Tableau des codes de couleur :

Black 0;30
Blue 0;34
Green 0;32
Cyan 0;36
Red 0;31
Purple 0;35
Brown 0;33
[Note: Replace 0 with 1 for dark color]

Rendez le changement de couleur permanent en ajoutant les lignes suivantes à .bash_profile ou .bashrc

STARTCOLOR='\e[0;34m';
ENDCOLOR="\e[0m"
export PS1="$STARTCOLOR\u@\h \w> $ENDCOLOR"

5. Changer la couleur de fond de l'invite

Modifiez la couleur d'arrière-plan en spécifiant \e[{code}m dans l'invite PS1, comme indiqué ci-dessous.

$ export PS1="\e[47m\u@\h \w> \e[m"
[Note: This is for Light Gray background]

Combinaison d'arrière-plan et de premier plan

export PS1="\e[0;34m\e[47m\u@\h \w> \e[m"
[Note: This is for Light Blue foreground and Light Gray background]

Ajoutez ce qui suit au .bash_profile ou .bashrc pour rendre permanente la couleur d'arrière-plan et de premier plan ci-dessus.

STARTFGCOLOR='\e[0;34m';
STARTBGCOLOR="\e[47m"
ENDCOLOR="\e[0m"
export PS1="$STARTFGCOLOR$STARTBGCOLOR\u@\h \w> $ENDCOLOR"

Amusez-vous en utilisant la couleur de fond suivante et choisissez celle qui vous convient :

  • \e[40m
  • \e[41m
  • \e[42m
  • \e[43m
  • \e[44m
  • \e[45m
  • \e[46m
  • \e[47m

6. Afficher plusieurs couleurs dans l'invite

Vous pouvez également afficher plusieurs couleurs dans la même invite. Ajoutez la fonction suivante à .bash_profile

function prompt {
  local BLUE="\[\033[0;34m\]"
  local DARK_BLUE="\[\033[1;34m\]"
  local RED="\[\033[0;31m\]"
  local DARK_RED="\[\033[1;31m\]"
  local NO_COLOR="\[\033[0m\]"
  case $TERM in
    xterm*|rxvt*)
      TITLEBAR='\[\033]0;\u@\h:\w\007\]'
      ;;
    *)
      TITLEBAR=""
      ;;
  esac
  PS1="\u@\h [\t]> "
  PS1="${TITLEBAR}\
  $BLUE\u@\h $RED[\t]>$NO_COLOR "
  PS2='continue-> '
  PS4='$0.$LINENO+ '
}

Vous pouvez vous reconnecter pour que les modifications prennent effet ou vous procurer le .bash_profile comme indiqué ci-dessous.

$. ./.bash_profile
$ prompt
ramesh@dev-db [13:02:13]>

7. Modifiez la couleur de l'invite à l'aide de tput

Vous pouvez également changer la couleur de l'invite PS1 en utilisant tput comme indiqué ci-dessous :

$ export PS1="\[$(tput bold)$(tput setb 4)$(tput setaf 7)\]\u@\h:\w $ \[$(tput sgr0)\]"

capacités de couleur tput :

  • tput setab [1-7] – Définissez une couleur d'arrière-plan à l'aide de l'échappement ANSI
  • tput setb [1-7] – Définissez une couleur d'arrière-plan
  • tput setaf [1-7] – Définissez une couleur de premier plan à l'aide de l'échappement ANSI
  • tput setf [1-7] – Définir une couleur de premier plan

Capacités du mode texte tput :

  • mettre en gras – Définir le mode gras
  • mettre faible – activer le mode demi-luminosité
  • tput smul – commencer le mode souligné
  • tput rmul – quitter le mode souligné
  • tput rev – Activer le mode inversé
  • mettre smso - Entrez en mode hors concours (gras sur rxvt)
  • tput rmso – Quitter le mode hors concours
  • tput sgr0 – Désactivez tous les attributs

Code couleur pour tput :

  • 0 - Noir
  • 1 – Rouge
  • 2 - Vert
  • 3 – Jaune
  • 4 – Bleu
  • 5 – Magenta
  • 6 – Cyan
  • 7 – Blanc

8. Créez votre propre invite en utilisant les codes disponibles pour la variable PS1

Utilisez les codes suivants et créez votre propre invite PS1 Linux personnelle, fonctionnelle et adaptée à vos goûts. Quel code de cette liste sera très utile pour une utilisation quotidienne ? Laissez votre commentaire et faites-moi savoir quel code PS1 vous avez utilisé pour votre invite Linux.

  • \a un caractère cloche ASCII (07)
  • \d la date au format "jour de la semaine et mois" (par exemple, "mardi 26 mai")
  • \D{format} – le format est passé à strftime(3) et le résultat est inséré dans la chaîne d'invite; un format vide donne une représentation temporelle spécifique aux paramètres régionaux. Les accolades sont obligatoires
  • \e un caractère d'échappement ASCII (033)
  • \h le nom d'hôte jusqu'à la première partie
  • \H le nom d'hôte
  • \j le nombre de jobs actuellement gérés par le shell
  • \l le nom de base du nom du terminal du shell
  • \n nouvelle ligne
  • \r retour chariot
  • \s le nom du shell, le nom de base de $0 (la partie suivant la barre oblique finale)
  • \t l'heure actuelle au format 24 heures HH:MM:SS
  • \T l'heure actuelle au format 12 heures HH:MM:SS
  • \@ l'heure actuelle au format 12 heures am/pm
  • \A l'heure actuelle au format 24 heures HH:MM
  • \u le nom d'utilisateur de l'utilisateur actuel
  • \v la version de bash (par exemple, 2.00)
  • \V la version de bash, version + niveau de correctif (par exemple, 2.00.0)
  • \w le répertoire de travail courant, avec $HOME abrégé avec un tilde
  • \W le nom de base du répertoire de travail actuel, avec $HOME abrégé avec un tilde
  • \ ! le numéro d'historique de cette commande
  • \# le numéro de commande de cette commande
  • \$ si l'UID effectif est 0, un #, sinon un $
  • \nnn le caractère correspondant au nombre octal nnn
  • \\ une barre oblique inverse
  • \[ commencer une séquence de caractères non imprimables, qui pourraient être utilisés pour intégrer une séquence de contrôle de terminal dans l'invite
  • \] terminer une séquence de caractères non imprimables

9. Utiliser la fonction shell bash dans la variable PS1

Vous pouvez également invoquer une fonction shell bash dans la PS1, comme indiqué ci-dessous.

ramesh@dev-db ~> function httpdcount {
>  ps aux | grep httpd | grep -v grep | wc -l
> }

ramesh@dev-db ~> export PS1="\u@\h [`httpdcount`]> "
ramesh@dev-db [12]>
[Note: This displays the total number of running httpd processes]

Vous pouvez ajouter la ligne suivante à .bash_profile ou .bashrc pour rendre ce changement permanent :

function httpdcount {
  ps aux | grep httpd | grep -v grep | wc -l
}
export PS1='\u@\h [`httpdcount`]> '

10. Utiliser le script shell dans la variable PS1

Vous pouvez également invoquer un script shell à l'intérieur de la variable PS1. Dans l'exemple ci-dessous, ~/bin/totalfilesize.sh, qui calcule la taille totale du fichier du répertoire courant, est appelé dans la variable PS1.

ramesh@dev-db ~> cat ~/bin/totalfilesize.sh

for filesize in $(ls -l . | grep "^-" | awk '{print $5}')
do
  let totalsize=$totalsize+$filesize
done
echo -n "$totalsize"

ramesh@dev-db ~> export PATH=$PATH:~/bin
ramesh@dev-db ~> export PS1="\u@\h [\$(totalfilesize.sh) bytes]> "
ramesh@dev-db [534 bytes]> cd /etc/mail
ramesh@dev-db [167997 bytes]>
[Note: This executes the totalfilesize.sh to display the total
       file size of the current directory in the PS1 prompt]


Combien de personnalisation avez-vous apporté à votre PS1 ? Votre PS1 peut-elle battre Angelina Jolie ? Laissez un commentaire et partagez votre PS1 valeur d'invite.

Lecture recommandée

Bash Cookbook, par Carl Albing, JP Vossen et Cameron Newham . Bash est un shell très puissant. Ce livre vous aidera à maîtriser le shell bash et à devenir très productif. Que vous soyez un administrateur système, un DBA ou un développeur, vous devez écrire un script shell à un moment donné. Un administrateur système avisé sait qu'une fois que vous avez maîtrisé les techniques de script shell, vous pouvez mettre vos serveurs en mode pilote automatique en laissant les scripts shell faire le gros du travail. Pour accéder au mode pilote automatique de sysadmin, vous devez absolument maîtriser les exemples fournis dans ce livre de recettes. Il existe peu de livres de shell Bash. Mais, ce livre les dépasse tous en donnant beaucoup d'exemples détaillés.
 
Recommandation de livre Linux supplémentaire :12 livres Linux étonnants et essentiels pour enrichir votre cerveau et votre bibliothèque
 
Si vous avez aimé cet article, veuillez le mettre en signet sur del.icio.us et Stumble it.


Linux
  1. Comment définir votre variable $PATH sous Linux

  2. Hivériser votre invite Bash sous Linux

  3. Comment raccourcir l'invite Bash sous Linux ?

  4. 9 Exemples tput UNIX / Linux :contrôlez la couleur et le curseur de votre terminal

  5. 12 exemples de boucle Bash For pour votre script de shell Linux

Comment personnaliser l'invite Bash sous Linux

Commande Linux make expliquée avec des exemples

Rendez votre coquille de poisson magnifique avec Oh My Fish

La commande Bash Echo expliquée avec des exemples sous Linux

Comment installer Linux Bash Shell sur Windows 10

Linux make Commande avec des exemples