40
Atelier Systèmes 2 ISET Tozeur Guide du fascicule Ce fascicule contient l’ensemble de travaux pratiques réalisés dans le cadre de l’enseignement de l’unité « Systèmes 2 », il s’adresse aux étudiants de la deuxième année de la licence appliquée en technologies de l’informatique. Les travaux pratiques contenus dans ce support constituent un complément pédagogique et scientifique pour préparer l’examen de certification en expérimentant toutes les commandes et les utilitaires linux. Ces travaux pratiques permettent d’illustrer précisément certaines parties du cours et donnent aussi les moyens de mesurer l’autonomie. Ces manipulations concrètes, permettront de former une première expérience significative et d’acquérir de véritables compétences techniques sur des mises en situations réelles. Ce support comporte six ateliers pratiques. Page | 1 Mbarek & Ben Mahmoud

Atelier LPIC 1 - Academie pro · Web viewMandriva Linux Destinée à un public d'utilisateurs novices, elle offre une très grande stabilité tout en fournissant régulièrement les

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Atelier LPIC 1

Atelier Systèmes 2ISET Tozeur

Guide du fascicule

Ce fascicule contient l’ensemble de travaux pratiques réalisés dans le cadre de l’enseignement de l’unité « Systèmes 2 », il s’adresse aux étudiants de la deuxième année de la licence appliquée en technologies de l’informatique.Les travaux pratiques contenus dans ce support constituent un complément pédagogique et scientifique pour préparer l’examen de certification en expérimentant toutes les commandes et les utilitaires linux.Ces travaux pratiques permettent d’illustrer précisément certaines parties du cours et donnent aussi les moyens de mesurer l’autonomie. Ces manipulations concrètes, permettront de former une première expérience significative et d’acquérir de véritables compétences techniques sur des mises en situations réelles.Ce support comporte six ateliers pratiques.

Sommaire

Atelier 1 : Présentation & Installation de Linux………………………………………………..3

Atelier 2 : Matériel et démarrage de Linux………………………………………………………15

Atelier 3 : Installation et gestion de paquetages………………………………………………17

Atelier 4 : Systèmes de fichiers………………………………………………………………………..19

Atelier 5 : Commandes Unix…………………………………………………………………………….23

Atelier 6 : Programmation Shell……………………………………………………………………….28

Atelier 1 : Présentation & Installation de Linux

Objectifs :

· L’étudiant doit être capable de créer une machine virtuelle et d’installer le système d’exploitation Ubuntu sur cette machine.

· Durée : 1.5h

1. Qu’est-ce qu’une distribution Linux ?

Une distribution Linux, appelée aussi distribution GNU/Linux pour faire référence aux logiciels du projet GNU, est un ensemble cohérent de logiciels, la plupart étant logiciels libres, assemblés autour du noyau Linux.

Il existe une très grande variété de distributions, ayant chacune des objectifs et une philosophie particulière. Les éléments différenciant principalement les distributions sont : la convivialité (facilité de mise en œuvre), l'intégration (taille du parc de logiciels validés distribués), la notoriété (communauté informative pour résoudre les problèmes), l'environnement de bureau (GNOME, KDE…), le type de paquet utilisé pour distribuer un logiciel (principalement deb et RPM) et le mainteneur de la distribution (généralement une entreprise ou une communauté). Le point commun est le noyau (kernel) et un certain nombre de commandes.

Liste des distributions Linux

On peut recenser, par ordre alphabétique, un certain nombre de distributions GNU/Linux.

Les distributions majeures

Il n'existe pas à proprement parler de distributions « majeures », mais certaines distributions sortent plus particulièrement du lot par leur ancienneté ou leur rôle fondamental. Ainsi, certains éléments (notamment les systèmes de paquetages) développés pour ces distributions sont repris dans d'autres.

Debian 

Distribution non commerciale régie par le contrat social Debian. Elle se distingue par le très grand nombre d'architectures soutenues et, de ce fait, par son cycle de développement relativement long, gage d'une certaine stabilité.

Red Hat Enterprise Linux 

Distribution commerciale qui a créé le gestionnaire de paquets RPM utilisé également par d'autres distributions.

SuSE Linux 

Développée aujourd'hui en deux versions dont SuSE Linux Enterprise pour les besoins d'entreprise (avec de nombreuses certifications matérielles et logicielles). Basé à l'origine sur Slackware, SuSE Linux puis SuSE linux Entreprise est la plus ancienne distribution commerciale encore existante.

