0% ont trouvé ce document utile (0 vote)
6 vues46 pages

Introduction au Shell et commandes de base

Ce document présente les bases de l'utilisation du shell, un interpréteur de commande pour les systèmes d'exploitation, en abordant les commandes de base, la redirection, les variables et les scripts. Il compare les environnements Linux et Windows, en mettant en évidence les différences dans la gestion des commandes et des interfaces. Le cours vise à fournir une compréhension des concepts essentiels pour interagir avec le système via la ligne de commande.

Transféré par

brisingeur15
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
6 vues46 pages

Introduction au Shell et commandes de base

Ce document présente les bases de l'utilisation du shell, un interpréteur de commande pour les systèmes d'exploitation, en abordant les commandes de base, la redirection, les variables et les scripts. Il compare les environnements Linux et Windows, en mettant en évidence les différences dans la gestion des commandes et des interfaces. Le cours vise à fournir une compréhension des concepts essentiels pour interagir avec le système via la ligne de commande.

Transféré par

brisingeur15
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Shell: Interpréteur de commande


R108 - Bases des systèmes d’exploitation

[Link]@[Link]

IUT de Rouen, dépt. Réseaux & Télécoms


2023-2024

Version du 5 septembre 2023

S. Kramm (IUT Rouen) R108: Shell 1 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 3 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Introduction : besoin ?
Un OS doit permettre à un utilisateur humain de :
lancer des programmes
programmes applicatifs de type desktop (interactifs)
programmes applicatifs de type serveur (non interactifs)
Utilitaires de gestion
etc.
Manipuler le système de fichier (copier, renommer, ...)
Ceci se fait via une Interface Homme - Machine (IHM)
ou User Interface (UI) en anglais, via deux paradigmes de contrôle :
Interface graphique ou Graphical User Interface : GUI
Interface en ligne de commande ou Command Line Interface : CLI
Dans les deux cas, le programme permettant cette interaction peut être intégré
à l’OS ou distinct.
Windows : GUI et CLI complètement intégré à l’OS
Linux : GUI et CLI indépendant du noyau, mais lié au choix de la
distribution
S. Kramm (IUT Rouen) R108: Shell 4 / 49
Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Notions de "Shell"

Definition : couche logicielle qui fournit l’interface utilisateur d’un système


d’exploitation.
En pratique : un shell est un interpréteur de commande qui convertit des
chaînes de caractères dans un langage codifié en une action sur le système.
Par extension, peut désigner aussi l’émulateur de terminal : console
interactive permettant de saisir au clavier ces commandes et d’avoir à
l’écran la sortie de la commande.

S. Kramm (IUT Rouen) R108: Shell 5 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Shell : interpréteur de commandes & console

Linux & systèmes Unix (Mac OSX) :


les deux sont dissociés
plusieurs shells historique : sh , csh , tcsh , ksh , ...
shell dominant aujourd’hui : bash

Windows : les deux sont liés


Historiquement : [Link] sur MSDOS et Windows 3.1
Depuis XP/NT : programme [Link]. Toujours existant, mais
developpement arrêté.
Depuis Windows 7 : apparition de PowerShell (non traité ici)
2016 : annonce par MS du portage de Bash sur Windows.

Ce cours traite des deux en parallèle, les spécificités seront vues plus tard.

S. Kramm (IUT Rouen) R108: Shell 6 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Utilisation de la console

De façon à peu près universelle, des facilités sont intégrées aux programmes
"console" :
Autocomplétion via la touche TAB
Historique des commandes, via ⇑ (fleche haut curseur)
"Glisser-déposer" depuis un explorateur de fichier GUI
Personnalisation du "prompt"

S. Kramm (IUT Rouen) R108: Shell 7 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Utilisation interactive ou "script"

Le shell peut être utilisé de façon


interactive : répétition du cycle : commande → affichage
non-interactive : notion de "script".
Un script est un fichier texte contenant une suite de commandes : forme de
"programme exécutable"
Peut ensuite être exécuté :
en saisissant son nom dans une console ;
via GUI (double clic sur le fichier).
Scripts : Contexte d’utilisation
automatisation de tâches répétitives ou complexes
"en général", pas d’entrées utilisateur (mais des sorties consoles, en quantité
limitée)
Extension de fichier pour les scripts :
Windows Linux
.bat ou .cmd .sh
(obligatoire) (convention)

