Bash est un langage de shell de linux. Il est installé par défaut sur Ubuntu. ====== UI ====== * [[http://eriwen.com/bash/effective-shorthand/|Utiliser efficacement bash]] ====== Cheat Sheet ====== * [[bash_cheatsheet|Bash parameters & history cheatsheet]] ===== Shebang ===== #!/bin/bash ===== Commentaire ===== # ===== Structures de contrôle ===== ==== If ==== if test; then commande elif test; then commande else commande fi ==== For ==== for i in 1 2 3 5 do commande done Voir: [[http://www.cyberciti.biz/faq/bash-for-loop/|For loop examples]] ===== Tests ===== [ $var1 = $var2 ] Strings: [ "$var1" = "$var2" ] ==== Ressources doc ==== * [[http://www.ibm.com/developerworks/library/l-bash-test.html]] * [[http://fr.wikibooks.org/wiki/Programmation_Bash/Tests]] * [[http://abs.traduc.org/abs-5.0-fr/ch07.html]] * [[http://tldp.org/LDP/abs/html/comparison-ops.html|Opérateurs de comparaison]] ===== Variables ===== :!: pas d'espace! : var=5 et non var = 5 ni $var=5 (pas de $ à la déclaration) NB: le ''$'' est un sigil: un caractère spécial permettant de distinguer une variable au sein d'une chaine de caractère. x=5 >5 echo 'il y a $x pommes dans mon sac' >'il y a 5 pommes dans mon sac' Le sigil est notamment utilisé en bash, PHP et Perl. ==== Enregistrer le résultat d'une commande dans une variable ==== x=$(commande) Pour plus de renseignements sur les opérations sur les strings, les listes, etc: [[http://www.arachnoid.com/linux/shell_programming.html|arachnoid]] ==== Paramètre ==== $0 : nom du script\\ $1...$n : paramètres\\ $? : retour de la dernière commande\\ Il en existe d'autre. ====== Astuces ====== ===== Everyday shell life ===== Pour se simplifier la vie : * les [[shell:alias|alias]] * les [[shell:export|exports]] * l'[[shell:inputrc|inputrc]] * l'[[shell:history|historique]] ===== notify-send ===== La commande notify-send est intallée dans le paquet libnotify dans les dépôts debian. Elle est super pratique pour notifier des choses à l'utilisateur dans les scripts. ===== Zenity ===== [[http://doc.ubuntu-fr.org/zenity|Zenity]] permet de conférer facilement un IHM graphique pour des scripts shell. ===== Changer la variable $PATH ===== export PATH=$PATH:~/.bin Pour ajouter /home/username/.bin par exemple. De cette manière, les scripts stockés dans ~/.bin sont exécutable sans avoir besoin de spécifier de path. Pour conserver cet ajout au PATH de façon permanente, ajouter cette ligne de commande à votre ~/.bash_rc. ===== Options & getopts ===== Un petit script d'exemple : #! /usr/bin/bash # -*- coding: utf-8 -*- echo $@ while getopts "ab:c" opt; do # a letter followed by a colon means an option expecting an operand # a colon at the beginning means "no warning message" case $opt in a) a=1;; b) b=$OPTARG;; # OPTARG is set to the corresponding operand c) c=1;; *) echo plop;; esac done shift $(($OPTIND-1)) # OPTIND is set to the first argument not processed by getopts => command shifts to the first non optionnal arg echo "a: $a; b: $b; c: $c" echo $@ * [[http://www.ibm.com/developerworks/library/l-bash-parameters.html?ca=drs-]] * [[http://unix.sjcc.edu/cis157/BashParameters.htm]] * [[http://www.c-sait.net/cours/scripts.php]] * [[http://www.iut-orsay.fr/dptinfo/Pedagogie/Roger.Astier/app_unix/analOptions.html]] ===== Ressources doc ===== * [[http://www-gtr.iutv.univ-paris13.fr/Cours/Mat/Systeme/TDTP2003/tp03.html]] * [[http://www.commentcamarche.net/faq/sujet-5444-bash-les-parametres]] * [[http://www.ac-creteil.fr/reseaux/systemes/linux/shell-scripts/shell-programmation.html]] * [[http://www.museum.state.il.us/ismdepts/library/linuxguides/abs-guide/]] * [[http://www.arachnoid.com/linux/shell_programming.html]] ===== Mes scripts ===== * [[Aruba scripts]] * [[avatar switcher]] * [[ip_forwarding]] * [[rhythmbox-load]] ===== Commandes Unix ===== * #Backup a USB Key # To list partitions: fdisk -l (with root privilegies) dd if=/dev/sdc1 of=/home/user/usb4go_bak.iso bs=16065b ===== Useful ===== * Convertir les html entities dans les noms de fichier (ex. : ''%20'' en ''_'') : for f in $(ls -1); do mv $f ${f//%20/_} ; done