Des distributions communautaires et grand-public

Certaines des distributions précédentes sont développées par une communauté (comme Debian ou Slackware) mais les distributions suivantes sont :

· soit des distributions dérivées de distributions commerciales (destinées principalement aux entreprises), intégrant une forte dimension communautaire et désormais toutes orientées vers le grand public ;

· soit des distributions visant un public plus néophyte, pour ces dernières le volet communautaire est important, sans forcément participer au développement.

Face aux communautés de développeurs-utilisateurs émergent des communautés de simples utilisateurs, très actifs et prompts à s'entraider.

openSUSE 

Version libre et communautaire SuSE.

Fedora 

Version communautaire de Red Hat. Elle se veut particulièrement à la pointe de la technologie d'où la prise en charge courte (13 mois) et un cycle de développement rapide.

Mandriva Linux 

Distribution française, dérivée de celle de RedHat, conçue pour être facile d'installation et d'usage. Elle est très appréciée par les débutants. Elle proposait aussi un service d'assistance commercial important. Initialement elle s'appelait Mandrake Linux. Elle est aujourd'hui abandonnée.

Mageia 

Apparue en 2010, Mageia est une distribution communautaire gérée par une association française, Mageia.Org. Mageia est un fork de Mandriva Linux, abandonnée en 2013. Elle est appréciée des débutants car elle propose de nombreux outils permettant la configuration du système. Le support des versions est de 18 mois.

Gentoo 

Distribution qui se différencie par sa gestion des paquetages à la manière des ports BSD. Ce mode de gestion des paquetages compile le code-source directement sur la machine de l'utilisateur. De ce fait, Gentoo est à réserver aux utilisateurs plus avertis.

Ubuntu 

Distribution commerciale fournie par l'entreprise Canonical et dérivée de Debian. Orientée grand-public à l'origine, elle existe maintenant en version entreprise. Ses versions stables sont éditées suivant un calendrier strict, suivant un cycle de 6 mois pour des versions dites « intermédiaires » et tous les deux ans pour des versions « supportées sur le long terme » de durée de support de 5 ans. Ubuntu est disponible en live DVD. C'est une distribution qui est devenue très populaire en peu de temps.

Univention Corporate Server (UCS) 

Distribution commerciale dérivée de Debian avec un système de gestion intégré pour l'administration multiplateformes de serveurs, de services, de clients, de bureaux et d'utilisateurs, ainsi que de machines virtuelles, exploitées sous UCS. UCS est également compatible avec les fonctions fournies par Microsoft Active Directory pour l'administration d'ordinateurs fonctionnant sous Microsoft Windows via l'intégration du logiciel open source Samba 4.

PCLinuxOS 

Dérivée de Mandrake (devenue Mandriva Linux). Destinée à un public d'utilisateurs novices, elle offre une très grande stabilité tout en fournissant régulièrement les paquets stables les plus récents. Construite sur un modèle « rolling release » (distribution tournante), des versions mises à jour sont publiées plusieurs fois par an pour les nouveaux utilisateurs. Depuis 2009, des contributeurs ont créé des versions spécifiques pour les différents bureaux les plus employés : Full Monty (une version KDE maxi avec des bureaux différenciés), Xfce, Lxde, GNOME, et Openbox ainsi que des variantes dites « mini », comportant peu d'applications.

2. Comment installer un système Linux

Dans le cas de notre atelier, et dans le cadre du respect des ordinateurs du laboratoire, nous allons procéder à une installation virtuelle du système Linux.

Pour cela, nous allons utiliser un outil de virtualisation pour créer vos machines virtuelles supportant le système Ubuntu.

VirtualBox est un logiciel gratuit, téléchargeable depuis Internet, qui permet d'exécuter un système d'exploitation entier à l'intérieur d'un autre. Pour l’utiliser, il est recommandé d’avoir un ordinateur avec un minimum 512 Mo, 1 Go ou plus de RAM. 

Création d’une machine virtuelle

Après avoir lancé VirtualBox à partir du menu Démarrer de Windows, cliquez sur Créer pour créer une nouvelle machine virtuelle. Lorsque l'assistant Créer une nouvelle machine virtuelle apparaît, cliquez sur Suivant.

Nommer la machine LPI_101, Spécifier le système d’exploitation Linux et choisir la version Ubuntu.

