Shell Equipe ID Bioinformatics Training Course June 2014

Shell Equipe ID Bioinformatics Training Course June 2014

Shell z. Le shell est le langage de commande standard du système UNIX z. Bourne shell z. Korn shell z. C-shell z. Bash-shell.

Shell Scripts $ more example. sh #!/bin/bash while true do cat somefile > /dev/null echo. done File example. sh must have executable rights bash example. sh. /example. sh

Shell n Interprété n Vrai langage de programmtion : test, itérations, récursion, variables, environnement, alias, variables typées, opérateurs logiques, arithmétiques et binaires, variables locales, gestion des tâches, historique et édition des commandes

Shell : variables n Identificateur n n n Valeur : toujours une chaine de caractères Opérateur d’affectation : « = » Evaluation d’une variable : n Affichage de la valeur d’une variable : Une suite quelconque de : - lettres minuscules ou majuscules - chiffres - _ (underscore) - ne commençant pas par un chiffre $variable echo $variable

Shell : compléments syntaxiques n Commentaire # la fin de la ligne est ignorée n Les commandes doivent être séparées par des retours chariot ou des points virgules n Séparateur implicite du shell = caractère espace

Shell : redirection des entrées-sorties n Entrée commande > fichier commande 1> fichier Associe le fichier au descripteur 1 (implicitement) commande 2> fichier # erreur redirigée vers fichier commande >&2 # stdout associé à stderr commande 2>&1 # stderr associé à stdout n Ex : commande 2>/dev/null 1>&2 commande 1>/dev/null 2>&1

Shell : saisie n Commande << EOF n Ex: # la commande lit l’entrée standard jusqu’à la reconnaissance d’une ligne constituée de la chaîne EOF Cat > compile << FIN if [ $# -ne 2 ] ; then exit 1 fi if [ -r $1 ] then cc $1 –o $2 -0 ; size $2 else exit 2 fi FIN

Shell : lecture de la valeur d’une varaible dans un script shell n Lecture de la valeur d’une variable : read Variable 1 …. Variablen Val 1 … Valn Vali est liée à Variablei n Protection des variables préalablement readonly Variable 1 …. Variablen

Shell : délimiteurs de chaines de caractères 'chaine' : la chaîne est prise littéralement sans substitution n "chaine" : la chaîne est prise littéralement après substitution des caractères $ (évaluation des variables) et . n ‘commande`: la chaine complète est remplacée par la valeur de la commande (la sortie standard de celle-ci). n

Shell : délimiteurs de chaines de caractères (exemple) x=toto echo $x toto echo ' $x echo " $x " toto X=pwd echo $x pwd echo " $x = ‘$x` « pwd=/usr/vous

Shell : évaluation des variables n n n $var : valeur de var; rien si var indéfinie ${var} : idem ${var: -val} : valeur de var si définie, val dans le cas contraire; var inchangée ${var: =val} : valeur de var si définie, val dans le cas contraire; var devient val si indéfinie ${var: ? message} : valeur de var si définie, sinon la valeur de message est affichée et le shell se termine ${var: +val} : valeur de var si définie, rien sinon.

Shell : visibilité des variables n Les variables sont locales à un shell n Les variables du père ne sont pas implicitement transmises à ses fils (export) n Le fils ne peut pas modifier les variables du père.

Shell : l’environnement de l’utilisateur n Certaines variables sont initialisées au début de la session par le shell luimême qui exécute deux commandes : /etc/profile $HOME/. profile (ou $HOME/. bashrc) n ENV

Shell : principales variables d’environnement n n n n HOME : répertoire initial PATH : chemin de recherche des exe (login) TERM : le type de terminal MAIL : la boite aux lettres SHELL : le type de shell LOGNAME : nom de connexion HISTSIZE : le nombre de lignes d’historique PWD : le répertoire courant

Shell : paramètres de procédure La valeur des paramètres est transmise à la procédure de la façon suivante : $0 : le nom de la procédure $i : le ième paramètre $* : la liste de tous les paramètres $# : le nombre paramètres fournis à la procédure n Opérateurs liés aux paramètres : shift[n] : décale de n positions vers la gauche la liste des paramètres et décrémente $# de n set paramètres : range de nouveaux paramètres dans l’environnement n

Shell : paramètres de procédure (exemple) set ‘who am i` echo "Utilisateur : $1 " echo " Terminal : $2 " echo " Connexion : $4 $3 $5 "

Shell : case n Le choix multiple : case <chaine> in <constante>) <liste de commandes>; ; … esac La constante peut-être de la forme : constante 1| constante 2 | … |constante. N

Shell : case (exemple) # la commande « qui » avec la date en français set ‘who am i` echo "Utilisateur : $1 " echo "Terminal : $2 " case $3 in Jan) m=Janvier; ; Feb) m=Fevier; ; … Dec) m=Decembre; ; esac echo " Connexion : $4 $m $5 "

Shell : for <var> in <chaine 1> … <chaine. N> do <liste de commandes> done for <var> in $* do <liste de commandes> done Exemple : #affichage des arguments de la ligne de commande for arg in $* do echo $arg done

Shell : expr n La commande expr : effectue des opérations sur les expressions passées en paramètre chaque paramètre est une expression ou un opérateur Opérations arithmétiques entre chaînes numériques : + - / * % n Opérations de comparaions : = != < > <= >= n n Sélection d’expression expr 1 | expr 2 vaut expr 1 si non nul et n’est pas une chaine vide, expr 2 sinon expr 1 & expr 2 vaut expr 1 si mes 2 expressions ne sont ni nulles ni vides, 0 sinon

Shell : autres variables n Autres variables initialisées par le shell numéro du processus courant Numéro du dernier processus background Code retour de la dernière commande exécutée n Le code retour d’une liste de commande est le code retour de la dernière commande de la liste $$ $! $? 0 : OK !=0 : Problème Ce code retour peut être utilisé dans les structures de contrôle à la manière d’un booléen Initialisation explicite du code retour dans uns sipt shell exit : le code retour de la procédure sera celui de la dernière commande exécutée avant exit n exit valeur : le code retour de la procédure sera valeur

Shell : if L’alternative : if if <expression> then <liste de commandes> else <liste de commandes> fi n Exemple : if cc _0 *. c then pack *. c else rm *. o fi

Shell : || et && Exécution conditionnelle : || et && Pour éviter l’usage explicite du if n Exemple : rm xx ls –l xx || echo Echec ls –l xx && echo Reussite echo Reussi || ls –l xx echo Pas de la && ls –l xx

La commande test n La commande test permet : n 2 formes D’exprimer des conditions sur des fichiers D’effectuer des comparaisons Test expression [ expression ] n Le résultat d’un test 0 si la condition est remplie et différente sinon. En shell, 0 est équivalent à vrai

La commande test n Conditions sur des fichiers n Comparaison de chaines expr option nom option : -f : vrai si nom est un fichier -d : vrai si nom est un répertoire -r : vrai si nom est un fichier lisible -w : vrai si nom est un fichier modifiable -x : vrai si nom est un fichier exécutable string 1 = string 2 string 1 != string 2 -n string égalité inégalité vraie si longueur de string != 0

La commande test n Comparaisons nmériques n Connecteurs logiques ! : non -a : and -o : or ( … ) : pour associer des expressions n 1 -eq n 2 -ne -lt -ge vrai si n 1 = n 2 vrai si n 1 != n 2 vrai si n 1 < n 2 vrai si n 1 >= n 2

Shell : while et until n While : tant que la condition est vraie while <expression> do <liste de commandes> Done n Until : itération tant que la condition est fausse until <expression> do <liste de commandes> done
- Slides: 28