Linux. Les scripts. Patrick FULCONIS

Documents pareils
Environnements informatiques

Introduction aux Systèmes et aux Réseaux

1. Structure d'un programme FORTRAN 95

SERVEUR DE SAUVEGARDE POUR BCDI3. par. G.Haberer, A.Peuch, P.Saadé

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Première partie. Qu est-ce qu un script?

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

sshgate Patrick Guiran Chef de projet support

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Introduction au langage C

Algorithmique et Programmation, IMA

TP1 - Prise en main de l environnement Unix.

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Plan du cours. Historique du langage Nouveautés de Java 7

Cours d algorithmique pour la classe de 2nde

PowerShell. Référence. Windows. Tyson Kopczynski. Réseaux et télécom. Programmation. Génie logiciel. Sécurité. Système d exploitation

Outils pour la pratique

Introduction au Système d Exploitation Unix/Linux

Corrigé des TD 1 à 5

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Perl Orienté Objet BioPerl There is more than one way to do it

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

INF 321 : mémento de la syntaxe de Java

Gestion mémoire et Représentation intermédiaire

Le prototype de la fonction main()

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Algorithmique et programmation : les bases (VBA) Corrigé

Aide-Mémoire unix. 9 février 2009

Nous avons utilisé plusieurs Script :

La mémoire. Un ordinateur. L'octet. Le bit

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Principe, applications et limites

Introduction à MATLAB R

Table des matières Avant-propos... V Scripting Windows, pour quoi faire?... 1 Dans quel contexte?

1 Lecture de fichiers

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

SNT4U16 - Initiation à la programmation TD - Dynamique de POP III - Fichiers sources

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Cours Programmation Système

URECA Initiation Matlab 2 Laurent Ott. Initiation Matlab 2

Cours Informatique Master STEP

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Organigramme / Algorigramme Dossier élève 1 SI

STAGE IREM 0- Premiers pas en Python

Programmation et Administration GNU/Linux. Alexandre Passant, Pascal Crépey

Initiation à la programmation en Python

Cours 420-KEG-LG, Gestion de réseaux et support technique. Atelier No5-1

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Examen Médian - 1 heure 30

Programmation système I Les entrées/sorties

D r o i t s D r o i t s Q u i z z : i n t e r n e t t e x t e

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Premiers pas en Linux

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

C.M. 1 & 2 : Prise en main de Linux

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

Préparation à l examen 102 pour la certification de l Institut professionnel de Linux, niveau junior (LPIC-1)

Client windows Nagios Event Log

Shell Bash Niveau débutant

Les clients GNU/Linux

Python Les fondamentaux du langage

Calcul Formel et Numérique, Partie I

Sauvegarde sous MAC avec serveur Samba

Java Licence Professionnelle CISII,

Cours Linux. Cours en ligne Administrateur Systèmes Linux. Académie Libre

Qualité du logiciel: Méthodes de test

Chap III : Les tableaux

Conventions d écriture et outils de mise au point

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

TP 1 Prise en main de l environnement Unix

Programmation C. Apprendre à développer des programmes simples dans le langage C

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

GUIDE PRATIQUE déplacements professionnels temporaires en France et à l étranger

Langage C. Patrick Corde. 22 juin Patrick Corde ( Patrick.Corde@idris.fr ) Langage C 22 juin / 289

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Vue d ensemble de Windows PowerShell

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server 3, 3.5

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

Propagation sur réseau statique et dynamique

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

Reproductibilité des expériences de l article "Analyse et réduction du chemin critique dans l exécution d une application"

Compilation (INF 564)

Travaux Pratiques sur GRID 5000

TD3: tableaux avancées, première classe et chaînes

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

TP1. Outils Java Eléments de correction

Exercice sur les Dockers

Powershell. Sommaire. 1) Étude du cahier des charges 2) Veille technologique 3) Administration sur site 4) Automatisation des tâches d administration

Algorithmes et programmation en Pascal. Cours

OCL - Object Constraint Language

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

TP 1. Prise en main du langage Python

Fiche n 14 : Import / Export avec PlanningPME

TP1 : Initiation à l algorithmique (1 séance)

Transcription:

Linux Les scripts Patrick FULCONIS 1

