User Tools

Site Tools


bash

This is an old revision of the document!


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.1398451459.txt.gz · Last modified: 2014/04/25 20:44 by ginko