S. Kramm (IUT Rouen) R108: Shell 8 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Différences Linux / Windows

Windows
pensé dès l’origine pour une utilisation en GUI : le pilotage du système via
une CLI n’a pas été prioritaire ;
encore beaucoup de manipulations doivent se faire en GUI.

Linux
inspiration : systèmes UNIX ;
pensé dès le départ comme pilotable via CLI ;
GUI complètement dissociée du noyau ;
beaucoup de manipulations ne peuvent se faire que via CLI.

S. Kramm (IUT Rouen) R108: Shell 9 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Commande internes et externes


Un shell peut exécuter des commandes internes ou externes.
commande interne : exécutée directement par le shell lui-même
commande externe : programme distinct, lancé par le shell lorsque
l’utilisateur le demande.
Doit correspondre à un fichier contenant un programme exécutable, et qui
soit accessible depuis le dossier courant.
Pour l’OS, pas de différence entre une commande externe et un
programme : les deux sont vus comme des exécutables.
Linux :
Liste des commandes internes : help
Commande interne / externe ? : type commande

Rappel
Les programme renvoient la valeur 0 en cas de terminaison sans erreur
→ on pourra dans un script savoir si un programme s’est terminé correctement
ou s’il a échoué.

S. Kramm (IUT Rouen) R108: Shell 10 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Comparaison Windows/Linux

Programme "terminal" (console)


Windows : intégré à l’interpréteur de commande ([Link]), assez
rudimentaire.
Linux : grand choix de programmes, beaucoup de fonctionnalités.
Interpréteur de commande
Linux (Bash) : puissant mais syntaxe parfois obscure
Windows (CMD) : beaucoup plus rudimentaire
pas de structure de controle évoluées (branchements par labels)
support et documentation de MS aléatoire et variant suivant les versions de
Windows, documentation éclatée.
insensible à la casse (DIR identique à dir)

S. Kramm (IUT Rouen) R108: Shell 11 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 12 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Syntaxe générale

Syntaxe générale : (sur une ligne)


