notes utiles pour le shell

Creation: 19 juin 2013
Mise à jour:
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2013 Jean-Louis BICQUELET

tests

-eq égalité numérique if [ "$x" -eq "4" ]
-ne inégalité numérique if [ "$x" -ne "4" ]
-lt plus petit que if [ "$x" -lt "4" ]
-le plus petit ou égal à if [ "$x" -le "4" ]
-gt plus grand que if [ "$x" -gt "4" ]
-ge plus grand ou égal à if [ "$test" -ge "4" ]
-z la string est vide if [ -z "$test" ]
-n la string n'est pas vide if [ -n "$test" ]
= égalité de chaine (cf. -eq) if [ "$test" = "bar" ]
-nt fichier plus récent que if [ "$file1" -nt "$file2" ]
-ot fichier plus ancien que if [ "$file1" -ot "$file2" ]
-e est-ce-que le fichier existe if [ -e /etc/hosts ]
-d est un répertoire if [ -d /bin ]
-f est un fichier if [ -f /bin/ls ]
-L est un lien if [ -f /opt/oracle ]
-s est-ce-que le fichier n'est pas vide if [-s /tmp/test]
-r est ouvert en lecture if [ -r /bin/ls ]
-w est ouvert en écriture if [ -w /bin/ls ]
-x est executable if [ -x /bin/ls ]

examples:

if test 2 -lt 3
then echo "C'est normal."
fi

if test 2 -gt 3 then echo "C'est absurde." fi

if test -e ~/.profile then echo "~/.profile existe." else echo "~/.profile n'existe pas." fi

if test -d ~/.profile then echo "~/.profile est un répertoire." else echo "~/.profile n'est pas un répertoire." fi

if test -f ~/.profile then echo "~/.profile est un fichier." else echo "~/.profile n'est pas un fichier." fi

if test ~/.exrc -nt ~/.profile then "~/.exrc est plus récent que ~/.profile." fi

conjonctions

&& et logique if [ "$test" -ge "0" ] && [ "$test" -le "9"]
|| ou logique if [ "$test" -lt "0" ] || [ "$test" -gt "9" ] (not in Bourne shell)
! Logical NOT if [ "$test" != "bar" ]

examples:

[ -f test ] && echo "Le fichier test existe."

[ -f test ] || echo "Le fichier test n'existe pas." Le fichier test n'existe pas.

[ ! -f test ] && echo "Le fichier test n'existe pas." Le fichier test n'existe pas.

if [ -f test ] then echo "Le fichier test existe." else continue fi

if [ -f test ] then continue else echo "Le fichier test n'existe pas." fi

if [ ! -f test ] then echo "Le fichier test n'existe pas." else continue fi

variables spéciales

$$ PID du shell courrant echo "my PID = $$"
$! PID de la dernière commande en background ls & echo "PID of ls = $!"
$? staus de sortie de la derniere commande ls echo "ls returned code $?"
$0 nom de la commande courrrante echo "I am $0"
$1 premier argument echo "My first argument is $1"
$1 deuxieme argument echo "My first argument is $2"
$9 neuvième argument echo "My ninth argument is $9"
$@ tous les parametres avec conservation des blancs et des quotes echo "My arguments are $@"
$ tous les parametres sans conservation des blancs et des quotes echo "My arguments are $"

fonctions

définition de fonction function myfunc() { echo hello }

heure et date

date +"%d/%m/%Y" 20/06/2013
date +"%d/%m/%y" 20/06/13
date +"%D" 06/20/13
date "+%a %D %T" Thu 06/20/13 09:42:28
date +"%A" Thursday
date +"%a" Thu
date +"%B" June
date +"%B" June
date +"%r" 09:19:32 AM
date +"%u" 4
date +"%T" 09:23:48
date +"%H:%M" 09:24
date +"%H%M" 0924
date +"%H:%M:%S" 09:25:04
date +"%H%M%S" 092530
date +"%I" 09
date +"%W" 24
date +"%j" 171

notes:

  • pour %u le nombre va de 1 (lundi) à 7 (dimanche)
  • pour %p les valeurs sont AM ou PM
  • pour %W numéro de la semaine
  • pour %j numéro de jour dans l'année (quantième)

logs files

Pour générer des noms de fichiers log

logname=`date +%Y%m%d%H%M%S`.log 20130620144817.log