1 / 28

Shell

Shell. Equipe ID Bioinformatics Training Course June 2014. Shell. Le shell est le langage de commande standard du système UNIX Bourne shell Korn shell C-shell Bash-shell. Shell Scripts. $ more example.sh #!/bin/bash while true do cat somefile > /dev/null echo . done

blanca
Download Presentation

Shell

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Shell Equipe ID Bioinformatics Training Course June 2014

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

  3. 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

  4. Shell • Interprété • 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

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

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

  7. Shell : redirection des entrées-sorties • 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 • Ex : commande 2>/dev/null 1>&2 commande 1>/dev/null 2>&1

  8. Shell: saisie • Commande << EOF # la commande lit l’entrée standard jusqu’à la reconnaissance d’une ligne constituée de la chaîne EOF • Ex: 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

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

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

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

  12. Shell : évaluation des variables • $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.

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

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

  15. Shell : principales variables d’environnement • 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

  16. 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 • 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

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

  18. Shell : case • Le choix multiple : case case <chaine> in <constante>) <liste de commandes>;; <constante>) <liste de commandes>;; … esac La constante peut-être de la forme : constante1| constante2 | … |constanteN

  19. 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 "

  20. Shell : for for <var> in <chaine1> … <chaineN> do <liste de commandes> done for <var> 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

  21. Shell : expr • 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 : + - / * % • Opérations de comparaions : = != < > <= >= • Sélection d’expression expr1 | expr2 vaut expr1 si non nul et n’est pas une chaine vide, expr2 sinon expr1 & expr2 vaut expr1 si mes 2 expressions ne sont ni nulles ni vides, 0 sinon

  22. Shell : autres variables • 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 • 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 exit valeur : le code retour de la procédure sera valeur

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

  24. Shell : || et && • Exécution conditionnelle : || et && Pour éviter l’usage explicite du if 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

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

  26. La commande test • Conditions sur des fichiers 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 • Comparaison de chaines string1 = string2 égalité string1 != string2 inégalité -n string vraie si longueur de string != 0

  27. La commande test • Comparaisons nmériques n1 -eq n2 vrai si n1 = n2 -ne vrai si n1 != n2 -lt vrai si n1 < n2 -gt vrai si n1 > n2 -ge vrai si n1 >= n2 • Connecteurs logiques ! : non -a : and -o : or \( … \) : pour associer des expressions

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

More Related