VirtualBox va essayer de deviner combien de votre mémoire (ou RAM) à allouer à la machine virtuelle. Si vous avez 1 Go ou moins de RAM, je vous conseille de suivre la recommandation. Si, toutefois, vous avez plus de 1 Go, environ un quart de votre RAM ou moins devrait être bon. Par exemple, si vous avez 2 Go de RAM, 512 Mo est bien à allouer. Si vous avez 4 Go de RAM, 1 Go est bien à allouer. Si vous n'avez pas idée de ce que la RAM est ou combien de celui-ci vous avez, allez-y avec la valeur par défaut.

Cliquer sur Suivant

Cocher Créer un nouveau disque dur, puis cliquez sur Suivant.

Cocher VHD (Virtual Hard Disk) puis cliquer sur Suivant une autre fois.

Cocher Dynamically Allocated, puis cliquer sur Suivant.

Fixer la taille du disque dur, par défaut 8 Go Cliquer sur Suivant une autre fois.

Cliquer sur Create.

Cliquer sur Create une autre fois.

Installation de Ubuntu

Pour pouvoir installer sur la machine virtuelle le système d’exploitation Ubuntu, il va nous falloir lui faire croire que l’image ISO d’installation est présente dans son lecteur CD.

Cliquez donc sur LPI_101 dans la liste des machines virtuelles, puis sur Configuration. Dans la nouvelle fenêtre, sélectionnez « Stockage ». Ensuite, sélectionner Vide sous Contrôleur IDE. Maintenant, cliquer sur l’icône du CD à côté de Lecteur CD / DVD puis sur Choisissez un fichier de CD/DVD virtuel. 

Sélectionnez l’image ISO de Ubuntu sur le Bureau et cliquez sur « Ouvrir ».

Une fois que vous l'avez sélectionné, cliquez sur OK.

Ensuite, double-cliquez sur votre machine virtuelle pour le faire démarrer.

Au premier écran, choisissez la langue désirée avec les flèches haut-bas, puis appuyez sur la touche « enter »

Choisissez ensuite l’option « Installer Ubuntu », appuyez sur « enter », et patientez le temps de chargement du système d’installation. Choisissez ensuite la langue, le français, puis le fuseau horaire, Tunis, ensuite la disposition de votre clavier, par défaut, et enfin choisissez le partitionnement assisté : cocher Utiliser le disque entier.

La dernière étape de l’installation vous demande de compléter votre identité. En effet, une fois le système installé, il vous demandera votre login (le nom d’utilisateur), et le mot de passe, taper user pour le login et user pour le mot de passe. Cliquer enfin sur Suivant et Installer, puis patientez jusqu’à ce que qu’Ubuntu vous demande de redémarrer, ce que vous allez faire en cliquant sur « Redémarrer maintenant ».

Avant de cliquer sur « Enter » pour achever l’installation, il faut retirer le CD d’installation d’Ubuntu du lecteur de la MV, afin de ne pas reprendre l’installation à chaque redémarrage. Faîtes donc un clic droit sur l’icône du disque en bas à droite de la machine virtuelle, et cliquez sur « Désinstaller CD/DVD-ROM »

Maintenant, l’installation de Ubuntu sur la machine virtuelle est terminé, vous pourrez démarrer votre machine virtuelle LPI_101.

Atelier 2 : Matériel et démarrage de Linux

Objectifs :

· Manipuler les périphériques de tout type, et obtenir des informations sur votre matériel.

· manipuler les commandes du démarrage du Linux.

· Savoir résoudre plus facilement des problèmes concernant le matériel et l’administration de la machine.

· Durée : 1.5h

Partie 1 : Architecture matérielle

1. Isolez l’adresse matérielle de votre carte graphique sur le bus PCI. Les cartes AGP et PCI Express sont vues comme un bus PCI.

# lspci | grep -i vga

01:00.0 VGA compatible controller: nVidia Corporation GeForce

8600 GT (rev a1)

2. Obtenez plus de détails sur cette carte. Notamment, quel module la gère ? Ces informations peuvent être obtenues avec le -v et en spécifiant uniquement la carte avec le -s de lspci :

# lspci -s 01 :00.0 -v

3. Affichez toutes les informations relatives aux périphériques de type USB connectés à la machine.

# lsusb

4. Comment affichez les messages du noyau lors du démarrage de linux ?

# dmesg

