0% ont trouvé ce document utile (0 vote)
14 vues135 pages

SDFGHJKL

Transféré par

mohammed.benakkaouayad
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)
14 vues135 pages

SDFGHJKL

Transféré par

mohammed.benakkaouayad
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

LST Info, FST Fès Pr. M.

Talibi Alaoui

LST Info, FST Fès 2018-2019 1


 Historique d’UNIX

 Caractéristiques d’UNIX

 SHELL : sh
 Commandes de base
 Scripts

 Expressions régulières

 Commande sed
LST Info, FST Fès 2018-2019 2
 Projet du Système MULTICS (MULTiplexed Information and
Computing Service) vers la fin des années 60 entre les
laboratoires de BELL et General Electric
 Un système à temps partagé
 Ce projet a été abandonné par BELL
 Ken THOMSON, chercheur à BELL, a décidé d’écrire une
version allégée de MULTICS en assembleur sur une machine
PDP-7
 Ses collègues ont surnommé cette version, par plaisanterie,
UNICS (Uniplexed Information and Computing Service)
 Le travail était impressionnant et tout le département a rejoint
le projet
 UNIX a été porté sur d’autres machines PDP11-20 PDP11-45
PDP11-70
 Réécrire UNIX dans un langage de haut niveau pour faciliter le
portage sur d’autres architectures
 Réalisation du Langage B qui a été remplacé, par la suite, par le langage
C

LST Info, FST Fès 2018-2019 3


Première version 1973 D. Ritchie
d’UNIX 90 % en Langage C

Laboratoire BELL
Version 6

Version 7
AT & T et BELL Université de Berkeley

Système III BSD 3

Système V BSD 4.1

BSD 4.3

LST Info, FST Fès 4


2018-2019
 Vers la fin des années 80, deux versions largement
utilisées et sensiblement incompatibles d’UNIX
 System V release 3
 BSD4.3 (Berkeley Software Distribution)

 Chaque constructeur ajoutait ses propres


améliorations
 Cette incompatibilité a freiné le succès
commercial du système
  la standardisation d’UNIX devient une nécessité

LST Info, FST Fès 2018-2019 5


 Standardisation

 POSIX (Portable Open System Interface


eXchange) membre de IEEE
 Définition d’un ensemble de procédures que doit
fournir tout système compatible à la norme
 Intersection des deux familles

 Ressemble fortement à leur ancêtre version 7

 Norme IEEE P1003.1 devenue norme ISO 9945

LST Info, FST Fès 2018-2019 6


Première version 1973 D. Ritchie
d’UNIX 90 % en Langage C

Laboratoire BELL
Version 6

Version 7
AT & T et BELL Université de Berkeley

Système III BSD 3

Système V BSD 4.1

Linux BSD 4.3

LST Info, FST Fès 7


2018-2019
 Multi-tâches Multi-utilisateurs

 Sécurité ( login, mot de passe )


 Seuls les utilisateurs ayant un login et un passwd peuvent se
connecter au système

 Meilleure protection
 droits d’accès au niveau des fichiers

 Portabilité
 Disponible pour plusieurs plateformes (Station de travail, PC,
Macintosh)

LST Info, FST Fès 2018-2019 8


 Modularité
 Noyau
 Utilitaires

 Système de fichier
 Arborescent
 Réparti
 Réorganisation souple

 Traitement uniforme des périphériques


 Un périphérique est traité comme un fichier

LST Info, FST Fès 2018-2019 9


 Outils de communication intégrés
 Talk, write, mail …

 Système de commandes
 Très riche
 Puissant

 Plusieurs interpréteurs de commandes


 Exemples : sh, ksh, csh, …
 Inter chargeables sans redémarrer la machine

LST Info, FST Fès 2018-2019 10


 Interface graphique conviviale :

 Système de fenêtrage proche de Windows


 Exemples : KDE, GNOME, …

 Stable
 Plante rarement
 Il y a toujours moyen de débloquer le processus qui bloque
le système.

LST Info, FST Fès 2018-2019 11


Outils de
communication

Shell

Noyau

Editeurs
de texte

Gestion des processus


Gestion de la mémoire
Gestion des E/S
LST Info, FST Fès 12
2018-2019
LST Info, FST Fès 2018-2019 13
 Bourne shell : sh

 Korne shell : ksh

 Cshell : csh

LST Info, FST Fès 2018-2019 14


 Commandes

 Taper une commande à l'invite du shell

 Script

 Un fichier de commande

LST Info, FST Fès 2018-2019 15


 Organisation logique

 Structure arborescente

 Fichier : contient les données

 Répertoire : noeud contenant des fichiers ou d'autres


sous répertoires

LST Info, FST Fès 2018-2019 16


/
Répertoires
home
bin

dupont dubois
alibaba
[Link]
images cours documents

[Link] [Link] [Link] [Link]


Unix
fichiers

LST Info, FST Fès 2018-2019 17


 Chemin d’accès :

 l’ensemble des nœuds qui mènent vers un fichier ou


un répertoire séparés par ‘/’.

. : répertoire courant

.. : répertoire père


LST Info, FST Fès 2018-2019 18
 Chemin absolu
 commence à la racine : '/'
 Exemple
/home/dubois/documents/[Link]

 Chemin relatif
 Commence à partir du répertoire courant
 Exemple :

../documents/[Link]

LST Info, FST Fès 2018-2019 19


/

bin home

dubois dupont
alibaba saladin

Répertoire images cours documents


courant

[Link] [Link] [Link] [Link]


Unix
Chemin absolu
Chemin relatif
LST Info, FST Fès 2018-2019 20
 Identificateur (nom)

 Suite de caractères (jusqu’à 255 caractères)


 Sensible à la casse
 Utiliser le caractère d’échappement ‘\’ pour les
caractères spéciaux
 Exemple précéder le caractère espace par \
 Nom\ fichier

LST Info, FST Fès 2018-2019 21


 Caractères "joker"
 Permettent d’appliquer une commande à un
ensemble de fichiers dont le nom vérifie certaines
contraintes (ex : le nom commence par la lettre
‘p’, l’extension est ‘.doc’, …)

 * : remplace n’importe quelle suite de caractère (y


compris la chaîne vide)

 ? : remplace un et un seul caractère

 [-] : définit un intervalle

LST Info, FST Fès 2018-2019 22


 ls
 Affiche le contenu du répertoire courant ou de celui
