User Tools

Site Tools


informatique:linux:bash

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision Both sides next revision
informatique:linux:bash [2016/10/14 23:50]
pteu [Historique des commandes] création
informatique:linux:bash [2016/10/17 16:45]
pteu [PS1 avancé]
Line 246: Line 246:
  
 Il existe un outil pour faire des recherches en "temps réel" dans l'​historique ; pour l'​invoquer on utilise ''​Ctrl+R''​. Le prompt est renommé en ''​(reverse-i-search)`':​ ''​ et on peut saisir une chaîne de caractères ; l'​outil va automatiquement rappeler la dernière commande saisie matchant cette chaîne. Il existe un outil pour faire des recherches en "temps réel" dans l'​historique ; pour l'​invoquer on utilise ''​Ctrl+R''​. Le prompt est renommé en ''​(reverse-i-search)`':​ ''​ et on peut saisir une chaîne de caractères ; l'​outil va automatiquement rappeler la dernière commande saisie matchant cette chaîne.
 +
 +====PS1 avancé====
 +
 +On peut utiliser la variable ''​PROMPT_COMMAND''​ pour exécuter un script à chaque affichage du prompt, afin de l'​adapter au contexte.
 +
 +Voici un exemple d'​utilisation pour faire varier la couleur de l'​utilisateur,​ la machine et afficher le code de retour de la dernière commande :
 +<code bash>
 +#
 +# à insérer dans le .bashrc ou .bash_profile
 +# penser à commenter la ligne "​PS1=..."​
 +#
 +RED="​\[\033[1;​31m\]"​
 +GREEN="​\[\033[0;​32m\]"​
 +YELLOW="​\[\033[0;​33m\]"​
 +BLUE="​\[\033[0;​34m\]"​
 +GRAY_BG="​\[\033[0;​30;​47m\]"​
 +OFF="​\[\033[m\]"​
 +TIME="​\D{%d%m_%H%M%S}"​
 +
 +function make_PS1 {
 +
 +# définition couleur "​$"​ en fonction du code de retour précédente commande
 +EXITSTATUS="​$?"​
 +if [ "​${EXITSTATUS}"​ -eq 0 ]
 +then
 +   ​RET_CMD=${GREEN}
 +else
 +   ​RET_CMD=${RED}
 +fi
 +
 +# définition couleur utilisateur
 +case $(id -u -n) in
 +   dude)
 +      USR_COL=${GREEN}
 +      ;;
 +   ​dude-adm)
 +      USR_COL=${BLUE}
 +      ;;
 +   root)
 +      USR_COL=${RED}
 +      ;;
 +   *)
 +      USR_COL=${YELLOW}
 +      ;;
 +esac
 +
 +# définition de la couleur de la machine
 +case $(hostname) in
 +   ​pc-perso)
 +      HOST_COL=${BLUE}
 +      ;;
 +   ​serveur-prod)
 +      HOST_COL=${RED}
 +      ;;
 +   *)
 +      HOST_COL=${YELLOW}
 +      ;;
 +esac
 +
 +PS1="​${GRAY_BG}${TIME}${OFF} ${USR_COL}\u${OFF}@${HOST_COL}\h${OFF}:​${YELLOW}\W${RET_CMD} \$${OFF} "
 +}
 +PROMPT_COMMAND=make_PS1
 +</​code>​
 +
 +Ce qui donne : ''​1710_164245 dude@pc-perso:​home $ ''​ avec des couleurs qui évoluent avec le contexte.
 +
informatique/linux/bash.txt · Last modified: 2019/09/10 17:11 by pteu