Ou

# more /var/log/dmesg

Partie 2 : Démarrage de Linux

1. Déterminer le niveau d’exécution de votre machine.

# runlevel

2. Modifier le niveau d’exécution de votre machine en passant au niveau 6.

# init 6

3. Si vous démarrez en mode graphique (niveau 5), modifiez /etc/inittab pour démarrer au niveau 3. Changez la valeur de 5 à 3 sur la ligne initdefault et rebootez.

id:3:initdefault:

4. Listez les services qui démarrent au niveau 3 :

# ls -l /etc/init.d/rc3.d/S*

5. Avec la commande shutdown, éteignez l’ordinateur maintenant. Quel est le niveau d’exécution activé ?

# shutdown -r now

Atelier 3 : Installation et gestion de paquetages

Objectifs :

· Connaître les commandes d’installation du système et des paquetages.

· Durée : 1.5h

1. Consultez le contenu du fichier de configuration /boot/grub/grub.conf

# cat /boot/grub/grub.conf

Pour les commandes de gestion de paquetages, vous allez vous contenter des outils dpkg et apt-get puisque vous travaillez sur une distribution Debian (Ubuntu).

2. Déterminez le nombre de packages DPKG actuellement installés sur votre poste de travail.

$ dpkg - l | grep ^ii | wc -l

3. Vérifiez que le package virtualbox est bien présent sur votre système, puis déterminez à quoi il sert à l’aide de sa description.

$ dpkg -l virtualbox

4. Pour supprimer un package Debian, utilisez l’option -r :

# dpkg -r virtualbox

5. Téléchargez le package DPKG de tuxpaint présent surle lien : http://www.tuxpaint.org/download/, choisissez la dernière version.

Pour installer ce package Debian, utilisez le paramètre -i :

# dpkg -i tuxpaint.xxxxxxx.dpkg

6. APT est un gestionnaire de meta-packages : il gère les dépendances à votre place et travaille sur des dépôts et non plus sur des packages individuels. Tuxpaint est présent dans le dépôt des backports. Le but est de gérer ce dépôt et les installations associées.

Vous devez modifier le fichier /etc/apt/sources.list et rajouter dedans la ligne

« deb http://www.backports.org/debian etch-backports main contrib non-free ».

L’url complète du dépôt contrib pour les i386 est :

http://www.backports.org/debian/dists/etchbackports/contrib/binary-i386/.

7. Mettez à jour la base locale APT ?

# apt-get update

8. installez uniquement tuxpaint.

# apt-get install tuxpaint

9. Mettez à jour votre système.

# apt-get upgrade

Atelier 4 : Systèmes de fichiers

Objectifs :

· Maîtriser les commandes de partitionnement.

· Connaître l'organisation de l'arborescence standard des fichiers sous Linux.

· Maîtriser la création d'un système de fichiers sur une partition.

· Maîtriser la remise en état d'un système de fichiers endommagé.

· Savoir protéger les fichiers et les répertoires.

· Durée : 3h

Partie 1 :

Attention : vue l’importance des commandes à réaliser, vous allez utilisez durant la séance de travaux pratiques la machine virtuelle lpi1 se trouvant sous le système windows 7.

1. Soit un disque dur de votre système disposant d’espace pour la création d’une partition. Sur la machine virtuelle lpi1, il s’agit du premier disque IDE, appelé /dev/hda. Trois partitions sont présentes : /dev/hda1, /dev/hda2 et /dev/hda3. Créez une troisième partition étendue.

# fdisk /dev/hda

2. Créez une nouvelle partition en appuyant sur n puis [Entrée].

Créez une partition étendue en appuyant sur e puis [Entrée].

Comme numéro, saisissez 4 puis [Entrée] : il ne peut y avoir que quatre partitions primaires.

Enfin, appuyez deux fois sur [Entrée] pour accepter les valeurs par défaut.

3. Créez ensuite une partition logique, selon le même principe, dans la partition étendue. Elle portera le numéro 5 et occupera tout l’espace disponible.

4. Sauvez la table des partitions en appuyant sur w puis [Entrée]. Vous allez probablement obtenir un message d’avertissement vous informant que la nouvelle table n’est pas accessible.

5. Forcez la mise à jour de la nouvelle table des partitions avec partprobe :

# partprobe /dev/hda

6. Vérifiez dans /dev la présence du fichier /dev/hda5.