passé en paramètre
 Options
 -l : affiche les informations complètes des fichiers et sous
répertoires
 -a : affiche les fichiers cachés
 -R : affichage récursif
 -i : affiche le descripteur des fichiers (i-numéro)
 -d : n'affiche pas le contenu des répertoires

LST Info, FST Fès 2018-2019 23


 pwd
 Affiche le chemin du répertoire courant

 cd chemin

 Se déplace vers le répertoire identifié par 'chemin'


 Exemples :

$ cd /home/dubois/doc
$ cd ../dubois/doc

LST Info, FST Fès 2018-2019 24


 mkdir (md) nouveau_rep
 Crée un nouveau_rep dans

 Le répertoire courant
 nouveau_rep est le nom du répertoire
 Exemple :
$ mkdir stages

 Dans le chemin indiqué par la première partie de


nouveau_rep
 Exemple :
$ md /home/dupont/stages
$ mkdir ../dupont/stages
LST Info, FST Fès 2018-2019 25
 rmdir repertoire
 Supprime un repertoire vide

 Exemple
 $ rmdir /home/dupont/temp

LST Info, FST Fès 2018-2019 26


 rm fichier
 Supprime un fichier ou un répertoire non vide

 Options
 -r : la commande détruit de manière récursive toute la
sous arborescence du répertoire
 -i : demande la confirmation avant de supprimer le fichier

 Exemple
 $ rm -r doc
 $ rm -i /home/dupont/[Link]

LST Info, FST Fès 2018-2019 27


 cat fichier [fichier,...]
 Concatène et affiche sur la sortie standard le(s)
fichier(s) en paramètre OU
 Affiche sur la sortie standard, le contenu des
fichiers, spécifiés en argument de la commande,
l’un après l’autre.
 Exemple
 $ cat fichier1.
 $ cat fichier1 fichier2.

LST Info, FST Fès 2018-2019 28


 more fichier
 Affiche le contenu du fichier page par page
 Utilisée pour les fichiers longs (contenant plusieurs
pages) :
 Q : quitte la commande
 Return : saute de ligne
 Espace : saute de page

 Exemple
 $ more lettre

LST Info, FST Fès 2018-2019 29


 head [-c nchar -n nline] fichier
 Affiche le début du fichier
 Par défaut les dix premières lignes
 -c nchar : affiche les nchar premiers caractères du fichier
 -n nline : affiche les nline premières lignes du fichier

 Exemple
 $ head lettre
 $head -c 280 lettre
 $ head -n 5 lettre

LST Info, FST Fès 2018-2019 30


 tail [-/+c nchar -/+n nline] fichier
 Affiche la fin du fichier
 Par défaut les dix dernières lignes
 -/+c nchar : affiche les derniers caractères du fichier
+ à partir du nchar ème caractère jusqu’ à la fin du fichier
- Les nchar derniers caractères à partir de la fin
 -/+n nline : affiche les dernières lignes du fichier
+ à partir de la nline ème jusqu’à la fin du fichier
- Les nline dernières lignes à partir de la fin

 Exemple
 $ tail lettre
 $tail -n 6 lettre affiche les 6 dernières lignes
 $ tail +n 6 lettre affiche de la ligne 6 jusqu’à la fin
du fichier

LST Info, FST Fès 2018-2019 31


 wc [-lwc] fichier
 Compte le nombre de
-l : lignes
-w : mots
-c : caractères

du fichier
 Par défaut les trois
 Exemple
 $ wc lettre

LST Info, FST Fès 2018-2019 32


 cp source destination
 Copie le fichier source dans le fichier ou
répertoire destination
 mv source destination
 Déplace le fichier source dans le répertoire
destination
 Exemple
 $ cp lettre correspondances/lettre1
 $ cp lettre correspondances
 $ mv lettre correspondances

LST Info, FST Fès 2018-2019 33


 ln source lien

 Crée un lien physique sur le fichier source

 Pas possible pour les répertoires ou fichiers d'autres SGF

 -s : le lien est symbolique

 Exemple

 $ ln lettre : lien_lettre

 $ ln -s lettre : lien_symbolique

LST Info, FST Fès 2018-2019 34


 Commande tar :
 Archive un ensemble de fichiers dans un seul
fichier (d’extension ‘.tar’)
 Facilite l’organisation (moins d’encombrement dans le
SGF)
 Efficace pour envoyer, par mail, plusieurs fichiers en
attachement

 Restitue l’ensemble des fichiers à partir du


fichier archive (l’opération inverse)

 Possibilité de compression et de décompression


de l’archive en appelant la commande "gzip"
LST Info, FST Fès 2018-2019 35
 Commande tar
 Syntaxe
 $ tar [options] [fichiers]

Option Description
-x Extraire le contenu d'une archive.
-c Créer une nouvelle archive.
-t Afficher seulement la liste du contenu de l'archive, sans l'extraire.
-f Fichier Indiquer le nom du fichier archive.
-v Mode verbeux, affiche le détail des opérations.
-z Compresser ou décompresser en faisant appel à l'utilitaire gzip.
-j Compresser ou décompresser avec l'utilitaire bzip2.
-p Préserver les permissions des fichiers.

2018-2019 LST Info, FST Fès 36


2018-2019
 Commande find
 Cherche un fichier dans une arborescence donnée
 Les critères de recherche peuvent porter sur :
 Le nom
 La dernière date d’accès
 La dernière date de modification
 Le type (fichier, répertoire ou lien)
 …

2018-2019 LST Info, FST Fès 37


 Commande find
 Syntaxe
 $ find [chemin] [options]

Option Description
-atime +n (-n) Trouve les fichiers accédés il y a plus/moins de n jours
-mtime +n (-n) Trouve les fichiers modifiés il y a plus/moins de n jours
-name "pierre" Trouve les fichiers dont le nom est pierre
-maxdepth n Définit le niveau n maximum de sous répertoire à explorer
Indique le type de fichier à rechercher. type peut être:
-d : pour les répertoires
- f : pour les fichiers
-type < d | f | l >
- l : pour les liens symboliques

2018-2019 LST Info, FST Fès 38


 Commande grep :
 Cherche les lignes d’un fichier qui contiennent un
motif (un mot ou une chaîne de caractères)
 Affiche ces lignes sur la sortie standard
 Syntaxe
 $ grep motif fichier
 Exemple
 $ grep "ali" /home/prof/[Link]

