Bash est un langage de shell de linux. Il est installé par défaut sur Ubuntu.
#!/bin/bash
#
if test; then commande elif test; then commande else commande fi
for i in 1 2 3 5 do commande done
Voir: For loop examples
[ $var1 = $var2 ]
Strings:
[ "$var1" = "$var2" ]
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.
x=$(commande)
Pour plus de renseignements sur les opérations sur les strings, les listes, etc: arachnoid
$0 : nom du script
$1…$n : paramètres
$? : retour de la dernière commande
Il en existe d'autre.
Pour se simplifier la vie :
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 permet de conférer facilement un IHM graphique pour des scripts shell.
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.
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 $@
#Backup a USB Key # To list partitions: fdisk -l (with root privilegies) dd if=/dev/sdc1 of=/home/user/usb4go_bak.iso bs=16065b
%20
en _
) : for f in $(ls -1); do mv $f ${f//%20/_} ; done