# ls -l /dev/hda5

7. Créez un système de fichiers de type ext2 dans /dev/hda5, sans options particulières:

# mkfs -t ext2 /dev/hda5

8. En fin de compte, il fallait le créer en ext3 pour profiter de la journalisation. Modifiez le système de fichiers pour qu’il soit maintenant en ext3 :

# tune2fs -j /dev/hda5

Partie 2 :

1. Dans votre dossier personnel créer un dossier nommé droits et un document monDoc.txt à l’intérieur de ce dossier.

2. Quels sont les droits d’accès sur le fichier que vous venez de créer pour l’utilisateur ? le groupe ? les autres ?

$ ls -l

3. Convertir en octal les droits d’accès suivants :

· r w x // 7 = 1 * 4 + 1 * 2 + 1 * 1

· r – x // 5 = 1 * 4 + 0 * 2 + 1 * 1

· – w x // 3 = 0 * 4 + 1 * 2 + 1 * 1

4. Traduisez les octaux suivant en droits d’accès :

· 1 // 1 = 0 * 4 + 0 * 2 + 1 * 1 => - - x

· 4 // 4 = 1 * 4 + 0 * 2 + 0 * 1 => r - -

· 6 // 6 = 1 * 4 + 1 * 2 + 0 * 1 => r w -

5. Modifier les droits sur monDoc.txt tel qu’il soit accessible en lecture pour tout le monde (les accès et écriture et exécution sont laissés par défaut).

$ chmod ugo+r monDoc.txt

6. Modifier les droits sur le document tel qu’il ait les suivant : r w x r – x r – –

$ chmod 754 monDoc.txt

7. Supprimer les droits de lecture au groupe et aux autres utilisateurs.

$ chmod go-r monDoc.txt

8. Ajouter les droits d’exécutions aux autres utilisateurs.

chmod o+x monDoc.txt

9. Ecrire avec plusieurs façons, l’accès total du document par tous les utilisateurs.

$ chmod 777 monDoc.txt

$ chmod ugo+rwx monDoc.txt

$ chmod a+rwx monDox.txt

$ chmod ugo=rwx monDoc.txt

$ chmod a=rwx monDoc.txt

Partie 3:

Exercice1

1. Exécuter et interpréter la commande umask

2. Créer un répertoire REP1dans votre répertoire courant.

3. Donner le droit d’accès de REP1.

4. Taper la commande umask 204 REP2.

5. Créer le fichier REP2.

6. Donner le droit d’accès de REP2.

7. Donner le droit maximal de REP2.

8. Taper la commande umask 204 fich.

9. Donner le droit d’accès de fich.

10. Donner le droit maximal de fich.

Atelier 5 : Commandes Unix

Objectifs :

· Maîtriser la ligne de commande.

· Connaître les caractères spéciaux et la majorité des filtres de texte disponibles sur la ligne de commande.

· Durée : 3h

Partie 1 :

Soit l’arborescence suivante :

1. Créer l’arborescence ci-dessus.

2. Ecrire une ligne de commandes permettant d’afficher le contenu du répertoire personnel /home/etudiant avec des détails sur les fichiers.

$ ls -l

3. Ecrire une ligne de commandes permettant d’afficher le chemin absolu du répertoire courant.

$ pwd

4. Ecrire une ligne de commandes permettant de passer du répertoire personnel au répertoire images.

$ cd images

5. Vous êtes dans le répertoire images, écrire une ligne de commandes permettant d’afficher les fichiers qui commencent par le mot perso.

$ ls perso*

6. Ecrire une ligne de commandes permettant d’afficher les images de type gif.

$ ls *gif

7. Ecrire une ligne de commandes permettant copier le fichier cv.txt dans le répertoire documents.

$ cp ~/cv.txt ~/documents

8. Ecrire une ligne de commandes permettant de supprimer le répertoire documents avec son contenu.

$ rm –r ~/documents

9. Ecrire une ligne de commandes permettant de créer un lien symbolique nommé lien_images vers le dossier images.

$ ln ~/images lien_images

Partie 2 :

1. Créer le fichier fichnote contenant les lignes suivantes :

Selmi Bilel120809

Arbi Lobna091512

MahmoudiSalah101113

AouiniMenel160807

Le séparateur entre les champs étant la tabulation.

2. Ecrire une ligne de commandes permettant d’afficher le contenu du fichier fichnote.

$ cat fichnote

