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
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/04/16 17:08 by pteu