2018-2019 LST Info, FST Fès 39


 who
 Affiche les informations sur les utilisateurs
connectés
 who ami
 Affiche les informations de l'utilisateur courant
 whoami
 Affiche le login de l'utilisateur courant
 id
 Affiche l'UID et le GID de l'utilisateur courant

LST Info, FST Fès 2018-2019 40


 Commande useradd (voir aussi adduser)
 Limité au root.
 Ajouter un nouvel utilisateur au système.
 Possibilité de spécifier quelques paramètres du nouveau compte
 Informations concernant l’utilisateur (nom, fonction, …)
 Durée de validité du compte
 Groupe
 Shell
 …

LST Info, FST Fès 41


2018-2019
 Commande useradd :
Option Description
-c <commentaire> Informations concernant l'utilisateur (nom, poste).
-d <répertoire> Chemin du répertoire personnel de l'utilisateur.
-e <date> Date d'expiration du compte. Le format est AAAA-MM-JJ.

C'est le nombre de jours suivant l'expiration du mot de passe


après lequel le compte est désactivé. La valeur 0 permet de
-f <nombre de jours> désactiver le compte dès que le mot de passe expire. La valeur
-1 permet de désactiver cette caractéristique. La valeur par
défaut est -1 .

Le nom du groupe ou le numéro du groupe de connexion initial


-g <groupe principal> de l'utilisateur. Le nom ou le numéro du groupe doivent exister.
Le numéro de groupe par défaut est 1.
Les autres groupes auxquels appartient l'utilisateur (séparés par des
-G <groupes supplémentaires> virgules).

LST Info, FST Fès 42


 Commande useradd
Option Description
Le répertoire de l'utilisateur sera créé (par défaut, cela n'est pas
-m toujours le cas).

À utiliser si et seulement si l'option -m est présente. Permet de copier


-k <répertoire> les fichiers et répertoires contenus dans le répertoire modèle
</etc/skel si non spécifié) dans le répertoire de l'utilisateur.

Vous pouvez saisir le mot de passe en option. Il doit être chiffré (pour
récupérer la version cryptée d'un mot de passe il faut utiliser la
-p <mot de passe chiffré>
bibliothèque crypt). Si le mot de passe n'est pas défini, le
comportement par défaut est de désactiver le compte.

-s <chemin> Shell lancé à la connexion de l'utilisateur.


-u L'identifiant unique de l'utilisateur.

LST Info, FST Fès 43


2018-2019
 Commande useradd :

 Syntaxe
 $ useradd [options] nouvel_utilisateur
 Exemple
 Création du nouveau compte alibaba (login) appartenant au
groupe Etudiants avec bash comme shell par défaut

 $ useradd –c " Ali BABA" –g Etudiants –s /bin/bash alibaba

LST Info, FST Fès 44


2018-2019
 Commande userdel
 Supprimer un utilisateur du système

 Syntaxe
 $ userdel [-r] login
 Rajouter l’option –r permet de supprimer le répertoire personnel de
l’utilisateur en question

LST Info, FST Fès 45


2018-2019
 Commande passwd
 Changer le mot de passe
 Un utilisateur normal peut changer uniquement son mot de passe
 L’administrateur peut changer le mot de passe de tous les
utilisateurs

 Verrouiller/déverrouiller un compte
 Supprimer un mot de passe

LST Info, FST Fès 46


2018-2019
 Commande passwd
 Syntaxe
Option Description
Indique que seul le mot de passe doit être mis à jour, sans toucher aux propriétés
-k
d’expiration
Permet de verrouiller le compte spécifié en préfixant le mot de passe crypté par le
-1
caractère « ! ». Seul l'utilisateur root peut utiliser cette option.
- - stdin Le mot de passe doit être lu à partir de l'entrée standard qui peut alors être un pipe.
Déverrouille le mot de passe du compte. Seul l'utilisateur root peut utiliser cette
-u
option.
Supprime le mot de passe d'un compte. Le champ réservé au mot de passe crypté
sera supprimé dans le fichier de configuration. Seul l'utilisateur root peut utiliser
-d
cette option.

Affiche des informations sur le statut du mot de passe pour un compte donné.
-S
Seul l'utilisateur root peut utiliser cette option.

LST Info, FST Fès 47


2018-2019
 Commande passwd :

 Syntaxe
 $ passwd [options] [login]
 Si le paramètre login n’est pas spécifié alors, le changement
s’applique pour le compte courant. Le système demande de
saisir l’ancien et le nouveau mot de passe.

 Exemple
 $ passwd
 $ passwd –d alibaba

LST Info, FST Fès 48


2018-2019
 Commande groupadd (voir aussi addgroup)
 Crée un nouveau groupe
 Syntaxe
 $ groupadd [options] nouveau_groupe

Option Description
-g Permet de spécifier le GID du nouveau groupe
-f Stoppe la commande si le groupe ou le GID existe déjà

LST Info, FST Fès 49


2018-2019
 Commande groupdel

 Supprime un groupe
 Aucun utilisateur ne doit avoir ce groupe comme principal.

 Syntaxe
 $ groupdel groupe

LST Info, FST Fès 50


 ps :

 Affiche les informations des processus actifs

 Options
 -l : affiche les informations complètes des processus
 -x : affiche tous les processus actifs (d'autres
utilisateurs)
 -u : affiche les processus d'un utilisateur donné

 Exemple
 $ ps -l
 $ ps -u dupont

LST Info, FST Fès 51


 kill -signal ident_processus

 Envoi un signal à un processus

 Exemple
 $ kill -9 33456

LST Info, FST Fès 52


 Déterminent les types d’opérations qu’un utilisateur
ou une classe d’utilisateurs peuvent effectuées.

 Chaque fichier peut avoir ses propres droits d’accès

 Système de protection très puissant

LST Info, FST Fès 53


 Types d’utilisateurs
 Propriétaire (owner)

 Groupe du propriétaire (ou du fichier)

 Les autres utilisateurs (others)

LST Info, FST Fès 54


 Types d’autorisation des fichiers
 r : droit d’accès en lecture

 w : droit de modification

 x : droit d’exécution (limité aux fichiers exécutables)

LST Info, FST Fès 55


 Types d’autorisation des répertoires
 r : droit d’afficher le contenu

 w : droit d’ajout et de suppression

 x : droit d’exploration

