Bash — La FAQ de JLT

Bash

96px-Bash-org.jpg

Le fichier .bashrc

Voir .bashrc

Historique du bash

98-petits-trucs-pour-configurer-l-historique-du-bash

Récupérer le répertoire du script courant

CURDIR=$(dirname $(readlink -f $0))

Rediriger les sorties

Attention, bien mettre 2>&1 à la fin de la ligne

prog > log.txt  2>&1

Un équivalent de sprintf

file=$(printf 'FILE=_%s_%s.dat' $val1 $val2)

Vérifier le retour d'une commande

grep "test" test.txt
if [ $? -gt 0 ]; then
    echo "ERROR!"
fi

Debug de bash

#!/bin/bash
set -x
...

Ligne de Commande

Test du nombre d'arguments de la ligne de commande

#!/bin/bash
if [ $# -ne 2 ]
then	
	exit
fi

Récupérer les options de la ligne de commande

#!/bin/bash
 
while getopts lvxad:s:u:h opt
do
        case $opt in
                d)  DISPLAY="$OPTARG:0.0"
                        DIS_CMD="-display $DISPLAY"
                        export DISPLAY
                        ;;
                s)  SSH_CMD="ssh $OPTARG"
                        HOSTNAME=$OPTARG
                        ;;
                h)      ACTION=HELP
                        echo "help"
                        ;;
                x)  ACTION=XXREF
                        ;;
                a)  ACTION=XXREF_ALL
                        ;;
                l)  ACTION=LIST
                        ;;
                u)  USER=$OPTARG
                        echo "user:" $USER
                        ;;
                v)  opt_verbose=1
                        ;;
        esac       
done
 shift $(($OPTIND - 1))

Fichier

Supprimer tous les fichiers d'un répertoire à l'exception d'un fichier

shopt -s extglob
rm -rf -- !(.git)

Récupérer le nom et l'extension d'un fichier

#!/bin/bash
F=”thisfile.txt”
echo ${F#*.}
txt
echo ${F%.*}
thisfile

Tester si un fichier existe

if [ ! -f /tmp/foo.txt ]
then
    echo the file does not exist
fi

Tester si un lien existe

if [ ! -L /tmp/foo.txt ]
then
    echo the link does not exist
fi

Ecrire en binaire dans un fichier

#!/bin/bash
echo -n "Suspend2" | dd of=/my_hibernation_image bs=1 conv=notrunc

Variables

Définir la valeur par défaut

#DIR prend la valeur du premier argument de la ligne de commande ou tmpdir
DIR=${1:-$tmpdir}


Tester une valeur

if [ "$VAR" == "Test" ]
then
     echo "var is Test"
fi

Vérifier si une variable est vide (non affectée)

if [ -z "$1" ]
then
	echo "unset variable"
else
	echo "variable is set"	
fi

Comment récupérer une variable de nom variable

#!/bin/bash
 
A="abcd dcba"
B=A
C=${!B}
echo $C

Comment lire un mot de passe

on utilise l'option -s de read

#!/bin/bash
 
read -s password

Comment faire des opérations mathématiques sur des variables

#!/bin/bash
 
$ A=2
$ B=3
$ C=$((A+B))
$ echo $C


Comment utiliser les expressions régulières

#!/bin/bash
if [[ $NUMBER =~ ^[0-9]+$ ]]; then
    echo ceci est un nombre
else
    echo ceci n'est pas un nombre
fi

Liens externes