3. Ecrire une ligne de commandes permettant d’afficher toutes les lignes contenant la chaîne de caractères « 09 » dans le fichier fichnote.

$ grep 09 fichnote

4. Ecrire une ligne de commandes permettant d’afficher toutes les lignes qui commencent par le caractère « A » dans le fichier fichnote.

$ grep ^A fichnote

5. Ecrire une ligne de commandes permettant de récupérer la 1ère et la 2ème colonne de fichnote.

$ cut -f1,2 fichnote

6. Ecrire une ligne de commandes permettant de récupérer la cinquième colonne de fichnote.

$ cut -f5 fichnote

7. Ecrire une ligne de commandes permettant d’afficher les lignes du fichier fichnote avec numérotation.

$ nl fichnote

8. Ecrire une ligne de commandes permettant d’afficher les 2 premières lignes de fichnote.

$ head -2 fichnote

9. Ecrire une ligne de commandes permettant d’afficher les 2 dernières lignes de fichnote.

$ tail -2 fichnote

Partie 3 :

Tous les commandes ci-dessous sont réalisés avec le fichier jeu_essai sont le contenu est :

PerlperleParlantparlerperl Parler parle perl langage

exe qwertzqwertz alpha

exe qwertzqwertz alpha

LangageLanguage02.03.05.0301.234.5678un deux trois quatre cinq six sept huit neuf0 1 2 3 5 6 7 8 9

Ecrire toutes les commandes grep permettant de satisfaire les demandes en question :

1. les lignes vides

grep ^$ jeu_essai

2. Mot terminé par "age"

grep "age\>" jeu_essai

3. Mot terminé par "guage" ou "gage"

grep "gu\?age\>" jeu_essai

4. Chaîne contenant "erl"

grep "erl" jeu_essai

5. Lignes terminées par "t"

grep t$ jeu_essai

6. Chaîne contenant les sous-chaînes "alpha" ou "exe"

grep -E "(alpha|exe)" jeu_essai

7. Ligne ne commençant pas par un chiffre

grep ^[^0-9] jeu_essai

8. Ligne commençant par une voyelle ou un chiffre

grep ^[0-9aeiaouAEIOU] jeu_essai

9. Ligne ne commençant pas par une voyelle

grep ^[^aeiaouAEIOU] jeu_essai

Partie 4 :

1. Dans un système Linux, quel est le processus qui n'a pas de père. Quel est son PID?

2. À quoi servent les options -f et -L de la commande ps ?

3. Lancez la commande ps ax -f -L et décrivez les différentes colonnes affichéees.

4. Utilisez la commande pstree pour afficher l'arbre des processus en cours avec leur PID.

5. Quelle option de pstree permet d'afficher les ancêtres d'un certain processus dont le PID est donné en argument à la commande ?

