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 revisionPrevious revision
Next revisionBoth sides next revision
informatique:linux:bash [2016/10/14 21:50] – [Historique des commandes] création pteuinformatique:linux:bash [2016/10/17 14:45] – [PS1 avancé] pteu
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: 2023/01/09 10:52 by pteu