LST Info, FST Fès 56


 Exemple

- rwx rw- --x monexe


- rwx rw- r-- document

Droits des
autres
Droits du groupe

Droits du
propriétaire - : fichier ordinaire
d : répertoire
c, b : fichier périphérique
Type de fichier l : lien sur un fichier
s : socket
LST Info, FST Fès
p : tube 57
 chmod mode fichier
 Mode = utilisateurs/permission
 Exemple
 $chmod u+x fich1
 $chmod g-w fich1
 $chmod +r fich1

 Mode = chiffres
 Exemple User Group Other
 $ chmod 754 fich1 rwx r-x r--
111 101 100
7 5 4

LST Info, FST Fès 58


 chown nouveau_util fichier
 Change le propriaitaire du fichier
 Exemple
$ chown dubois fich1

 chgrp nouveau_grp fichier


 Change le groupe du fichier
 Exemple
$ chgrp telecom fich1

LST Info, FST Fès 59


 > : la sortie standard est redirigée vers un fichier
(écrasement de son contenu s'il existe déjà)

 < : les entrées de la commande proviennent d'un


fichier

 >> : la sortie standard est insérée à la fin d'un fichier

 2> : la sortie d'erreur est redirigée vers un fichier

 2>> : la sortie d'erreur est insérée à la fin d'un fichier

LST Info, FST Fès 60


 Permet la communication des entrées/sorties entre les
processus.

 Schéma

 cmd1|cmd2| cmd3|….

 Le résultat de cmd1 sera l’entrée de cmd2, le résultat de cmd2


sera l’entrée de cmd3 et ainsi de suite.

 Exemple

 $ ls –l | grep "prog"

LST Info, FST Fès 2018-2019 61


Introduction aux Scripts Shell

[Link] Alaoui LST Info, FST Fès 2018-2019 62


 Imaginez un mini-langage de programmation intégré à
Linux.

 Ce n'est pas un langage aussi complet que peuvent


l'être le C, le C++ ou le Java par exemple,

 mais il permet d'automatiser la plupart de vos tâches :


sauvegarde des données, surveillance de la charge de
votre machine, etc.

 On aurait très bien pu faire tout cela en créant un


programme en C par exemple.

 Pourquoi alors ???


[Link] Alaoui LST Info, FST Fès 2018-2019 63
 Le gros avantage du langage shell est d’être
totalement intégré à Linux :

- il n'y a rien à installer,

- rien à compiler.

- Et surtout : vous avez très peu de


nouvelles choses à apprendre.

[Link] Alaoui LST Info, FST Fès 2018-2019 64


 En effet, toutes les commandes que l'on utilise
dans les scripts shell sont des commandes du
système que vous connaissez déjà : ls, cut, grep,
sort…

[Link] Alaoui LST Info, FST Fès 2018-2019 65


 Tout d’abord on doit distinguer entre les deux
environnements très différents disponibles sous-
linux :

 l'environnement console ;

 l'environnement graphique.

[Link] Alaoui LST Info, FST Fès 2018-2019 66


 La plupart du temps, sur sa machine, on a
tendance à utiliser l'environnement graphique, qui
est plus intuitif.

 Cependant, la console est aussi un allié très puissant


qui permet d'effectuer des actions habituellement
difficiles à réaliser dans un environnement
graphique.

[Link] Alaoui LST Info, FST Fès 2018-2019 67


Voici les noms de quelques-uns des principaux shells qui
existent :
 sh : Bourne Shell. L'ancêtre de tous les shells.
 bash : Bourne Again Shell. Une amélioration du Bourne
Shell, disponible par défaut sous Linux et Mac OS X.
 ksh : Korn Shell. Un shell puissant assez présent sur les
Unix, compatible avec bash.
 csh : C Shell. Un shell utilisant une syntaxe proche du
langage C.
 tcsh : Tenex C Shell. Amélioration du C Shell.
 zsh : Z Shell. Shell assez récent reprenant les
meilleures idées de bash, ksh et tcsh.
[Link] Alaoui LST Info, FST Fès 2018-2019 68
 Tout d'abord que l'ancêtre de tous les shells est le sh (Bourne
Shell).

 C'est le plus vieux et il est installé sur tous les OS basés sur Unix.

 Il est néanmoins pauvre en fonctionnalités par rapport aux autres


shells.

 Le bash (Bourne Again Shell) : est le shell par défaut de la plupart


des distributions Linux mais aussi celui du terminal de Mac OS X.

 Il y a fort à parier que c'est celui que vous utilisez en ce moment


sous Linux.

[Link] Alaoui LST Info, FST Fès 2018-2019 69


 Voici dans l’hiérarchie comment ont évolué les
shells.
 Chacun hérite la plupart des fonctionnalités de
son ancêtre :

[Link] Alaoui LST Info, FST Fès 2018-2019 70


 sh reste toujours plus répandu que bash.

 En fait, vous pouvez être sûrs que tous les OS basés


sur Unix possèdent sh,

 mais ils n'ont pas tous forcément bash.

 Certains OS basés sur Unix, notamment les OS


propriétaires (AIX et Solaris…), utilisent d'autres
types de shells ;
le ksh y est par exemple très répandu.
[Link] Alaoui LST Info, FST Fès 2018-2019 71
 La première chose à faire dans un script shell est
d'indiquer… quel shell est utilisé :

 #!/bin/bash
 Le #! est appelé le sha-bang

 /bin/bash peut être remplacé par /bin/sh si vous


souhaitez coder pour sh, /bin/ksh pour ksh, etc.

 Bien que non indispensable, cette ligne permet de


s'assurer que le script est bien exécuté avec le bon
shell.

[Link] Alaoui LST Info, FST Fès 2018-2019 72


 En l'absence de cette ligne, c'est le shell de
l'utilisateur qui sera chargé.

 Cela pose un problème : si votre script est écrit


pour bash et que la personne qui l'exécute utilise
ksh, il y a de fortes chances pour que le script ne
fonctionne pas correctement !

 Laligne du sha-bang permet donc de « charger » le


bon shell avant l'exécution du script.

[Link] Alaoui LST Info, FST Fès 2018-2019 73


 Après le sha-bang, nous pouvons commencer à coder.

 Le principe est très simple : il vous suffit d'écrire les


commandes que vous souhaitez exécuter.

 Ce sont les mêmes que celles que vous tapiez dans


l'invite de commandes ! :

ls : pour lister les fichiers du répertoire.


cd : pour changer de répertoire.
mkdir : pour créer un répertoire.
grep : pour rechercher un mot.
sort : pour trier des mots.
[Link] Alaoui LST Info, FST Fès 2018-2019 74
 On va donc créer un script bash qui va juste se
contenter d'afficher le contenu du dossier courant :

#!/bin/bash
ls

[Link] Alaoui LST Info, FST Fès 2018-2019 75


Les commentaires :

 Ce sont des lignes qui ne seront pas exécutées mais


qui permettent d'expliquer ce que fait votre script.

 Tous les commentaires commencent par un #.

Par exemple :

#!/bin/bash
# Affichage de la liste des fichiers
ls
[Link] Alaoui LST Info, FST Fès 2018-2019 76
Exécuter le script bash :

 Notremission maintenant est de parvenir à


exécuter le petit script.

 Commencez par enregistrer votre fichier et fermez


votre éditeur.

 Vous retrouvez alors l'invite de commandes.

[Link] Alaoui LST Info, FST Fès 2018-2019 77


Donner les droits d'exécution au script :

 Si vous faites un ls -l pour voir votre fichier qui


vient d'être créé, vous obtenez par exemple ceci :

$ ls -l
total 4 -rw-r--r-- 1 mateo21 mateo21 17 2018-11-
13 14:33 test_1.sh

[Link] Alaoui LST Info, FST Fès 2018-2019 78


 Pour exécuter un script, il faut que le fichier ait le
droit « exécutable ».

 Le plus simple pour donner ce droit est d'écrire :

$ chmod +x test_1.sh

Vous pouvez vérifier que le droit a bien été donné :

$ ls -l
total 4
-rwxr-xr-x 1 mateo21 mateo21 17 2018-11-13 14:33
test_1.sh
[Link] Alaoui LST Info, FST Fès 2018-2019 79
 Comment font les autres programmes pour pouvoir
être exécutés depuis n'importe quel répertoire
sans « ./ » devant ?

Ils sont placés dans un des répertoires du PATH.

Le PATH est une variable système qui indique où sont


les programmes exécutables sur votre ordinateur.

Si vous tapez echo $PATH vous aurez la liste de ces


répertoires « spéciaux ».
[Link] Alaoui LST Info, FST Fès 2018-2019 80
 Il vous suffit donc de déplacer ou copier votre script
dans un de ces répertoires, comme :

/bin,
/usr/bin
/usr/local/bin

ou encore un autre répertoire du PATH.

- Notez qu'il faut être root pour pouvoir faire cela.

- Une fois que c'est fait, vous pourrez alors taper


simplement [Link] pour exécuter votre programme.
[Link] Alaoui LST Info, FST Fès 2018-2019 81
Comme dans tous les langages de programmation, on
trouve en bash ce que l'on appelle des variables.

Les variables en bash sont assez particulières. Il faut


être très rigoureux lorsqu'on les utilise.

 Toute variable possède un nom et une valeur :

 message='Bonjour tout le monde'

Dans le cas présent :

 la variable a pour nom : message ;


 … et pour valeur : Bonjour tout le monde.
[Link] Alaoui LST Info, FST Fès 2018-2019 82
 Ne mettez pas d'espaces autour du symbole égal
« = » ! Le bash est très pointilleux sur de nombreux
points, évitez par conséquent de le vexer.

 Je vous signalerai systématiquement les pièges à


éviter, car il y en a un certain nombre !

 Si vous voulez insérer une apostrophe dans la


valeur de la variable, il faut la faire précéder d'un
antislash \.
Exemple : message='Bonjour c\'est moi'
[Link] Alaoui LST Info, FST Fès 2018-2019 83
 echo : afficher une variable

 Son principe est très simple : elle affiche dans la


console le message demandé.

Un exemple :

$ echo Salut tout le monde


Salut tout le monde

[Link] Alaoui LST Info, FST Fès 2018-2019 84


 En fait, la commande echo affiche dans la console
tous les paramètres qu'elle reçoit.

Ici, nous avons envoyé quatre paramètres :

 Salut ;
 tout ;
 le ;
 monde.

Chacun des mots est considéré comme un paramètre


que echo a affiché.
[Link] Alaoui LST Info, FST Fès 2018-2019 85
 Si vous mettez des guillemets autour de votre message,
celui-ci sera considéré comme étant un seul et même
paramètre :

$ echo "Salut tout le monde"


Salut tout le monde

 Si vous voulez insérer des retours à la ligne, il faudra activer


le paramètre -e et utiliser le symbole \n :

$ echo -e "Message\nAutre ligne"


Message
Autre ligne

[Link] Alaoui< LST Info, FST Fès 2018-2019 86


Afficher une variable :

 Pour afficher une variable, nous allons de nouveau


utiliser son nom précédé du symbole dollar $ :

#!/bin/bash
message='Bonjour tout le monde' #pas de $
echo $message

[Link] Alaoui LST Info, FST Fès 2018-2019 87


 Les quotes :

 Il est possible d'utiliser des quotes pour délimiter


un paramètre contenant des espaces. Il existe trois
types de quotes :

 les apostrophes ' ' (simples quotes) ;

 les guillemets " " (doubles quotes) ;

 les accents graves `` (back quotes), qui s'insèrent


avec Alt Gr + 7 sur un clavier AZERTY français.
[Link] Alaoui LST Info, FST Fès 2018-2019 88
 Selon le type de quotes que vous utilisez, la réaction
de bash ne sera pas la même.

 Les simples quotes ' '

 Commençons par les simples quotes :

 message='Bonjour tout le monde'

 echo 'Le message est : $message'


Le message est : $message

Avec de simples quotes, la variable n'est pas analysée


et le $ est affiché tel quel.
[Link] Alaoui LST Info, FST Fès 2018-2019 89
Les doubles quotes " " :

 Avec des doubles quotes :

message='Bonjour tout le monde'


echo "Le message est : $message"
Le message est : Bonjour tout le monde

Cette fois, la variable est analysée et son contenu


affiché.
[Link] Alaoui LST Info, FST Fès 2018-2019 90
Les back quotes `` :

 Un peu particulières, les back quotes demandent à


bash d'exécuter ce qui se trouve à l'intérieur.

 Exemple :

message=`pwd`
echo "Vous êtes dans le dossier $message"
Vous êtes dans le dossier /home/mateo21/bin

[Link] Alaoui LST Info, FST Fès 2018-2019 91


 read : demander une saisie

La façon la plus simple de l'utiliser est d'indiquer le


nom de la variable dans laquelle le message saisi
sera stocké : read nomvariable

Exemple :

#!/bin/bash
read nom
echo "Bonjour $nom !"
[Link] Alaoui LST Info, FST Fès 2018-2019 92
Affecter simultanément une valeur à plusieurs Variables :

 On peut demander de saisir autant de variables d'affilée que


l'on souhaite.

Exemple :

#!/bin/bash
read nom prenom
echo "Bonjour $nom $prenom !"

Deschamps Mathieu
Bonjour Deschamps Mathieu !

[Link] Alaoui LST Info, FST Fès 2018-2019 93


 read lit ce que vous tapez mot par mot (en considérant
que les mots sont séparés par des espaces).

 -p : afficher un message de prompt ou d’invite

 Bon : notre programme ne permet pas à l'utilisateur de


savoir quoi faire :

 Avec l'option -p de read, vous pouvez faire cela :

#!/bin/bash
read -p 'Entrez votre nom : ' nom
echo "Bonjour $nom !"

[Link] Alaoui LST Info, FST Fès 2018-2019 94


 -n : limiter le nombre de caractères

 Avec -n, vous pouvez au besoin couper au bout de X


caractères si vous ne voulez pas que l'utilisateur insère
un message trop long.

 Exemple :

#!/bin/bash
read -p 'Entrez votre login (5 caractères max) : ' -n 5 nom
echo -e "\nBonjour $nom !"

Entrez votre login (5 caractères max) : ahmed


Bonjour ahmed !

[Link] Alaoui LST Info, FST Fès 2018-2019 95


 -s : ne pas afficher le texte saisi
 Le paramètre -s masque les caractères que vous
saisissez.
 Cela vous servira notamment si vous souhaitez que
l'utilisateur entre un mot de passe :

 Exemple :

#!/bin/bash
read -p 'Entrez votre mot de passe : ' -s pass
echo -e "\nMerci ! Je vais dire à tout le monde que votre mot de passe est $pass ! «

Entrez votre mot de passe :


Merci ! Je vais dire à tout le monde que votre mot de passe est supertopsecret2018 !

[Link] Alaoui LST Info, FST Fès 2018-2019 96


 En bash, les variables sont toutes des chaînes de
caractères.

 Le bash n'est pas vraiment capable de manipuler


des nombres ;

 Il n'est donc pas capable d'effectuer des opérations.

 Heureusement, il est possible de passer par des


commandes.

 Ici, la commande à connaître est let.


[Link] Alaoui LST Info, FST Fès 2018-2019 97
 Exemple :
let "a = 5"
let "b = 2"
let "c = a + b"

#!/bin/bash
let "a = 5"
let "b = 2"
let "c = a + b"
echo $c

À la fin de ce script, la variable $c vaudra ?7

[Link] Alaoui LST Info, FST Fès 2018-2019 98


 Les opérations utilisables sont :

 l'addition : +
 la soustraction : -
 la multiplication : *
 la division : /
 la puissance : **
 le modulo : %.

 Quelques exemples :

let "a = 5 * 3" # $a = 15


let "a = 4 ** 2" # $a = 16 (4 au carré)
let "a = 8 / 2" # $a = 4
let "a = 10 / 3" # $a = 3
let "a = 10 % 3" # $a = 1
[Link] Alaoui LST Info, FST Fès 2018-2019 99
 Notez
qu'il est possible aussi de contracter les
commandes, comme cela se fait en langage C.

Exemple :

let "a = a * 3" équivaut à let "a *= 3"

[Link] Alaoui LST Info, FST Fès 2018-2019 100


 Les variables que vous créez dans vos scripts bash
n'existent que dans ces scripts.

 Les variables d'environnement sont des variables


que l'on peut utiliser dans n'importe quel
programme.

On parle aussi parfois de variables globales.

[Link] Alaoui LST Info, FST Fès 2018-2019 101


Les plus fameuses :

 SHELL : indique quel type de shell est en cours d'utilisation (sh,


bash, ksh…) ;

 PATH : une liste des répertoires qui contiennent des exécutables