6. Quelle option de pstree permet d'afficher l'arbre complet des processus en cours (i.e., permet d'afficher toutes les occurrences de chaque processus) ?

7. Quel signal est lancé par défaut à la commande kill ?

8. Que font les signaux suivants : SIGQUIT, SIGKILL, SIGCHLD ?

9. Quel caractère permet de lancer une commande en arrière-plan ? Quelle commande permet de lancer une commande en arrière-plan ?

10. Affichez la liste des processus actifs dans votre terminal courant en utilisant ps.

11. Quelles informations sont affichées par défaut lorsque vous lancez la commande top?

12. Utilisez la commande top pour afficher la liste des processus en temps réel en ajoutant les colonnes PID et UID dans l'affichage.

13. Lancez 3 fois la commande sleep en arrière-plan avec des arguments différents à chaque fois.

a. Affichez la liste des travaux en cours. Que signifient les caractères + et - dans le résultat obtenu ?

b. Lancez ensuite la commande sleep en avant-plan.

c. Reprenez la main dans votre terminal et affichez à nouveau la liste des travaux en cours.

d. Relancez en arrière-plan la dernière commande sleep, que vous avez suspendue auparavant.

e. Arrêtez l'exécution de la première commande sleep en utilisant son PID.

f. Arrêtez l'exécution de la deuxième commande sleep en utilisant son numéro de travail.

g. Arrêtez l'exécution des deux dernières commandes sleep en utilisant la combinaison de touches Ctrl+c

Atelier 6 : Programmation Shell

Objectifs :

· Ce TP a pour but de vous familiariser avec la programmation en shell sur système Unix.

· Les shells (ou langages de commandes) assurent l'interface entre les utilisateurs et le système. Sous Unix, il s'agit de véritables langages de programmation interprétés. On peut distinguer les commandes externes, qui entraînent la création d'un nouveau processus correspondant à l'exécution d'un programme binaire et les commandes internes, qui sont des commandes propres à l'interpréteur de commande.

· Durée : 3h

L'interpréteur de commandes Bourne-shell

Le Bourne-shell est le premier langage de commandes qui ait été développé sous UNIX. Vous utilisez actuellement le C-shell (/bin/csh). Le C-shell est particulièrement intéressant pour son mode interactif. Le Bourne-shell est plus adapté que le C-shell pour la programmation et reste le shell le plus utilisé pour programmer.

Commande echo

Essayez les commandes suivantes :

$echo Bonjour$echo Bonjour à tous !

Visualisation des valeurs des variables de l'interpréteur

Essayez les commandes suivantes :

$set$echo $HOME$echo $PS2

Affectation de valeur à une variable

Essayez les commandes suivantes :

x=a echo ${x}yecho $x dateset d=`date` x='123 4567 89' echo $decho $x liste= `ls` echo $y echo $liste

Expansion des chaînes de caractères

Essayez les commandes :

$echo 'dddd $HOME dd'$echo "dddd $HOME dd"

Exportation des variables

Vérifiez qu'une variable n'est pas automatiquement exportée dans un sous-interpréteur de commandes. Pour l'exporter, il faut utiliser la commande export :

shset # pas de variable xCTRL-D # sortie du sous interpreteurexport xshset # la variable x est bien exporteeCTRL-D

Boucle for

Essayez les commandes :

$for i in a ee dx; do echo Hi! ; done

Vérifiez qu'en écrivant la commande for...done sur plusieurs lignes, l'interpréteur attend la suite de la commande ; ce qui est materialisé par << l'invite secondaire >>> (voir la variable $PS2). Vous devez obtenir quelque chose comme :

$ for i in aa ee dx>do echo Hi!>doneHi!Hi!Hi!$

Fichier de commandes

Faites de la commande for...done précédente un fichier de texte, par exemple cmd.sh. Essayez d'exécuter cmd.sh :

$ ./cmd.sh

C'est impossible ; vous ne possédez pas le droit d'exécution sur le fichier de commandes cmd.sh (vérifiez cela par un ls -l cmd.sh). Deux solutions s'offrent à vous.

1. Passer votre fichier de commandes en paramètre au Bourne-shell

2. sh cmd.sh

3. Changer les droits du fichier de commandes :

4. chmod 755 cmd.sh

Vérifiez le résultat par les commandes :

$ls -l cmd.sh$ ./cmd.sh

Les fichiers de commandes peuvent être exécutés à partir du C-shell. Comme le C-shell possède également un langage de commandes, il faut indiquer à la première ligne du fichier le shell à utiliser :

#! /bin/sh

Le caractère # sert habituellement à introduire un commentaire.Retour sur la boucle for

Remarquez l'usage possible en lecture de variable d'itération d'une commande for, par exemple :

for i in 1 2 'a b' 4do echo $idone

ou

for i in *do echo $idone

Commande read

Essayez la commande read, en constituant un fichier de commandes du style :

echo '?'read REPecho "reponse $REP"

Instruction case

Ecrivez un fichier de commandes choix.sh, qui demande interactivement à l'usager s'il veut afficher la date ou le répertoire de travail, analyse la réponse et exécute l'action demandée. Exemple :

$ choix.sh(d)ate/(r)epertoire courant ? x????$ choix.sh(d)ate/(r)epertoire courant ? r/home/licence/duchmol/unix/tp2$ choix.sh(d)ate/(r)epertoire courant ?dLundi 24 novembre 2014 18:21:29 MEST 2001

Arguments d'un fichier de commandes

Utilisez les variables $# et $* et une boucle for pour développer une commande arg.sh qui écrit sur la sortie standard :

· le nombre d'arguments qui a été passé à la commande ;

· le nom de chemin du programme (c'est-à-dire le nom de la commande) ;

· puis chacun des arguments à raison d'un par ligne.

Exemple :

$arg.sh 1 arg $HOMENombre de chaines: 3arg.sh1arg/home/soufiene$

Page | 5

Mbarek & Ben Mahmoud