Les scripts shell Le shell Le shell est un interpréteur de commandes et également un puissant langage de programmation. Script shell Fichier texte constitué d instructions (extension du fichier.sh) Facilite l enchaînement des commandes afin d automatiser des tâches. Constitution du fichier texte Ligne 1 : #! /bin/bash Indique où se trouve l exécutable bash. C est lui qui va interpréter votre script. Ligne 2 à n Instructions diverses Commentaires : commençent par # (sauf #! ) 2

Les scripts shell Shell : un langage interprété Les lignes d instructions sont exécutées de manière séquentielles. Si une ligne contient une erreur, le script continue (en général) Les erreurs de syntaxe ne sont pas toujours bien expliquées, comparativement à un langage compilé (comme le C par exemple). Exécution d un script shell 3 manières : 1 : bash mon_script 2 :. mon_script (syntaxe aussi utilisée pour les fichiers de config.bash*) 3 :./mon_script (mon_script doit avoir le droit x (execution)) 3

Les scripts shell Exemples de scripts Ex1 : #! /bin/bash echo Bonjour Ex2 : #! /bin/bash ls /temp Ex3 : #! /bin/bash echo "Liste des stagiaires triés" grep i stagiaire liste.txt sort 4

Les scripts shell Passage de paramètres Tout script peut être exécuté avec des paramètres (arguments) Exemple :./mon_script rouge 100 Contenu du fichier #! /bin/bash echo "Le script a pour nom : $0" echo "le premier paramètre est : $1" echo "le deuxième paramètre est : $2" echo "le nombre de paramètres est : $#" echo "les paramètres sont : $*" # $* $@ $0 (nom du script) prendra la valeur : mon_script $1 (1 er paramètre) prendra la valeur : rouge $2 (2 e paramètre) prendra la valeur : 100 $# (nb paramètres) prendra la valeur : 2 $* (liste paramètres) prendra la valeur : rouge 100 Le contenu d une variable est considérée par le shell comme une suite de caractères 5

Calcul d expressions Les scripts shell Comme tout est chaîne de caractère, l écriture d une expression comme Total= 12 + 13 est impossible à évaluer La commande expr sera utilisée pour évaluer un calcul (il existe d autres possibilités, comme bc). Syntaxe : expr nb1 opérateur nb2 (nb1 et nb2 étant des nombres entiers) Exemple :./mon_script 3 5 mon_script #! /bin/bash echo la somme est de $(expr $1 + $2) $(commande) ou `commande` : renvoie le résultat de commande $((nb1 opérateur nb2)) $(expr nb1 opérateur nb2) Attention à l utilisation de l opérateur *, car c est aussi un métacaractère 6

Les scripts shell Calcul d expressions utilisant un métacaractère Tout signe ayant une signification pour le shell $ ; & () {} [] > <? * " \ `! doit être protégé par le caractère \ Exemple #! /bin/bash total=$(expr $1 \* $2) # total est une variable prenant la valeur $1*$2 echo le total est de $total # $total est le contenu de la variable total 7