que vous souhaitez pouvoir lancer sans indiquer leur répertoire.

 EDITOR : l'éditeur de texte par défaut qui s'ouvre lorsque cela est
nécessaire ;

 HOME : la position de votre dossier home ;

 PWD : le dossier dans lequel vous vous trouvez ;

 OLDPWD : le dossier dans lequel vous vous trouviez auparavant.


[Link] Alaoui LST Info, FST Fès 2018-2019 102
 Exemple :

#!/bin/bash
echo "Votre éditeur par défaut est $EDITOR"

Votre éditeur par défaut est nano

[Link] Alaoui LST Info, FST Fès 2018-2019 103


 Vos scripts bash peuvent eux aussi accepter des
paramètres.

 Ainsi, on pourrait appeler notre script comme


ceci :

./[Link] param1 param2 param3

[Link] Alaoui LST Info, FST Fès 2018-2019 104


 Le problème, c'est que nous n'avons toujours pas vu
comment récupérer ces paramètres dans notre
script.

 Pourtant, c'est très simple à réaliser !

[Link] Alaoui LST Info, FST Fès 2018-2019 105


 En effet, des variables de paramètres sont automatiquement
créées :

$# : contient le nombre de paramètres ;

$0 : contient le nom du script exécuté (ici ./[Link]) ;

