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
Previous revision
Last revision Both sides next revision
informatique:linux:bash [2016/10/14 23:50]
pteu [Historique des commandes] création
informatique:linux:bash [2019/04/16 17:08]
pteu [Debugger un script] vérifier la syntaxe
Line 69: Line 69:
 =====Debugger un script===== =====Debugger un script=====
  
-Pour débugger un script, ajouter dans le script :+Pour vérifier la syntaxe d'un script sans lancer : ''​set -n''​ (ou ''​bash -n mon_script.sh''​) 
 + 
 +Pour le débugger un script, ajouter dans le script :
   * ''​set -x''​ à partir de l'​endroit où l'on veut tracer le script   * ''​set -x''​ à partir de l'​endroit où l'on veut tracer le script
   * ''​set +x''​ à partir de l'​endroit où l'on veut cesser de tracer le script ​   * ''​set +x''​ à partir de l'​endroit où l'on veut cesser de tracer le script ​
- +Autre méthode : lancer le script dans nouveau shell avec : ''​bash -x script''​
-Autre méthode : lancer le script dans nouveau shell avec : ''​sh -x script''​+
  
 Encore une autre méthode : à la première ligne du script, rajouter "​-v"​ au **shebang**,​ par exemple : Encore une autre méthode : à la première ligne du script, rajouter "​-v"​ au **shebang**,​ par exemple :
Line 246: Line 247:
  
 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