Les caractères spéciaux protection de tous les métacaractères et des séparateurs (blancs, tabulation, retour-chariot) sauf $ \ ` protection de tous les métacaractères et de tous les séparateurs. \ protection de tout caractère spécial, y compris \ Exemples : echo test ( \\ $SHELL * affiche : test ( \ /bin/bash * echo test ( \\ $SHELL * affiche : test ( \\ $SHELL * 8

Les scripts shell : if - test if condition; then commande1; else commande2; fi if condition; then commande1; elif condition2; then commande2 else commande3; fi if condition # si la condition est vraie then commande1 # alors on execute commande1 else commande2 # sinon on execute commande2 fi Exemple : Test s il y a 2 paramètres, et si oui, les additionne if [ $# ne 2 ] # ou [ $#!= 2 ] # ou test $#!= 2 # ou (( $#!= 2 )) then else fi echo il faut 2 parametres echo le total est de $(expr $1 + $2) 9

Les scripts shell : test Tests sur les fichiers -d répertoire (directory) -e existe -f fichier -s fichier de taille > 0 -r accessible en lecture -w accessible en écriture -x exécutable Comparaison de chaînes -z nulle -n non nulle chaine1 == chaine2 chaine1!= chaine2 Comparaison de deux nombres -eq (equal) == -ne (not equal)!= -lt (less than) < -le (less or equal) <= -gt (greater than) > -ge (greater or equal) >= Il est possible aussi d utiliser la syntaxe : if (( comparaison numérique )) avec les opérateurs de comparaisons standards Opérateurs Logiques! Exp Négation de l expression (NOT) Exp1 -a Exp2 vrai si les deux expressions sont vraies (ET) AND (ou [[ Exp1 && Exp2 ]]) Exp1 -o Exp2 vrai si l une des deux expressions est vraie (OU) OR (ou [[ Exp1 Exp2 ]] ) 10

Les scripts shell : boucle for for var in list; do things; done # création de 10 fichiers.jpg et.gif à l aide de la boucle for for ((i=0;i<10;i++)) # syntaxe ((début;»fin»;incrément)) et i++ i=i+1 do done touch image$i.jpg image$i.gif # ou en forçant les nombres sur 2 chiffres : # touch $(printf "image%02d.jpg image%02d.gif" $i $i) Autres syntaxes : for i in 0 1 2 3 4 5 6 7 8 9 for i in {0..9} (si bash récent) for i in $(seq 0 9) Autres listes possibles (fichiers) : for i in *.txt (boucle sur tous les fichiers *.txt du répertoire) for i in $(cat fichier.txt) (boucle sur le contenu de fichier.txt) 11

Les scripts shell : boucle while Syntaxe while condition do done commande1 commande2 Tant que condition est vraie (code retour égal à 0) alors commande1 et commande2 sont exécutées. Exemple ville=a while [ "$ville"!= "grenoble" -a "$ville"!= "paris" ] do echo "Entrez la ville (grenoble ou paris) " read ville done 12

Les scripts shell : boucle until Syntaxe until condition do done commande1 commande2 commande1 et commande2 sont exécutées jusqu à que condition soit vraie (code retour égal à 0) Exemple ville=a until [ "$ville" == "grenoble" -o "$ville" == "paris" ] do echo "Entrez la ville (grenoble ou paris) " read ville done 13

Les scripts shell : case Syntaxe case variable in esac pattern1 ) commande1 ;; pattern2 ) commande2 ;; où pattern1 et pattern2 sont des modèles. Le Shell vérifie si la valeur de la variable "rentre" dans le modèle, et si oui, exécute la commande. La fin de définition des pattern se fait par le signe ;; Exemple case $choix in 1 ) echo "Vous avez choisi l'option 1" echo 'vous avez bien fait ;; 2 ) rm -Rf * ;; * ) echo "Les choix valides sont 1 ou 2" ;; esac 14

Les scripts shell : fonctions Syntaxe nom_fonction() { <suite de commandes> } On peut appeler une fonction avec des arguments dont les valeurs sont 1,2... Les variables du script sont visibles dans le corps de la fonction. Exemple accumule() { somme= expr $somme + $1 } somme=0 for i in 1 2 3 4 5 do accumule $i done echo "somme = $somme" 15

Les variables d environnements Liste des variables système HOME contient la valeur du répertoire privé de l utilisateur SHELL contient le shell courant PATH contient la liste des répertoires qui sont explorés par le shell lorsqu une commande externe est lancée. USERNAME contient le nom de l utilisateur connecté... 16

Les variables d environnements La commande env donne la liste des variables définies dans le shell courant. Affichage de la valeur d une variable Le caractère spécial $ du shell permet de récupérer le contenu d une variable. echo $PATH Modification de la valeur d une variable Syntaxe Variable=valeur (ou export Variable=valeur ) 17

Les variables d environnements Modification de la variable PATH PATH=$PATH:. (ajoute le répertoire courant au PATH) Modification de la variable PS1 Cette variable contient la chaîne de caractères représentant le prompt. PS1= "Saisir une commande => " Ou PS1= $PWD «Durée de vie» des variables Les variables définies dans un shell ne sont valables que pour ce shell. Il faut les mettre dans les fichiers.bashrc ou.bash_profile afin qu elles soient définies pour tous les shells 18

Commandes diverses mktemp Création d un fichier temporaire (dans /tmp par défaut) (mktemp d : Création d un répertoire temporaire) basename Récupération du nom de fichier sans son chemin, et, en option, sans son extension. basename ~/TP1/code.c retourne code.c basename ~/TP1/code.c.c retourne code 19