$1 : contient le premier paramètre ;

$2 : contient le second paramètre ;

…;

$9 : contient le 9e paramètre ;

[Link] Alaoui LST Info, FST Fès 2018-2019 106


 Exemple :

#!/bin/bash
echo "Vous avez lancé $0, il y a $# paramètres"
echo "Le paramètre 1 est $1"

$ ./[Link] param1 param2 param3 ./[Link], il y a 3 pa


ramètres Le paramètre

Exemple : [Link]; [Link]

[Link] Alaoui LST Info, FST Fès 2018-2019 107


 Comme dans la plupart des langages de programmation,
on peut créer des variables en shell qui stockent
temporairement des valeurs en mémoire.

 Une variable nommée variable est accessible en


écrivant $variable.

 La commande echo affiche un texte ou le contenu


d'une variable dans la console.

 read attend une saisie au clavier de la part de


l'utilisateur et stocke le résultat dans une variable.
LST Info, FST Fès 2017-2018 108
 On peut effectuer des opérations mathématiques
sur des nombres à l’aide de la commande let.

 Certaines variables sont accessibles partout, dans


tous les scripts : ce sont les variables d'environnement.
On peut les lister avec la commande env.

 Les paramètres envoyés à notre script


(comme ./script -p) sont transmis dans des variables
numérotées : $1,$2,$3…
 Le nombre de paramètres envoyés est indiqué dans la
