User Tools

Site Tools


bash

Bash est un langage de shell de linux. Il est installé par défaut sur Ubuntu.

UI

Cheat Sheet

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: For loop examples

Tests

  [ $var1 = $var2 ]

Strings:

  [ "$var1" = "$var2" ]

Ressources doc

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: 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 :

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

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 $@

Ressources doc

Mes scripts

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
bash.txt · Last modified: 2014/05/27 11:02 by ginko