commande [options] [argument1] [argument2] [...]
entre crochets : optionnel. Certaines commandes auront 0, 1, 2, ...
arguments
Windows :
- les options sont données avec /
Exemple : dir /w
- casse indifférente (copy = COPY)
Bash :
- les options sont données avec - ("option courte") ou -- ("option
longue")
Exemple : ls -a ou ls --all
- casse signifiante
On peut interrompre une commande en cours (ou annuler l’édition en
cours) avec CTRL-C .

S. Kramm (IUT Rouen) R108: Shell 13 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Problème des espaces

Le caractère SPC (ASCII :32, $20) est utilisé comme séparateur


⇒ Si nom de fichier avec des espaces, il sera nécessaire de les encadrer par
des "
Exemples :
commande mon super [Link] : incorrect
commande "mon super [Link]" : ok
Egalement vrai pour le chemin de la commande :
c:\program files\appli\commande [Link] : incorrect
"c:\program files\appli\commande" [Link] : ok

S. Kramm (IUT Rouen) R108: Shell 14 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Spécification de fichier

Les commandes acceptent en argument une spécification de fichier


Une spécification de fichier est un masque, sur lequel des noms de fichiers
peuvent "coller", via des caractères génériques :
* : un ou plusieurs caractère(s)
? : un seul caractère
Exemples (Windows, pour Linux remplacer DIR par ls)
DIR a*.txt : affiche la liste de tous les fichiers commençant par "a" et
ayant l’extension txt
DIR ???.mp3 : tous les fichiers mp3 de 3 lettres
DIR IUT*.pdf : tous les fichiers pdf avec IUT comme 1res lettres

S. Kramm (IUT Rouen) R108: Shell 15 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Navigation et manipulation fichiers

Linux Windows
Copie de fichier cp source dest copy source dest
Copie de dossiers cp source dest xcopy source dest
mv ancien nouveau ren ancien nouveau
Renommage de fichier ("move") ("rename")
Déplacement de fichier mv ancien nouveau move ancien nouveau
del fich
Effacement rm fich ("delete")
Afficher le contenu
d’un fichier cat fich type fich
Ces commandes permettent l’utilisation de caractères génériques pour la
spécification de fichier.
copy *.txt dest : va copier tous les fichiers d’extension txt du dossier
courant vers le dossier dest.

S. Kramm (IUT Rouen) R108: Shell 16 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Répertoires

Linux Windows
Affichage contenu rép. ls [dossier] dir [dossier]
Changement répertoire actif cd un/chemin cd un\chemin
déplacement rép. actif
vers le rep. parent cd .. cd ..
Création répertoire mkdir rep/sousrep md rep\sousrep
Effacement répertoire rmdir rep rmdir rep
Affichage du rép. courant pwd 1 cd

1. pwd : Print Working Directory


S. Kramm (IUT Rouen) R108: Shell 17 / 49
Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Exemples de commande de copie multiple

(version Windows, pour Linux : remplacer copy par cp et "\" par "/")

copy T:\un\deux\[Link] X:\ (1 seul fichier)


source : fichier [Link] du dossier T:\un\deux
dest : dossier racine de X :
copy trois\z*.txt ..\quatre\
source : copie tous les fichiers texte présents dans le sous-dossier trois du
dossier courant, et dont le nom commence par "z"
dest : sous-dossier quatre du répertoire parent
copy trois\*.txt
source : copie tous les fichiers texte présents dans le sous-dossier trois
dest : dossier courant
Si "source" ou "destination" n’existent pas → message d’erreur !

S. Kramm (IUT Rouen) R108: Shell 18 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Autre commandes

Linux Windows
help commande help commande
ou ou
Aide sur commande man commande commande /?
terminer une session/un script exit exit
Affichage de texte echo echo

Commentaires dans un script :


Linux : toute ligne commencant par #
Windows : toute ligne commencant par :: ou REM

S. Kramm (IUT Rouen) R108: Shell 19 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 20 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

E/S standard

Par défaut, chaque processus se voit attribué des "flots" d’E/S :


un flot d’entrée, associée aux entrées clavier : stdin
un flot de sortie standard (1), associé à la console : stdout
un flot de sortie d’erreur (2), associé à la console : stderr
Ces différents flots peuvent être redirigés ponctuellement vers un autre
périphérique ou dans un fichier

(source : Julia Evans, [Link]/comics)

S. Kramm (IUT Rouen) R108: Shell 21 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Redirection vers un fichier

Redirection en sortie :
commande > fich : le fichier fich est crée (effacé s’il existe déjà)
commande >> fich : la sortie de commande est ajoutée à la fin de fich
Exemple :
echo a > [Link] # creation fichier avec 1 ligne dedans
echo b >> [Link] # ajout 2eme ligne
echo c >> [Link] # ajout 3eme ligne
echo d > [Link] # ecrasement, le fichier fait maintenant 1 ligne

S. Kramm (IUT Rouen) R108: Shell 22 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Redirection vers un périphérique

Exemple 1 : redirection vers l’imprimante de stdout (1)


Linux : commande > /dev/lp ou commande 1> /dev/lp
Windows : commande > LPT1 ou commande 1> LPT1

Exemple 2 : redirection de la sortie d’erreur vers le néant


Windows : commande 2> NUL
NUL : périphérique "spécial"
Linux : commande 2> /dev/null
/dev/null : périphérique virtuel
Intérêt : suppression de certains affichages

S. Kramm (IUT Rouen) R108: Shell 23 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Utilisation de "Pipe"

Principe : permet de rediriger la sortie d’une commande vers l’entrée


d’une autre.
Utilisation : prog1 | prog2
→ la sortie de la commande prog1 est utilisée comme entrée du prog2.
Exemples :
ls -l | wc -l : affiche le nombre de fichiers/dossiers
ls -l | grep aaa : affiche les fichiers du dossier courant contenant la
chaine aaa
ls -l | grep aaa | wc -l : affiche le nombre de fichiers du dossier
courant contenant la chaine aaa

S. Kramm (IUT Rouen) R108: Shell 24 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 25 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Variables

Comme n’importe quel langage de programmation, on peut définir des


variables
Quel que soit le shell, les variables sont toujours de type "texte" (chaînes
de caractères)
Mais possibilité de faire de l’arithmétique élémentaire.
On distingue :
variables locales : connues uniquement dans le script.
variables d’environnement : communes à tous l’environnement.

Attention
Les variables crées dans un shell ne sont connues que dans celui-ci.
En cas d’appel d’un sous-shell, les variables ne sont pas transmises.
la création de variables d’environnement passe par des commandes
spécifiques.

S. Kramm (IUT Rouen) R108: Shell 26 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Manipulation de variables

Linux Windows
Donner une valeur à var=un SET mavar=un
une variable
Utiliser une variable préfixer avec ’$’ Encadrer avec ’%’
Ex : echo "var=$var" Ex : ECHO mavar=%mavar%
Saisie au clavier read var SET /P var=texte_invite

S. Kramm (IUT Rouen) R108: Shell 27 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Test de variables : Bash

Forme générale :
if [ item1 = item2 ]; then <command> ; fi
Exemple : if [ $var = ABC ]; then echo "Oui !"; fi
Si plusieurs commandes :
if [ $var = ABC ]; then
commande1;
commande2;
commande3;
fi

Test d’inégalité : remplacer = par !=


Attention : espaces obligatoires !

S. Kramm (IUT Rouen) R108: Shell 28 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Test de variables : Windows/CMD

Forme générale :
IF [/I] [NOT] item1==item2 command
Exemple : if %mavar%==coucou echo ok
Si espaces ; alors il faut "quoter" :
if "%mavar%" == "Ah Que Coucou" echo ok
Pour tester l’existence d’un fichier :
if exist mon_fichier.txt echo "Le fichier existe!"
Pour exécuter plusieurs commandes si le test est vrai, il est préférable de
dérouter l’exécution, via les commandes goto ou call
(voir "Branchements")
Option /I pour ignorer la casse
Test d’inégalité : ajouter NOT

S. Kramm (IUT Rouen) R108: Shell 29 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Variables d’environnement
Chaque OS définit ses variables d’environnement (VE).
Permet de connaitre depuis un script des informations sur le système.
Liste complète :
Linux : env Windows : set
Facilités :
Windows : set ABC : renvoie toutes les VE commencant par "ABC"
Linux : env | grep ABC : renvoie toutes les VE contenant la chaîne
"ABC"
Exemples :
Linux Windows
Nom de l’utilisateur courant USER USERNAME
Localisation des applications PATH PATH
Dossier pour fichier temporaires (néant) 2 TEMP
Date (néant) DATE
"Home" de l’utilisateur courant HOME HOMEPATH
Windows : plus de VE (Linux a des commandes dédiées à la place)
2. Inutile, c’est toujours /tmp...
S. Kramm (IUT Rouen) R108: Shell 30 / 49
Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Variable PATH

Contient la liste des chemins absolus où l’OS va chercher la commande


demandée.
Avec une saisie de type aaa bbb ccc , l’OS va rechercher la commande
aaa dans l’ordre suivant :
1 est-ce une commande interne ?
2 est-ce un fichier exécutable dans le dossier courant ? (Windows seulement)
3 est-ce un programme qu’on trouve dans les chemins donnés dans la variable
PATH, en faisant la recherche dans l’ordre qui est donné ?
A défaut, il faudra donner le chemin (absolu ou relatif), par exemple :
Windows : "c:\program files\superappli\aaa" bbb ccc
Linux :
/home/mon_id/dev/mes_applis/aaa bbb ccc
../../ici/labas/aaa bbb ccc
Linux : si le programme à exécuter est dans le dossier courant, alors il faut
le spécifier explicitement en tapant ./commande

S. Kramm (IUT Rouen) R108: Shell 31 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Exécution des commandes : différences Windows/Linux

Windows
Un fichier exécutable est identifié comme tel par son extension.
Les principales : BAT, CMD ou EXE, mais aussi beaucoup d’autres
(voir la VE PATHEXT)
On peut l’appeler uniquement par son nom, l’OS va chercher s’il trouve une
correspondance, dans cet ordre.
Attention : un dossier contient deux fichiers, [Link] et [Link]
Si on tape bidule , lequel sera exécuté ?

Linux
Il faut donner le nom entier du programme, avec l’extension éventuelle.
Exemple : soit un script qui s’appelle mon_script.sh
Exécution :
./mon_script : erreur ./mon_script.sh : OK

S. Kramm (IUT Rouen) R108: Shell 32 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Arguments passés au script


Lors du lancement, on peut passer des arguments au script :
mon_script.sh toto tata
Ces valeurs sont placées automatiquement dans des variables spéciales,
appelées paramètres positionnels.
Linux Windows Exemple
Nombre d’arguments $# (néant) 2
Tous les arguments $* %* toto tata
Chemin et nom du script $0 %0 mon_script.sh
Arguments positionnels $1 %1 toto
$2 %2 tata
$3 %3
... ...
Code de sortie de
la dernière commande $? %ERRORLEVEL%

Convention universelle : un programme / une commande renvoie 0 en cas de


succès, toutes les autres valeurs indiquant une erreur ou un échec.
S. Kramm (IUT Rouen) R108: Shell 33 / 49
Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Arguments passés au script : exemple

Exemple : soit le script suivant


(Version Bash) (Version Windows)
nom : [Link] nom : [Link]
#!/bin/bash @echo off
echo arg1=$1 arg2=$2 echo arg1=%1 arg2=%2

L’exécution de la commande :
$ ./[Link] toto tata $ test toto tata
va produire l’affichage :
arg1=toto arg2=tata

S. Kramm (IUT Rouen) R108: Shell 34 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Arithmétique entière

Windows
option /A à la commande SET
De multiples opérateurs, arithmétiques et logiques (ET, OU, décalages, ...)
Exemple : SET /A compt=%compt%+1
Référence : [Link], ou SET /?

Linux/Bash
La notation $(($nom_variable)) permet de traiter une variable comme
un entier
Exemple :
var1=4
var2=$(($var1∗2))
echo $var2 /∗ affiche 8 ∗/

S. Kramm (IUT Rouen) R108: Shell 35 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 36 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Structures de contrôle

Windows/CMD : utilisation de branchements inconditionnels à des labels


Linux/Bash : beaucoup plus évolué : boucles while, for, . . .
Avec les deux, on peut créer des fonctions, permettant l’appel à un
traitement et le retour automatique.

S. Kramm (IUT Rouen) R108: Shell 37 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 38 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Windows : branchements et labels

Utilisation de branchements inconditionnels à des labels


Ex : boucle infinie :
:ici
goto labas
ici une ligne jamais lue par le shell
:labas
echo coucou
goto ici

S. Kramm (IUT Rouen) R108: Shell 39 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Windows : fonctions

Appel d’une fonction : commande call

set var=1
call :mafonction
echo "var=%var%" # affiche var=2
call :mafonction
echo "var=%var%" # affiche var=3
goto :eof

:mafonction
echo "coucou"
set /A var=%var%+1
goto :eof

Le label spécial :eof indique un "retour à l’appelant", ou sortie du script si


pas de commande call correspondante.

S. Kramm (IUT Rouen) R108: Shell 40 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Windows : fonctions et arguments

On peut passer des arguments à une fonction


L’exécution de ceci :
call :mafonction aaa
call :mafonction bbb
goto :eof

:mafonction
echo "argument=%1"
goto :eof

affichera :
argument=aaa
argument=bbb

S. Kramm (IUT Rouen) R108: Shell 41 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Windows : branchements conditionnels

On utilise la commande goto dans un test

if "%variable%" == "1" goto ici


goto labas

... ligne jamais interpretee...

:ici
echo "la variable vaut 1"
goto :eof

:labas
echo "differente de 1"
goto :eof

S. Kramm (IUT Rouen) R108: Shell 42 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Windows : branchements ?

L’approche du contrôle de flux par branchements amène :

un avantage : l’implémentation à partir


d’un algorigramme est très facile : on
"branche" où on veut.
un inconvénient : le programme devient
très rapidement dé-structuré : très
difficile de s’y retrouver, mise à jour et
maintenance compliquée...
⇒ On parle de "code spaghetti" :

S. Kramm (IUT Rouen) R108: Shell 43 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 44 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Bash : langage structuré


Bash est un langage structuré : pas de branchements, tout doit être inclus
dans un "bloc" de commandes.
Les tests auront la forme suivante :
if [ <some test> ]
if [ <some test> ] then
then <commands>
<commands> else
fi <other commands>
fi

Exemple : test de chaînes de caractères (voir p. 27)


Attention aux espaces (obligatoires)
if [ $name = "paul" ]
then
echo "Paul !"
else
echo "pas Paul!"
fi
S. Kramm (IUT Rouen) R108: Shell 45 / 49
Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sommaire

1 Introduction

2 Commandes de base

3 Enchainement et redirection

4 Variables

5 Scripts : structures de contrôle


Windows
Bash

6 Pour finir

S. Kramm (IUT Rouen) R108: Shell 48 / 49


Introduction Commandes de base Enchainement et redirection Variables Scripts : structures de contrôle Pour finir

Sources et ressources

Pour s’entrainer (shell Linux) : [Link]

S. Kramm (IUT Rouen) R108: Shell 49 / 49

Vous aimerez peut-être aussi