variable $#.

LST Info, FST Fès 2017-2018 109


 Ce sont des variables qui contiennent plusieurs cases, comme un
tableau.

 Pour définir un tableau, on peut écrire :

tableau=('valeur0' 'valeur1' 'valeur2')

 Cela crée une variable tableau qui contient trois valeurs


(valeur0, valeur1, valeur2).

 Pour accéder à une case du tableau, il faut utiliser la syntaxe


suivante :

${tableau[2]}
… ceci affichera le contenu de la case n° 2 (donc valeur2).
Les cases sont numérotées à partir de 0 !
[Link] Alaoui LST Info, FST Fès 2018-2019 110
 Exemple : [Link], [Link]

#!/bin/bash
tableau=('valeur0' 'valeur1' 'valeur2')
tableau[5]='valeur5'
echo ${tableau[1]}

Res : valeur1
 Vous pouvez afficher l'ensemble du contenu du tableau d'un seul coup en
utilisant ${tableau[*]} :

 Exemple :

#!/bin/bash
tableau=('valeur0' 'valeur1' 'valeur2')
tableau[5]='valeur5'
echo ${tableau[*]}

Res : valeur0 valeur1 valeur2 valeur5

[Link] Alaoui LST Info, FST Fès 2018-2019 111


 if : la condition la plus simple

La syntaxe en bash est la suivante :

if [ test ] if [ test ]; then

then
echo "C'est vrai"
echo "C'est vrai"

fi fi

Notez : il y a des espaces à l'intérieur des crochets.


On ne doit pas écrire[test] mais [ test ] !
[Link] Alaoui LST Info, FST Fès 2018-2019 112
 Exemple :

#!/bin/bash
nom= "Ahmed" #*
if [ $nom = "Ahmed" ]
then
echo "Salut Ahmed !"
fi

Affiche : Salut Ahmed #car*


Exemple : [Link],
[Link] Alaoui LST Info, FST Fès 2018-2019 113
 Notez aussi que vous pouvez tester deux variables à la
fois dans le if :

 Exemple : [Link]

#!/bin/bash
nom1= "Ahmed"
nom2= "Ali"
if [ $nom1 = $nom2 ]; then
echo "Salut les jumeaux !"
fi

 Comme ici $nom1 est différent de$nom2, le contenu du


if ne sera pas exécuté. Le script n'affichera donc rien.
[Link] Alaoui LST Info, FST Fès 2018-2019 114
Syntaxe :

if [ test ]

then
echo "C'est vrai"
else
echo "C'est faux"
fi

[Link] Alaoui LST Info, FST Fès 2018-2019 115


 Exemple : [Link]

#!/bin/bash
nom= "Ahmed"
if [ $nom = "Ali" ]
then
echo "Salut Ali !"
else
echo "J'te connais pas, ouste !"
fi
[Link] Alaoui LST Info, FST Fès 2018-2019 116
 Je vous propose plutôt de vous baser sur le premier paramètre ($1)
envoyé au script :

#!/bin/bash

if [ $1 = "Ahmed" ]; then

echo "Salut Ahmed!"

else

echo "J'te connais pas, ouste !"

fi

Testez maintenant votre script :./[Link] Ahmed


Exemple : [Link]

[Link] Alaoui LST Info, FST Fès 2017-2018 117


 Syntaxe :

if [ test ] ; then

echo "Le premier test a été vérifié"

elif [ autre_test ]

then
echo "Le second test a été vérifié"

elif [ encore_autre_test ]

then
echo "Le troisième test a été vérifié"

else
echo "Aucun des tests précédents n'a été vérifié"
fi
Exemple : [Link]

[Link] Alaoui LST Info, FST Fès 2017-2018 118


Tests sur des chaînes de caractères :

 en bash toutes les variables sont considérées comme


des chaînes de caractères.
Condition Signification
$chaine1 = $chaine2 Vérifie si les deux chaînes sont
identiques.
Il est aussi possible d'écrire « == »
pour les habitués du langage C.
$chaine1 != $chaine2 Vérifie si les deux chaînes sont
différentes.
-z $chaine Vérifie si la chaîne est vide.
-n $chaine Vérifie si la chaîne est non vide.

Exemple : [Link]

[Link] Alaoui LST Info, FST Fès 2018-2019 119


 On peut aussi vérifier si le paramètre existe avec-z (vérifie si la chaîne est
vide).
 En effet, si une variable n'est pas définie, elle est considérée comme vide par
bash.
 On peut donc par exemple s'assurer que $1 existe en faisant comme suit :

Exemple : [Link]

#!/bin/bash
if [ -z $1 ]; then
echo "Pas de paramètre"
else echo "Paramètre présent"
fi

$ ./[Link]
Pas de paramètre
$ ./[Link] param
Paramètre présent

[Link] Alaoui LST Info, FST Fès 2018-2019 120


 Test sur des nombres :

Condition Signification
$num1 -eq $num2 Vérifie si les nombres sont égaux (equal). À ne pas confondre avec le
«=»
$num1 -ne $num2 Vérifie si les nombres sont différents (nonequal). Encore une fois, ne
confondez pas avec « != »
$num1 -lt $num2 Vérifie si num1 est inférieur ( < ) à num2 (lowerthan)

$num1 -le $num2 Vérifie si num1 est inférieur ou égal ( <= ) à num2 (lowerorequal)

$num1 -gt $num2 Vérifie si num1 est supérieur ( > ) à num2 (greaterthan).

$num1 -ge $num2 Vérifie si num1 est supérieur ou égal ( >= ) à num2(greaterorequal).

[Link] Alaoui LST Info, FST Fès 2018-2019 121


 Exemple : [Link]

#!/bin/bash
if [ $1 -ge 20 ]
then echo "Vous avez envoyé 20 ou plus"
else echo "Vous avez envoyé moins de 20"
fi

$ ./[Link] 23
Vous avez envoyé 20 ou plus

$ ./[Link] 11
Vous avez envoyé moins de 20

[Link] Alaoui LST Info, FST Fès 2017-2018 122


 Tests sur des fichiers :

 Un des avantages de bash sur d'autres langages est


que l'on peut très facilement faire des tests sur des
fichiers.
Condition Signification
-e $nomfichier Vérifie si le fichier existe.

-d $nomfichier Vérifie si le fichier est un répertoire. N'oubliez pas


que sous Linux, tout est considéré comme un fichier,
même un répertoire !

-f $nomfichier Vérifie si le fichier est un… fichier. Un vrai fichier


cette fois, pas un dossier.

-L $nomfichier Vérifie si le fichier est un lien symbolique (raccourci).

-r $nomfichier Vérifie si le fichier est lisible (r).

-w $nomfichier Vérifie si le fichier est modifiable (w).

-x $nomfichier Vérifie si le fichier est exécutable (x).


[Link] Alaoui LST Info, FST Fès 2018-2019 123
 Je vous propose de faire un script qui demande l'utilisateur
d'entrer le nom d'un répertoire et qui vérifie si c’est bien un :

#!/bin/bash
read -p 'Entrez un répertoire : ' repertoire
if [ -d $repertoire ]
then echo "Bien, vous avez compris ce que j'ai dit !
else echo "Vous n'avez rien compris..."
fi

Entrez un répertoire : /home


Bien, vous avez compris ce que j'ai dit !

Entrez un répertoire : [Link]


Vous n'avez rien compris...
Exemple : [Link]
[Link] Alaoui LST Info, FST Fès 2018-2019 124
 Effectuer plusieurs tests à la fois

Dans un if, il est possible de faire plusieurs tests à


la fois.

Les deux symboles à connaître sont :

&& : signifie « et » ;
|| : signifie « ou ».

[Link] Alaoui LST Info, FST Fès 2018-2019 125


 Il faut encadrer chaque condition par des crochets.

Exemple :

#!/bin/bash
if [ $# -ge 1 ] && [ $1 = 'vrai' ]
then echo "Bravo !"
echo "Vous connaissez le mot de passe"
else echo "Vous n'avez pas le bon mot de passe"
fi

$ ./[Link] vrai
Bravo ! Vous connaissez le mot de passe
#à condition que la 1ere condition soit satisfaite.
Exemple : [Link], [Link]

[Link] Alaoui LST Info, FST Fès 2018-2019 126


 Inverser un test :

Il est possible d'inverser un test en utilisant la


négation :

if [ ! -e fichier ]
then echo "Le fichier n'existe pas"
fi

[Link] Alaoui LST Info, FST Fès 2018-2019 127


case : tester plusieurs conditions à la fois

Exemple : [Link], [Link]

#!/bin/bash
case $1 in
"Ahmed") echo "Salut Ahmed !"
;;
"Ali") echo "Bien le bonjour Ali"
;;
"Jamal") echo "Hé Jamal, ça va ?"
;;
*) #rôle du default en C

echo "J'te connais pas, ouste !"


;;
esac #Marque le fin du case

# ;; le double point-virgule dit à bash d'arrêter là, la lecture du case, si la condition


est verifiée.

[Link] Alaoui LST Info, FST Fès 2018-2019 128


 Oneffectue des tests dans ses programmes grâce
aux if, then, [[ elif, then, fi] else,] fi.

 Onpeut comparer deux chaînes de caractères


entre elles, mais aussi des nombres.

 On peut également effectuer des tests sur des


fichiers : est-ce que celui-ci existe ? Etc.

LST Info, FST Fès 2017-2018 129


 Aubesoin, il est possible de combiner plusieurs
tests à la fois avec les symboles&&(ET) et||(OU).

 Lesymbole ! (point d'exclamation) exprime la


négation dans une condition.

 Lorsquel'on effectue beaucoup de tests sur une


même variable, il est parfois plus pratique d'utiliser
un bloc case in… esac plutôt qu'un bloc if… fi.

LST Info, FST Fès 2017-2018 130


 while : boucler « tant que »

while [ test ] while [ test ]; do

do echo 'Action en boucle'


echo 'Action en boucle'
done done

 Exemple : [Link]

#!/bin/bash
while [ -z $reponse ] || [ $reponse != 'oui' ]
do
read -p 'Dites oui : ' reponse
done

[Link] Alaoui LST Info, FST Fès 2018-2019 131


for : boucler sur une liste de valeurs

En bash, la boucle for s'écrit comme ceci :

#!/bin/bash

for variable in 'valeur1' 'valeur2' 'valeur3'

do

echo "La variable vaut $variable"

done
[Link] Alaoui LST Info, FST Fès 2018-2019 132
 Ce qui donne, si on l'exécute :

La variable vaut valeur1


La variable vaut valeur2
La variable vaut valeur3

 Toutefois, la liste de valeurs n'a pas besoin d'être définie


directement dans le code.

On peut utiliser une variable :

#!/bin/bash
liste_fichiers=`ls`
for fichier in $liste_fichiers
do
echo "Fichier trouvé : $fichier"
done

[Link] Alaoui LST Info, FST Fès 2018-2019 133


Un for plus classique :

 En bash, comme on l'a vu, le for permet de parcourir une


liste de valeurs.

 Toutefois, en trichant un peu à l'aide de la commande seq, il


est possible de simuler un for classique :

#!/bin/bash
for i in `seq 1 10`;
do
echo $i
done

Seq : génère tous les nombres allant du premier


paramètre au dernier paramètre.
Exemple : [Link]
[Link] Alaoui LST Info, FST Fès 2018-2019 134
 Comment déclarer une fonction :

# déclaration méthode 1 # déclaration méthode 2

maFonction () function maFonction

{ {
bloc d’instructions bloc d’instructions
} }

#appel de ma fonction #appel de la fonction

maFonction maFonction
 Vous pouvez déclarer une fonction Bash avec maFonction()
ou function maFonction.

 Vous faites ensuite appel à votre fonction maFonction() en


tapant simplement
[Link] Alaoui
dans votre code2018-2019
LST Info, FST Fès
maFonction. 135

Vous aimerez peut-être aussi