78
1 Encadré par : Mme S.ELFILALI Réalisé par : NAJIHI Soukaina AJANKAR Soukaina BOUJADI Soukaina ABOUNASR Meryem

Rapport des Travaux Pratiques UNIX

Embed Size (px)

Citation preview

Page 1: Rapport des Travaux Pratiques UNIX

1

Encadré par :

Mme S.ELFILALI

Réalisé par :

NAJIHI Soukaina

AJANKAR Soukaina

BOUJADI Soukaina

ABOUNASR Meryem

Page 2: Rapport des Travaux Pratiques UNIX

2

Remerciements

Nous souhaitons adresser nos

remerciements les plus sincères à notre

chère professeure Mme Sanaa ELFILALI qui

nous a encadrées avec patience durant la

réalisation de ce travail. Ses conseils nous

ont été bien utiles ; Toujours disponible et

enthousiaste elle nous a beaucoup aidé. Et

nous tenons à associer à ces

remerciements toute personne ayant

contribué, de près ou de loin, à la réalisation

de ce travail.

Page 3: Rapport des Travaux Pratiques UNIX

3

Afin d’appliquer les méthodologies et les notions enseignées par notre professeure Mme S.El FILALI . Nous devons réaliser ce Travail qui a pour but d’approfondir les connaissances acquises durant notre scolarité et de favoriser le travail en groupe. Le projet que nous devons réaliser est un tutorial contenant tous ce qui concerne les Travaux pratiques. Nous avons suivis une démarche bien détaillée afin de permettre à l’étudiant de bien maitriser cette matière. Notre rapport se structure de la façon suivante : Tout d'abord, nous présentons l’énoncé des exercices. Puis, nous présentons sa syntaxe, ainsi que son objectif et ensuite ses solutions. Et enfin des notes nous expliquons comment nous pouvons développer nos connaissances

Page 4: Rapport des Travaux Pratiques UNIX

4

Un terminal Unix ? Quoi qu'est-ce ?

C'est toute la base d'Unix : une fenêtre dans laquelle s'exécute un shell qui affiche

un prompt :

pubuntu@pubuntu:~$ par exemple. On tape une commande (ls -l -a par exemple),

on valide avec [Entrée] : le shell lance alors le programme (ici: ls), en lui passant

des paramètres (ici -l et -a). Le programme s'exécute, affiche des résultats (qu'il vaut

mieux lire, ce n'est pas pour rien qu'il les affiche), voire un message d'erreur

(remarque encore plus vraie), et (espérons-le) se termine. Le prompt s'affiche de

nouveau pour taper la commande suivante.

Comment le lance-t-on ?

Sous Unix (que ce soit Solaris en salle 106 ou Linux en salles 109 112 ou 002 ou

n'importe où en stage où ils travaillent sous Unix), il faut trouver un bouton ou un

item dans un menu qui ressemble à un écran noir, avec parfois un pingouin ou un

coquillage (shell) en superposition, appelé Term ou XTerm, ou Rxvt, ou Terminal,

Console...

Page 5: Rapport des Travaux Pratiques UNIX

5

Exercice 1 :

Objectifs :

Comment ca marche ?

La commande « touch » :

La commande touch permet de créer des fichiers.

1) Dans votre répertoire courant, créez en une commande les fichiers

suivants: annee1Annee2 annee4 annee45 annee41 annee510 en utilisant

la commande touch

2) Lister tous les fichiers

Se terminant par 5 ;

Commençant par annee4 ;

Commençant par annee4 et de 7 caractères ;

Commençant par annee et se terminant par chiffre numérique ;

Contenant la chaîne ann ;

Commençant par a ou A.

3) Créer les répertoires Year et tmp dans votre répertoire courant, en une

commande déplacez les fichiers précédemment créés dans le répertoire

Year.

4) Copier les fichiers dont l'avant dernier caractère est un 4 ou 1 dans le

répertoire tmp en une seule commande.

5) Répéter la commande de la question 4 en utilisant l'option i

6) Répéter la commande de la question 4 en utilisant l'option f

7) en une seule commande vider le contenue de votre répertoire courant

(travail).

Créé des fichiers et des répertoires.

Lister des fichiers.

Copier et déplacer des fichiers.

Savoir les différentes options du cp.

Vider le contenue du répertoire courant.

Page 6: Rapport des Travaux Pratiques UNIX

6

Syntaxe :

$touch [Nom du fichier]

Le signe > aussi permet de créer un fichier.

La commande « ls » :

ls liste les répertoires et les fichiers précisés dans noms. Par défaut, la sortie est

envoyée à l'écran par ordre alphabétique. Les options déterminent les informations à

afficher et présentation de l'affichage. Sans options, ls n'envoie que le nom des

fichiers. Si noms n'est pas précisé, c'est le répertoire courant qui est listé.

Syntaxe :

$ ls [options] [noms]

-R Traitement récursif

-a Tous les fichiers (y compris ceux qui commencent par un

point)

-d Affiche le nom des répertoires sans leur contenu

-l Format long (avec beaucoup de détails)

-nom est le nom d'un fichier ou d'un répertoire (avec ou sans

méta caractères)

Page 7: Rapport des Travaux Pratiques UNIX

7

La commande « cp » :

La commande cp copie le contenu de fichier1 dans fichier2 ;ou bien elle copie

source1 et source2 (etc...) dans répertoire .

Syntaxe :

cp [-i] [-p] fichier1 fichier2

cp [-i] [-p] [-r] source1 [source2...] répertoire

-i mode interactif, demande la confirmation avant écrasement.

-p conserve les dates du fichier source.

-r copies récursives de répertoires.

Source X représente le nom des fichiers ou répertoires à copier.

Attention ! Pour pouvoir copier un fichier/répertoire, vous devez avoir les droits suivants :

=>droits de lecture du fichier à copier ;

=>droits d'exécution sur le répertoire contenant le fichier à copier ;

=>droits d'écriture sur le répertoire de destination.

La commande « mkdir » :

La commande mkdir créé le répertoire spécifié sur la ligne de commande

(nouveau_répertoire ). Si l'un des répertoires intermédiaires n'existe pas, la

commande retourne un code d'erreur (exit statuts) sans créer le répertoire (sauf si

l'option -p est spécifiée).

Syntaxe :

mkdir [-p] nouveau_répertoire

-p permet de créer tous les répertoires intermédiaires qui

n'existeraient pas.

-répertoire représente le nom du répertoire à créer. C'est un

argument obligatoire.

Attention ! Pour pouvoir créer un répertoire, le répertoire d'origine doit

avoir les droits en écriture positionnés.

Page 8: Rapport des Travaux Pratiques UNIX

8

La commande « rmdir » :

La commande rmdir supprime le répertoire spécifié sur la ligne de commande

(répertoire). Si il existe des fichiers ou des sous répertoires, la commande retournera

un code d'erreur (exit statuts).

Syntaxe : rmdir [-p] [-s] répertoire

-p permet de détruire tous les sous-répertoires vides.

-s mode silencieux (aucun affichage).

répertoire représente le nom du répertoire à détruire. C'est un

argument obligatoire.

Attention ! Pour pouvoir supprimer un répertoire, le répertoire père doit

avoir les droits en écriture Positionnés.

La commande « rm » :

La commande rm supprime les fichiers spécifiés sur la ligne de commande. Si vous

n'avez pas les droits d'écriture sur fichier1, alors rm vous demandera de confirmer

votre action ; la réponse oui (y) détruira quand même le fichier (sous réserve d'avoir

les droits d'écriture sur le répertoire).

Syntaxe : rm [-f] [-i] [-r] fichier1 [fichier2...]

-i mode interactif, demande la confirmation avant chaque

suppression.

-f force la commande (aucune confirmation).

-r récursif (détruit tous les sous répertoires. ATTENTION)

La solution :

1) touch annee1 Annee2 annee4 annee45 annee41 annee510

2)

- $ls *5

- $ls annee4*

Page 9: Rapport des Travaux Pratiques UNIX

9

- $ls annee4?

- $ls annee[0-9]

- $ls *ann*

- $ls [a,A]* ou ls [aA]*

3) $mkdir -p Year tmp et $ mv [aA]* Year

4) $cp Year/* [41]? tmp

5) $cp -i *[1 4]? Year tmp

6) $cp -f *[1 4]? Year tmp

7) rm -r smis4

Exercice 2 :

Soit l’arborescence suivante :

/home/userxG

x

F1 F2

F11 F12 F13 F21 F22 F23

Page 10: Rapport des Travaux Pratiques UNIX

10

1) Dans votre répertoire personnel, crée en une seul commande les

répertoires. Ci-dessus en utilisant la commande mkdir avec l’option –P.

2) Créer le fichier ch1 dans le répertoire F22.

3) Copier ch1 dans F11 sous le nom ch2.

4) Lier ch2 à ch4 dans F13.

5) Modifier le fichier ch2 en utilisant la commande cat.

6) Afficher le contenue du fichier ch4 .

7) Supprimer le fichier ch2.

8) Quel est le nombre de liens pour chacun des fichiers suivants :ch1, ch4 .

9) Supprimer de deux façon les deux arborescences suivantes :F1 et F2

Objectifs :

Comment ca marche ?

La commande « cat » :

La commande cat visualise et/ou concatène les fichiers spécifiés sur la ligne de

commande. Par défaut, cat lit sur l'entrée standard et affiche le résultat sur la sortie

standard.

Syntaxe :

$ cat [fichier...]

Utiliser les commandes ln et savoir la différence

entre un lien dur et un lien symbolique.

Utiliser la commande mkdir avec l’option –p.

Utiliser la commande cat pour afficher ou modifier

le contenu d’un fichier

Page 11: Rapport des Travaux Pratiques UNIX

11

La commande « cd » :

La commande cd permet de changer le répertoire de travail. Si répertoire n'est pas

précisé, alors le nouveau répertoire de travail sera le répertoire de connexion

($HOME).

Syntaxe :

$ cd [répertoire]

Remarque :

La commande cd, comme toutes les commandes utilisant des répertoires,

permet de spécifier deux types de chemins :

et

utilisent notamment le répertoire '..' (Répertoire père).

Exemple :

cd ../rep1

les chemins absolus : il faut spécifier toute l'arborescence depuis la

racine.

Exemple :

cd /home/rep1

Page 12: Rapport des Travaux Pratiques UNIX

12

La commande « ln » :

Création d’un lien sur un fichier ou un répertoire. Un lien est un moyen

d'accéder à un même fichier ou un répertoire sous plusieurs noms ou à partir

de plusieurs répertoires. Attention un lien n'est pas une copie: si vous

modifiez le fichier alors tous les liens sur ce fichier seront modifiés.

Il existe deux sortes de liens: le lien physique et le lien symbolique (avec

l'option -s). Le lien physique ne peut adresser que des fichiers, alors que le

lien symbolique peut aussi lier des répertoires.

Dans le cas de lien physique, pour effacer le fichier, vous devez effacer tous les

liens qui pointent sur ce fichier. Par contre pour des liens symboliques, vous pouvez

effacer le fichier sans effacer les liens, mais alors ceux-ci seront invalides.

Syntaxe :

ln [-s] source destination

Page 13: Rapport des Travaux Pratiques UNIX

13

Solution :

1)

La ligne de commande mkdir F1/F11 peut fonctionner et créer le sous répertoire

F11 à condition que F1 existe.

2)

On peut créer le fichier ch1 avec la commande cat en tapant

Ensuite on tape ctrl+d pour sortir

3)

Dans ce cas là le fichier ch1 sera copier et renommer

4)

Page 14: Rapport des Travaux Pratiques UNIX

14

Dans ce cas là les contenus sont identiques. Les noms de fichiers ch4 et ch2

renvoient au même endroit sur le disque dur. Si on refait la même question avec

l’option –s alors on aura un lien symbolique.

ln –s F1/F11/CH2 F1/F13/ch4

Le contenu semble être identique, cependant, a propos du ch4, le disque dur ne

contient comme information que le nom du fichier sur lequel le lien pointe (ch2).

Dans quel cas ne peut-on pas faire de lien physique ?

On ne peut pas faire de lien dur vers un répertoire. Dans ce cas, il faut donc utiliser

un lien symbolique

5)

6)

Les contenues de ch4 et ch2 sont identiques.

7)

8)

Page 15: Rapport des Travaux Pratiques UNIX

15

la commande ls affiche après les droits d’accès d'un fichier le nombre de « noms »

que ce fichier possède : chaque création d'un nouveau lien en dur incrémente

(augmente) donc ce nombre d'une unité.

9)

La suppression est récursive c’est-à-dire que les répertoires sont supprimés ainsi

que leurs sous répertoires, etc.

Ça fonctionne pas parce que le répertoire F2 n’est pas vide .pour ce faire on peut

soit vider le contenue du répertoire F2 soit utiliser la commande rm.

Exercice 4 :

1) Dans votre répertoire courant, créez en une commande les fichiers

suivant : annee1 Annee2 annee4 annee45 annee41 annee510 en utilisant

la commande touch.

2) Dans votre répertoire courant, créez le répertoire R

3) Dans votre répertoire courant, copier la liste des fichiers et leur

attribues dont l'avant dernier caractère est un 4 ou 1 dans le fichier ch1

dans R.

4) Afficher le contenue de ch1.

5) Copier la date du système dans le fichier ch1 dans R.

6) Afficher le contenue de ch1.

7) Ajouter au contenu du fichier ch1, la liste des fichiers et leur attribues

dont l'avant dernier caractère est un 4 ou 1.

8) Que se passe-t-il si vous taper les commandes suivantes :

ls –l [Aa]* > ch2

wc < ch2

Page 16: Rapport des Travaux Pratiques UNIX

16

ls -l [Aa]* | wc

wc (imprime le nombre de lignes, de mots et de caractères fournis à

l'entrée standard .

Objectifs :

Comment ca marche ?

Les flux de redirections:

Sous les systèmes Unix, chaque processus possède trois sortes de flux de données:

l'entrée standard, (identifiant 0) qui permet d'envoyer des données au

programme,

la sortie standard (identifiant 1) qui est utilisée pour afficher les résultats d'un

programme,

la sortie standard des erreurs, (identifiant 2) qui permet d'afficher les

messages correspondant aux erreurs survenues lors de l'exécution du

programme.

Par défaut les deux flux de sortie sont envoyés sur le terminal de l'utilisateur (écran)

et l'entrée prend ses données depuis le clavier.

Savoir les différents types des flux de

redirections

Utiliser la commande « ls » avec l'option -l

Utilisation de la commande « wc »

Page 17: Rapport des Travaux Pratiques UNIX

17

Figure 1

Les trois flux standards peuvent être redirigés vers d'autres sources autres que le

clavier ou l'écran. Par exemple, on peut ordonner à un processus de diriger sa

sortie standard vers un fichier. Pour cela, les numéros des descripteurs (0

:l'entrée standard ,1 : sortie standard et 2 :sortie d'erreurs )de flux sont utilisés.

Rediriger la sortie standard

Quand on exécute une commande, le shell affiche le résultat sur la console de

sortie (l'écran par défaut). On peut rediriger cette sortie vers un fichier en utilisant

le signe >.

! Si le fichier existe déjà, il est écrasé sans demande de confirmation.

Concaténation

Ajouter les sorties d'un processus à la fin fichier et le crée s'il n'existe pas. en

utilisant le double signe >>.

Rediriger la sortie d'erreur standard

La redirection du flux de sortie d'erreur standard utilise les même signes, (c'est-à-

dire > et >>) mais précédés de l'identifiant du flux 2 (voir figure 1).

Page 18: Rapport des Travaux Pratiques UNIX

18

Exemple:

Rediriger l'entrée standard

Rediriger l'entrée standard permet d'entrer des données provenant d'un fichier au

lieu du clavier.

Autrement dit envoi le contenu d'un fichier à une commande.

Exemple cat < fichier (afficher le contenu de ce fichier)

Les tubes (pipe )

Le pipe | permet de rediriger la sortie standard d'une commande vers l'entrée

standard d'une autre commande.

Syntaxe: Commande 1 | commande 2

Vous pouvez écrire pipe | en combinant les touches Alt Gr + 6

ls -l affiche tous les attributs d’un fichier.

La commande « wc » :

La commande wc compte le nombre de lignes, mots, ou caractères d'un fichier texte

.Fichier n'est passé en paramètre, c'est l’entrée standard qui sera lue. Si aucune

option n'est précisée, alors wc compte le nombre de lignes, mots, et caractères du

fichier.

Page 19: Rapport des Travaux Pratiques UNIX

19

Syntaxe:

wc [option] [fichier...]

-l précise que c'est le nombre de lignes qui doit être compté

-w précise que c'est le nombre de mots qui doit être compté

-c précise que c'est le nombre de caractères qui doit être compté

Solution :

Mon répertoire courant est exercice3

1) Avec la commandes touch j'ai crée les fichiers annee1 annee2 ….

2) Avec la commandes mkdir j'ai créé le répertoire R.

$ mkdir R

3) rediriger la sortie standard vers un fichier.

La sortie standard de la commande ls –l:

Page 20: Rapport des Travaux Pratiques UNIX

20

Maintenait je redirige cette sortie standard vers le fichier ch1

4) afficher le contenu de ch1.

5) Copie la date de système en ch1

6) le contenu de ch1 est écrasé et remplacé par la date de système.

7) Ajouter au contenu du fichier c'est-à-dire utiliser le signe >>.

8) ls –l [Aa]* > ch2 : copie la liste des fichiers et leur attributs commence par a ou

A dans le fichier ch2.

Page 21: Rapport des Travaux Pratiques UNIX

21

wc < ch2 : compte le nombre de lignes, mots, et caractères du fichier ch2

ls -l [Aa]* | wc : permet de rediriger la sortie standard de commande ls -l

[aA]* vers l'entrée standard de la commande wc.

C'est-à-dire compter le nombre de lignes, mots, et caractères de tous les fichiers et

leurs attributs commence par a ou A.

Conclusion de question 8: La commande ls -l [Aa]* | wc est équivalent à les deux commandes ls –l [Aa]* > ch2 et wc < ch2.

Exercice 4 :

1) Ouvrer vi et tapé le texte suivant :

Comment se connecter sous UNIX ?

Le premier concept important à garder en mémoire avant de travailler

avec UNIX ou sa version PC Linux est qu’il s’agit d’un système multi-

utilisateurs. L’accès à la machine UNIX doit donc être contrôlé. Pour être

enregistré sous UNIX, il faut avoir un compte utilisateur (login, password)

crée par l’administrateur système. L’administrateur est un super

utilisateur qui a les droits de gestion du système (login root ou su).

2) Enregistrer ce fichier sous le nom de fiche1.

3) Ajouter le texte suivant :

Page 22: Rapport des Travaux Pratiques UNIX

22

Objectifs :

Comment ca marche ?

L’editeur de texte vi

Login : (Taper votre nom d’utilisateur)

Le système affiche alors le message :

password : (Vous devez alors rentrer votre mot de passe)

Trouver un bon mot de passe : Voici quelques conseils qui vous

permettront de trouver un mot de passe le plus sûr possible.

Utiliser des majuscules et des minuscules.

Utiliser des chiffres et des caractères spéciaux.

7 à 8 caractères de long

Concaténer des mots pour en créer un autre

4) Quitter vi en sauvegardant les modifications.

5) Rechercher toutes les lignes qui commence par le ou la.

6) Rechercher toutes les lignes qui contiennent des caractères écrits en

majuscule.

7) Rechercher dans tout le texte les occurrences d’utilisateur et remplacer

les par user.

8) Rechercher toutes les occurrences de * dans le texte.

Savoir comment utiliser la commande vi.

Utiliser la commande « grep » pour chercher et

afficher des lignes tout en utilisant ses options.

Utilisation de la commande « sed » pour remplacer

une chaine par une autre.

Page 23: Rapport des Travaux Pratiques UNIX

23

La commande «grep » :

La commande « grep » est une commande de recherche qui permet de

rechercher des lignes dans un fichier ou plusieurs.

Syntaxe :

$ grep[-civw] "modèle de critère" [fichier …]

-c (count) compte les lignes sans les afficher

-i considère les majuscules et minuscules de façon

identique

-v (reverse) cherche les lignes ne correspondant

pas au critère

-w (word) cherche modèle critère de comme un

mot isolé

Page 24: Rapport des Travaux Pratiques UNIX

24

La commande «sed » :

Commande de substitution

La commande sed permet d'effectuer des substitutions suivant

La syntaxe :

sed [adresse]s/expr régulière/remplacement/options.

Attention ! Contrairement à ce que l'on pourrait attendre, cette

commande laisse passer toutes les lignes et ne sélectionne pas celles

qui ont satisfait l'expression régulière et donc subi la substitution.

Pour sélectionner, voir la commande de destruction.

Options

Sans précision, la commande ne s'applique qu'à la 1ère occurrence de

chaque ligne.

0...9 : indique que la substitution ne s'applique qu'à la nième occurrence

g : effectue les modifications sur toutes les occurrences trouvées.

Exemple :

sed s/moi/toi/g fich.moi > fich.toi

le fichier fich.moi est parcouru, à chaque occurrence de "moi", ce mot est

remplacé par "toi" et le nouveau fichier est sauvegardé sous le nom fich.toi

Délimiteur :

Le slash / étant très utilisé au niveau du shell comme

séparateur de niveau de répertoire, il est possible d'utiliser à

la place tout autre caractère comme #

sed s#/home#/rep_perso#g /etc/passwd > /tmp/passwd.new

Page 25: Rapport des Travaux Pratiques UNIX

25

Destruction ou sélection

Cette option permet de filtrer les lignes qui satisfont une expression régulière.

Ces lignes ne sont pas détruites dans le fichier d'origine, mais ne sont pas

transmise en sortie.

Comment modifier alors le fichier à traiter ?

cp fichier copie

sed /.../d copie

Par exemple, pour détruire toutes les lignes vide d'un fichier :

sed /^$/d

Remplacement dans le VI :

La commande s/text_anc/texte_nouveau/g remplace les occurences de texte_anc par

texte_nouveau dans tout (à cause de g) le fichier courant.

Le point représente "tout caractère". L'astérisque désigne 0 ou n occurences.

L'accent circonflexe désigne le début de ligne. $ désigne la fin de ligne, [ ...] désigne un

intervalle et [^...] l'intervalle complémentaire, * désigne une répétition de caractères.

n1,n2s/chaine1/chaine2/g : idem pour les lignes de 1 à n2 ; ex. : 1,$s/avoir/être/g

Recherche dans le VI :

Pour rechercher un mot dans un document, il vous suffit (en mode normal) de taper / suivi de

la chaîne à rechercher, puis de valider par la touche entrée. Il est alors possible d'aller

d'occurrence en occurrence grâce à la touche n.

La solution :

1) vi

2) : w fiche1

3) vi fiche1

4) : x

5) - Vi : / ^ [Ll] [ae]

Page 26: Rapport des Travaux Pratiques UNIX

26

-Terminal $grep “[Ll][ea]“ fiche1

6) – Vi :/ [A-Z]

-Terminal $grep “[A-Z]“ fiche1

7) – Vi : 0,$ S/utilisateur/User/gci

-Terminal $sed ’s/utilisateur/user/g’ fiche1

Page 27: Rapport des Travaux Pratiques UNIX

27

8) – Vi :/*

-Terminal $grep “*“ fiche1

Note

Il y a d’autre éditeur de texte les plus célèbre sont :

Nano, Im et Emacs

Entre ces trois le plus facile a utiliser c’est Nano

Nano Le nom complet de Nano est GNU nano, en référence au projet

GNU. Il s'agit d'un logiciel qui s'inspire de pico un éditeur de texte plus

ancien qui se voulait lui aussi très simple d'utilisation. Pour démarrer le

logiciel, il vous suffit simplement de taper nano dans la console.

Emacs est un éditeur pleine page extensible, qui a de nombreuses

facilités interactives, qui possède une barre de menus et qui est toujours

en mode insertion. Il existe un grand frère encore plus convivial :

xemacs

Vim est un éditeur de texte plus évolue.

Page 28: Rapport des Travaux Pratiques UNIX

28

Exercice 5 :

1) Ouvrer vi et tapé le texte suivant:

Ali:13:022568779:Casablanca

Omar:55:022556378:Rabat

Adil:56:039884596:Tanger

Noureddine:80:022998766:Fes

Zakaria:89:023363398:Marrakech

Reda:79:022225262:Oujda

Mohamed:72:023055566:Eljadida

Boubker:72:022088089:Tanger

Khalid:79:022056595:Casablanca

Mustapha:89:022358856:Fes

Aziz:56:022569676:Eljadida

2) Sauvegarder ce contenu sous le nom carnet-adresse.

3) Ouvrir vi en éditant le fichier carnet-adresse et ajouter le texte suivant :

Saloua:80:022151113:Marrakech

Fatima:55:022198922:Rabat

Halima:13:022343533:Oujda

Nadia:56:022990939:Eljadida

Ilham:80:022897444:Fes

Fatiha:79:022568222:Oujda

Mina:13:023256978:Rabat

Khadija:56:055569955:Marrakech

Saadia:89:039568456:Casablanca

Imane:55:055562378:Tanger

Madiha:72:039256696:Oujda

4) Sauvegarder les modifications.

Le fichier carnet-adresse contient quatre champ : Le premier champ

représente le nom, le deuxième le code du département, le troisième le

numéro de téléphone et le dernier la ville. Attention le premier champ est

noté 0, le deuxième 1, ainsi de suite.

5) Compter le nombre ligne, mot et caractères du fichier carnet-adresse.

6) Créer le fichier carnet-adresseA qui contient les 10 lignes premières du

fichier carnet-adresse.

7) Ranger toutes les lignes par ordre alphabétique en effectuant un tri sur le

premier caractère du fichier carnet-adresse.

8) Effectuer un tri inversé sur le deuxième champ

9) Effectuer un tri sur le deuxième caractère du champ Numéro 4 (ville)

10) Créer en une seule commande le fichier carnet-adresse-tri qui contient les

10 premières lignes du tri sur le champ Numéro 4 (ville)

11) Extraire les 10 premiers caractères de chaque ligne du fichier carnet-

adresse.

12) Créer en une seule commande le fichier carnet-adresseB qui contient

Page 29: Rapport des Travaux Pratiques UNIX

29

deux champs de toutes les lignes.

13) Créer en une seule commande le fichier carnet-adresseC qui contient les

10 premiers caractères de toutes les lignes.

Objectifs :

Comment ca marche ?

La commande «head» :

La commande head affiche les n premières lignes d'un fichier

Syntaxe :

head [-n] [fichier...]

-n nombre de lignes à afficher depuis le début/la fin de

fichier

+n affichage à partir de la ligne numéro n

-f attente de nouvelles lignes (sortie par Ctrl-c)

La commande « sort » :

La commande sort trie les lignes des fichiers en arguments et affiche le résultat à

l'écran. Le clavier est lu si fichier est omis. Par défaut sort effectue un tri par ordre

alphabétique; mais les options

.

Découvrir la commande “head” et ses options.

Découvrir la commande “sort” et ses options.

Découvrir la commande “cut” et ses options.

Page 30: Rapport des Travaux Pratiques UNIX

30

Syntaxe :

sort [-ufnr] [-o fic] [fichier...]

-u permet de n'afficher qu'une seule fois les lignes

multiples

-f ne différencie pas les minuscules et MAJUSCULES

-n effectue un tri numérique

-r ordre décroissant

-o fic enregistre la sortie dans fic

La commande « cut » :

La commande cut de couper une partie d’un fichier et conserver uniquement une

partie de chaque ligne

Syntaxe : cut [option] fichier -c Extraire suivant le nombre de caractères -f Extraire suivant le nombre de champs -dx Le caractère x est le séparateur de

champs

La solution :

1) vi puis on tape i pour passer au mode insertion

Page 31: Rapport des Travaux Pratiques UNIX

31

2) Premièrement on clique sur la touche Echap pour passer au mode commande

après on sauvegarde notre fichier par :w carnet-adresse

3) vi carnet-adresse

i

4):w où bien :wq pour sauvegarder et quitter le vi au meme temps .

5)wc carnet-adresse

6)head -10 carnet-adresse > carnet-adresseA

7)sort carnet-adresse

8)sort –t: –k1 –rn carnet-adresse

9)sort –t: –k3 carnet-adresse

10)sort –t: -k3 carnet-adresse | head -10 > carnet-adresse-tri

11)cut –c 1-10 carnet-adresse

12)cut –d: -f1,3 carnet-adresse > carnet-adresseB

13)cut –c 1-10 carnet-adresse > carnet-adresseB

Exercice 6 :

Le fichier carnet-adresse de l’exercice précèdent (exercice 2) contient quatre champ : Le

premier champ représente le nom, le deuxième le code du département, le troisième le

numéro de téléphone et le dernier la ville. Attention le premier champ est noté 0, le

deuxième 1, ainsi de suite.

1) Ouvrer vi et tapé le texte suivant

13:informatique

55:comptabilité

56:commerciale

80:stock

Page 32: Rapport des Travaux Pratiques UNIX

32

89:fabrication

72:direction

79:maintenance

2) Sauvegarder ce contenu sous le nom departement.

Le fichier departement contient deux champs :

Le premier champ représente le code du département, le deuxième le nom du département,.

3) Créer en une seule commande le fichier departement-trie en effectuant un tri sur le

champ N° 1 (code du département) du fichier departement.

4) Créer en une seule commande le fichier carnet-adresse-trie en effectuant un tri sur le

champ N° 2 (code du département) du fichier carnet-adresse.

5) Faire la jointure entre les fichiers :

a) departement et carnet-adresse

b) departement-trie et carnet-adresse

c) departement et carnet-adresse-trie

d) departement-trie et carnet-adresse-trie

6) Editer le fichier departement et copier / coller tous les lignes à la fin du fichier. Et

sauvegarder les modifications dans le fichier departement-doublant.

7) Applique la commande uniq sur le tri du fichier departement-doublant pour éliminer les

lignes dupliquées.

8) Editer le fichier departement est remplace respectivement informatique, comptabilité

par info, compta. Sauvegarder les modifications dans le fichier departement-comm.

9) Applique la commande comm sur les fichiers departement et departement-comm. Pour

visualiser les lignes communes et non communes.

Page 33: Rapport des Travaux Pratiques UNIX

33

10) Applique la commande comm sur les fichiers departement et departement-doublant.

Pour visualiser les lignes communes et non commun

Objectifs :

Comment ça marche ?

La commande join :

La commande join permet d’effectuer une jointure de deux fichiers en fonction

d’un champ commun.les deux fichiers doivent être triés sur les champs indiqués.la

numérotation des champs démarre à 0.

Syntaxe :

$ join [-j1|2]m –tx [-o list] fichier1 fichier2

-j -j1 m champ m du fichier 1

- j1 m champ m du fichier 1

-o indique les champs que l’on souhaite

afficher.

-tx le caractère x est le séparateur de champ.

le plus simple est de prendre un exemple. Soit fich1 un fichier qui contient

Utiliser la commande uniq : sélection/rejet de

lignes consécutives en double

Faire la jointure entre deux fichiers

Utilisation d’une nouvelle commande comm :

sélection/rejet de lignes communes à deux

fichiers.

Page 34: Rapport des Travaux Pratiques UNIX

34

maroc 1 2

egypt 3 4

et fich2 un fichier qui contient

maroc 1991

egupt 1992

La commande join -j1 1 fich1 fich2 genèrera

maroc 1 1991

egypt 3 1992

La commande uniq :

La commande uniq recherche les lignes uniques ou dupliquées, à noter toutefois

qu’elle ne détecte que si de telles lignes sont adjacentes(en gros, il vaut mieux trier

le fichier avant de l’envoyer à cette commande !)

Syntaxe :

$ uniq fichier1

Sans option, la commande uniq renvoie le fichier passé en

argument en ayant enlevé les répétitions de lignes. Voici les

options disponibles :

-u N’affiche que les lignes uniqs.

-d N’affiche que ce qui n’est pas uniq.

-c Compte les lignes en double.

Page 35: Rapport des Travaux Pratiques UNIX

35

Solution :

1) vi

i

2)

3) On suppose qu’on a quitté le vi

On redirige directement la sortie de la commande vers le fichier département-tri

4)

Page 36: Rapport des Travaux Pratiques UNIX

36

5) a)

b)

c)

Page 37: Rapport des Travaux Pratiques UNIX

37

d)

Pour faire la jointure entre deux fichiers il faut que ces derniers soient triés et avoir

un champ commun donc la question d) est la seule qui est correcte

6)

6)

Page 38: Rapport des Travaux Pratiques UNIX

38

7)

Page 39: Rapport des Travaux Pratiques UNIX

39

8)

Page 40: Rapport des Travaux Pratiques UNIX

40

9)

10)

11)

Note

La commande join est un peu plus complexe : elle permet de fusionner des fichiers

à partir d'une clef commune. join va parcourir les deux fichiers ligne à ligne et

rechercher une clef présente

Page 41: Rapport des Travaux Pratiques UNIX

41

dans les deux fichiers. La sortie sera la fusion des deux fichiers lorsque la clef est

trouvée:

Si l'on a par exemple :

Fichier1 Fichier2 => column Fichier1 Fichier2 => Sortie

key1 a key1 b key1 a b

key2 c key2 d key2 c d

key3 y keyA z

=> les lignes 1 et 2 des fichiers sont fusionnées dans la sortie. Les lignes 3 n'ont pas

de correspondance et sont donc rejetées.

Exercice 7 :

1) Dans votre répertoire de travail personnel, créer un répertoire que vous

appellerez catalogue et les fichiers suivants : fich1, fich2, fich3, prog.c, f1.c,

f2.c.

2) Quels sont les droits d’accès attribués à ces fichiers.

3) Placez les valeurs de ces droits d’accès aux fichiers suivants

fich1 : rwxrw-r--

fich2 : r—r—r--

fich3 : --x--xr--

Utilisez les deux formes symbolique et octale.

4) Déplacez vous dans le répertoire catalogue et créez un fichier fich4 non

vide.

5) Comment appeler la commandes umask pour attribuer à tous les

Page 42: Rapport des Travaux Pratiques UNIX

42

nouveaux fichiers les droits d’accès ‘rw-r--r--‘.

6) Changer les modes d’accès de tous les fichiers qui ont une extension ’.c ‘

en ‘rw-r--r--‘.

7) Même chose en notation symbolique.

8) Supprimer le mode ‘x’ pour le groupe au niveau du fichier fich3.

9) Rajoutez le mode ‘w’ pour le propriétaire et enlevez ‘r’ aux autres du

fich3

10) Changer le propriétaire et le group de ce fichier.

Objectifs :

Comment ça marche ?

Les droits d'accès aux fichiers

Dans un système GNU/Linux, tout fichier se voit attribuer des droits pour 3 identités :

le propriétaire (user) c'est l'utilisateur qui a créé le fichier ou l'utilisateur que root a désigné comme propriétaire.

->Savoir c'est quoi les droits d'accès aux fichiers.

-> Comment changer les droits d'accès d'un fichier avec

ces deux commandes

Chmod

Umask

(En utilisant mode symbolique et mode numérique)

->Comment changer l'utilisateur et le groupe d'un fichier

(En savoir une condition importante pour les faire.)

Page 43: Rapport des Travaux Pratiques UNIX

43

le groupe (group):qui n'est pas forcément le groupe du propriétaire.

les autres (others):ceux qui ne font pas partie du groupe.

Attention! L'utilisateur propriétaire et le groupe propriétaire du fichier peuvent être indépendants La commande ls -l nous permet d'afficher les droits d'un fichier.

Type:

- pour un fichier normal

d pour un répertoire.

l un lien.

Les trois caractères d'un bloc sont les suivants, dans l'ordre :

r (read) : droit de lire le fichier / lister le contenu du répertoire w (write) : droit d'écrire dans le fichier / modifier le répertoire

(créer/supprimer des fichiers) x (execute) : droit d'exécuter le fichier (programme ou script) / ou

de traverser le répertoire (changer le répertoire courant).

Si l'un des droits n'est pas accordé, un tiret est affiché à sa place.

Page 44: Rapport des Travaux Pratiques UNIX

44

Modifier les droits d'accès

La commande "chmod " (abréviation de change mode)

permet de modifier les droits associés à un fichier.

Syntaxe:

mode symbolique

chmod [option] … [qui]op<permission(s)>……FILE

Option:

-c: n'affiche que les changements réalisés.

-f : supprime la plupart des messages d'erreur.

-v : liste les fichiers en cours de modification.

-R : modifie les modes des fichiers des sous-répertoires de manière récursive

mode numérique

Chmod [option] … MODE FILE…..

base octal basé sur des nombres de 0 à 7.

Page 45: Rapport des Travaux Pratiques UNIX

45

Base binaire (base 2)

Exemple:

Quelques permissions habituelles

Modifier les droits d'accès par défaut

Rappelons les règles simples de propriété qui s'appliquent à la création

d'un fichier ou d'un répertoire:

Page 46: Rapport des Travaux Pratiques UNIX

46

son propriétaire est l'utilisateur qui l'a créé

son groupe est le groupe primaire de ce même utilisateur

Mais quelles sont les permissions attribuées par défaut à l'utilisateur propriétaire, au groupe propriétaire et à tous les autres? Les permissions maximales accordées par un fichier est :666 (-rw-rw-rw-) et pour le répertoire est 777 (-rwxrwxrwx). On peut restreindre ces permissions lors de sa création. C'est le rôle de la commande umask de fixer les permissions masquées, autrement dit les droits non accordés aux fichiers et répertoires lors de leur création.

Exemple : de calcul de permissions effectives, affectées lors de la création d'un répertoire, par un utilisateur dont le masque de protection est 027 777 = 111 111 111 permissions maxi = rwx rwx rwx - 027 = 000 010 111 masque de protection = 750 = 111 101 000 permissions effectives = rwx r-x ---

Changer le propriétaire et le groupe La commande chown (change owner) change le propriétaire des fichiers (fichier ou répertoire). La commande chgrp change le groupe des fichiers.

Syntaxe : chown [-R] [-h] utilisateur nom [...] chgrp [-R] [-h] groupe nom [...]

-R récursif sur tous les fichiers et sous-répertoires contenus si nom est un répertoire -h traitement sur les liens symboliques Nom exprime le nom d'un fichier ou d'un répertoire utilisateur représente soit le nom de l'utilisateur, soit son UID (User IDentification).

Page 47: Rapport des Travaux Pratiques UNIX

47

groupe représente soit le nom du groupe, soit son GID (Group IDentification).

$ cd [répertoire]

Remarque :

Seul le root qui a le droit d'utiliser chown et chgrp. Pour passer root :taper en terminale sudo su Après entrer votre password

Solution :

Mon répertoire courant est exercice7:

mkdir exercice7

cd exercice7

1) mkdir catalogue

touch fich1 fich2 fich3 prog.c f1.c f2.c

2) ls –l exercice7

3) Forme symbolique :

fich1 : rwx rw- r-- : $chmod u=rwx,g=rw-,o=r-- fich1

fich2 : r-- r-- r-- : $chmod u=r-- ,g=r--,o=r-- fich2

Page 48: Rapport des Travaux Pratiques UNIX

48

fich3 :--x --x r-- : $chmod u=--x,g=--x,o=r-- fich3

Forme octale:

$chmod 764 fich1

$chmod 444 fich2

$chmod 114 fich3

4) cd catalogue

cat >> fich4

Merci Madame El filali

Ctrl d pour sortir

5) umask 022

Commentaire :

Si je crée un nouveau fichier s'appelle fich5, comme vous

remarquer les droits d'accès sont 'rw-r--r-- ' .

6) Mode octal:

chmod 644 *c

Mode symbolique:

chmod u=rw-,g=r--,o=r-- *c

7) chmod g-x fich3

Page 49: Rapport des Travaux Pratiques UNIX

49

8) chmod u-x ,o-r fich3

9) Exemple du nom des utilisateurs :

Exemple du nom des groupes:

Commentaire :

Comme vous remarquez, vous n'avez pas le droit de changer

l'utilisateur (même chose pour groupe) si vous êtes un simple

utilisateur .Il est nécessaire de passer en mode root (super utilisateur)

Page 50: Rapport des Travaux Pratiques UNIX

50

# : Super utilisateur

Exercice 8 :

1) Dans votre répertoire personne1, créer l’arborescence suivante :

2) Dans le répertoire F0 créez les fichiers suivants: fich01, fich02, fich03.

3) Dans le répertoire F1 créez les fichiers suivants: fich11, fich12, fich13.

4) Dans le répertoire F2 créez les fichiers suivants: fich21, fich22, fich23.

5) Dans le répertoire F3 créez les fichiers suivants: fich31, fich32, fich33.

6) Dans le répertoire F4 créez les fichiers suivants: fich41, fich42, fich43.

7) Dans le répertoire F5 créez les fichiers suivants: fich51, fich52, fich53.

Page 51: Rapport des Travaux Pratiques UNIX

51

Objectifs :

8) Dans le répertoire F6 créez les fichiers suivants: fich61, fich62, fich63.

9) Dans le répertoire F7 créez les fichiers suivants: fich71, fich72, fich73.

10) Quels sont les droits d’accés attribués aux répertoires et aux fichiers

de chaque répertoire.

11) Utilisez soit cat soit vi pour emplir respectivement les fichiers fich01,

fich11... fich71 de chaque répertoire par « bonjour fcih01 », « bonjour

fich11 », … « bonjour fich71 »

12) Placez les valeurs de ces droits d’accès aux répertoires suivants :

F0 : _ _ _ _ _ _ _ _ _

F1 : _ _ _ r _ _ _ _ _

F2 : _ _ _ _ w _ _ _ _

F3 : _ _ _ _ _ x _ _ _ _

F4 : _ _ _ r _ x _ _ _

F5 : _ _ _ _ w x _ _ _

F6 : _ _ _ r w _ _ _ _

F7 : _ _ _ r w x _ _ _

13) Appliquez les commandes ls et cd à chaque répertoire qu’est ce que

vous remarquez.

14) Dans votre répertoire du travail éditez les fichiers F0/fich01, F1/fich11,

… F7/fich71. Qu’est ce que vous remarquez.

15) Placez les valeurs de ces droits d’accès aux répertoires suivants :

F0 : _ _ _ _ _ _ _ _ _

F1 : r _ _ r _ _ _ _ _

F2 : _ w _ _ w _ _ _ _

F3 : _ _ x _ _ x _ _ _

F4 : r _ x r _ x _ _ _

F5 : _ w x _ w x _ _ _

F6 : r w _ r w _ _ _ _

F7 : r w x r w x _ _ _

16) Appliquez les commandes ls et cd à chaque répertoire. Qu’est ce que

vous remarquez ?

17) Dans votre répertoire du travail éditez les fichiers F0/fich01, F1/fich11,

… F7/fich71. Qu’est-ce que vous remarquez ?

Le but est : quand on a le droit d’utiliser les

deux commandes « cd » & « ls » ?

Page 52: Rapport des Travaux Pratiques UNIX

52

Comment ça marche ?

mkdir -p une commande qui nous permet de créer une arborescence

(des répertoires qui sont fournis en argument).

chmod permet à un propriétaire ou à l’administrateur de modifier les

droits de ces fichiers.

ls affiche les attributs d’un fichier.

ls -l affiche tous les attributs d’un fichier.

cd changement de répertoire courant

Page 53: Rapport des Travaux Pratiques UNIX

53

cat > nom_fichier cette commande nous aide

d’ajouter des infos à nos fichiers comme le fichier

« nom_fichier ».

Solution :

4) mkdir -p Rep/F0 Rep/F1 Rep/F2 Rep/F3 Rep/F4 Rep/F5

Rep/F6 Rep/F7

5) touch Rep/F0/fich01 Rep/F0/fich02 Rep/F0/fich03

6) touch Rep/F1/fich11 Rep/F1/fich12 Rep/F1/fich13

7) touch Rep/F2/fich21 Rep/F2/fich22 Rep/F2/fich23

8) touch Rep/F3/fich31 Rep/F3/fich32 Rep/F3/fich33

9) touch Rep/F4/fich41 Rep/F4/fich42 Rep/F4/fich43

10) touch Rep/F5/fich51 Rep/F5/fich52 Rep/F5/fich53

11) touch Rep/F6/fich61 Rep/F6/fich62 Rep/F6/fich63

12) touch Rep/F7/fich71 Rep/F7/fich72 Rep/F7/fich73

Page 54: Rapport des Travaux Pratiques UNIX

54

Vérifiant la création de fichier

13) ls –l

14) vi Rep/F0/fich01 i “bonjour fich01” :x

vi Rep/F0/fich02 i “bonjour fich02” :x

vi Rep/F0/fich03 i “bonjour fich03” :x

vi Rep/F1/fich11 i “bonjour fich11” :x

vi Rep/F1/fich12 i “bonjour fich12” :x

vi Rep/F1/fich13 i “bonjour fich13” :x

Page 55: Rapport des Travaux Pratiques UNIX

55

vi Rep/F2/fich21 i “bonjour fich21” :x

vi Rep/F2/fich22 i “bonjour fich22” :x

vi Rep/F2/fich23 i “bonjour fich23” :x

vi Rep/F3/fich31 i “bonjour fich31” :x

vi Rep/F3/fich32 i “bonjour fich32” :x

vi Rep/F3/fich33 i “bonjour fich33” :x

cat > Rep/F3/fich33 “bonjour fich33” Ctrl+D

cat > Rep/F4/fich41 “bonjour fich41” Ctrl+D

cat > Rep/F4/fich42 “bonjour fich42” Ctrl+D

cat > Rep/F4/fich43 “bonjour fich43” Ctrl+D

cat > Rep/F5/fich51 “bonjour fich51” Ctrl+D

cat > Rep/F5/fich52 “bonjour fich52” Ctrl+D

cat > Rep/F5/fich53 “bonjour fich53” Ctrl+D

cat > Rep/F6/fich61 “bonjour fich61” Ctrl+D

cat > Rep/F6/fich62 “bonjour fich62” Ctrl+D

cat > Rep/F6/fich63 “bonjour fich63” Ctrl+D

cat > Rep/F7/fich71 “bonjour fich71” Ctrl+D

cat > Rep/F7/fich72 “bonjour fich72” Ctrl+D

cat > Rep/F7/fich73 “bonjour fich73” Ctrl+D

15) chmod 000 Rep/F0

chmod 040 Rep/F1

chmod 020 Rep/F2

chmod 010 Rep/F3

chmod 050 Rep/F4

chmod 030 Rep/F5

chmod 060 Rep/F6

chmod 070 Rep/F7

Page 56: Rapport des Travaux Pratiques UNIX

56

16) cd Rep /F0 entrée

ls Rep/F0 entrée

cd Rep /F1 entrée

ls Rep/F1 entrée

cd Rep /F2 entrée

ls Rep/F2 entrée

cd Rep /F3 entrée

ls Rep/F3 entrée

cd Rep /F4 entrée

ls Rep/F4 entrée

cd Rep /F5 entrée

ls Rep/F entrée

cd Rep /F6 entrée

ls Rep/F6 entrée

cd Rep /F7 entrée

ls Rep/F7 entrée

Page 57: Rapport des Travaux Pratiques UNIX

57

Les deux commandes « ls » et « cd » ne vont pas marcher parce qu’on a

changé les droits d’accès de chaque répertoire dans la question

précédente.

17) Pour cette question on n’a pas le droit d’éditer ces fichiers

F0/fich01, F1/fich11, …, F7/fich71.

18) chmod 000 Rep/F0

chmod 440 Rep/F1

chmod 220 Rep/F2

chmod 110 Rep/F3

chmod 550 Rep/F4

chmod 330 Rep/F5

chmod 660 Rep/F6

chmod 770 Rep/F7

19)

cd Rep /F0

ls Rep/F0

cd Rep /F1

ls Rep/F1

cd Rep /F2

ls Rep/F2

cd Rep /F3

ls Rep/F3

cd Rep /F4

ls Rep/F4

cd Rep /F5

ls Rep/F

cd Rep /F6

ls Rep/F6

cd Rep /F7

ls Rep/F7

Page 58: Rapport des Travaux Pratiques UNIX

58

Exercice 9:

1) Ouvrer vi et tapé le texte suivant

ali:13:022568779:Casablanca

omar:55:022556378:Rabat

adil:56:039884596:Tanger

noureddine:80:022998766:Fes

boubker:72:022088089:Tanger

khalid:79:022056595:Casablanca

aziz:56:022569676:Eljadida

2) Sauvegarder ce contenu sous le nom carnet-adresse.

3) Afficher les lignes commençant par les caractères

compris entre a et d.

4) Afficher les lignes contenant la chaîne de caractères

Casablanca.

Objectifs :

Comment ça marche ?

La commande « grep » :

La commande grep permet de rechercher expression dans fichier .Elle affiche

les noms de fichiers ainsi que les lignes contenant expression.

Syntaxe :

grep [-ilsfv] expression [fichier...]

-i ne tient pas compte des minuscules et des

MAJUSCULES

-l n'affiche que le nom des fichiers (pas les

lignes)

Utilisation de la commande « grep » pour chercher

et afficher des lignes tout en utilisant ses options.

Page 59: Rapport des Travaux Pratiques UNIX

59

-s pas de message d'erreur sur les fichiers inaccessibles

-f fich spécifie un fichier contenant les expressions rechercher

-v affiche toutes les lignes, sauf celles qui contiennent l'expression.

expression chaîne de caractères (ou expression régulière non

abordée dans ce cours)

fichier nom des fichiers à traiter.

Solution :

1)Vi

2) :w carnet-adresse

3)sous le vi :

/ ^ [a-d]

Sous le terminal :

4)sous le vi :

/casablanca

Pour recherche

Signifier le début

Page 60: Rapport des Travaux Pratiques UNIX

60

Sous le terminal

grep casablanca carnet-adresse

Exercice 10 :

1) Dans votre catalogue de travail, créer un fichier grepo, qui contient le

texte suivant :

Janvier

Février

Mars

Avril

Mai

Juin

Juillet

Septembre

Novembre

Décembre

Août

Rechercher les lignes ayant les caractéristiques suivantes :

- Le caractère "vr" à un endroit quelconque.

- Le texte "mbre" en fin de ligne.

- Le caractère "a" en début de ligne qu’elle soit en minuscule ou

majuscules.

- La chaîne de caractère "mai" est seule dans la ligne qu’elle soit en

minuscule ou majuscules.

Page 61: Rapport des Travaux Pratiques UNIX

61

2) Copier le fichier /etc/passwd dans votre répertoire courant. Rechercher

dans ce fichier l’ensemble des lignes qui commencent par votre nom

d’utilisateur.

En déduire les informations qui concernent votre compte utilisateur.

3) Dans ce même fichier rechercher les lignes qui identifient les utilisateurs

ne faisant pas partie du même groupe que vous.

4) Donner la liste des utilisateurs dont le UID varie entre 500 et 599

5) Le nombre d’utilisateurs qui utilisent comme programme initial dans

passwd le /bin/bash

6) Donner la liste des utilisateurs dont le nom contient la lettre à qui se

répète 2 fois

7) tous les utilisateurs dont le champ commentaire n’est pas vide

8) La ligne de commande suivante retourne le nombre de lignes du fichier

Liste qui contiennent la chaîne de caractères em :

$ grep –c "em" liste

Donner la ligne de commande qui permet d’aboutir au même résultat sans

l’option –c.

Objectifs :

Solution :

comprendre en détails le contenu du fichier

passwd.

Effectue des recherches avec la commande grep.

Page 62: Rapport des Travaux Pratiques UNIX

62

1)

2) a-

b-

c-

d-

3)

Page 63: Rapport des Travaux Pratiques UNIX

63

Les informations de mon compte :

1. Username :pubunto

2. Mot de passe, encrypté :x

3. user id numérique :1000

4. group id numérique :1000

5. Nom complet ou autre description du compte :1000

6. Répertoire d'accueil :/home/pubuntu

7.Shell de login (programme lancé au login) :/bin/bash

4)

Page 64: Rapport des Travaux Pratiques UNIX

64

5)

6)

7)

Page 65: Rapport des Travaux Pratiques UNIX

65

8)

Note

La base de données utilisateurs d'un

système UNIX est le fichier texte /etc/passwd

(appelé le fichier password), qui énumère

tous les usernames valides avec les

informations qui leur sont associées. Ce

fichier possède une ligne par username,

divisée en sept champs délimités par le

caractère `:' :

Page 66: Rapport des Travaux Pratiques UNIX

66

Exercice 11 :

Objectifs :

1) Afficher tous les fichiers qui commencent par ‘a’`majuscule ou

minuscule.

2) Afficher tous les fichiers qui se composent de 3 caractères dont le

dernier est ‘M’.

3) Sauvegarder tous les noms de fichiers se terminant soit par a, b ou c

dans un fichier F1.

4) Créer les fichiers suivants dans un répertoire :a1, a2, a3……a9 et

afficher les 5 premiers

5) Afficher tous les noms de fichiers répertoires commençant par une

lettre majuscule.

6) Afficher tous les noms de fichiers de l’utilisateur « webmaster1 » qui

appartient au groupe « webos ».

7) Afficher tous les fichiers normaux ayant pour taille plus de 150 Ko.

8) Afficher tous les fichiers dont les dernières modifications remontent à

moins de trois jours.

9) Afficher tous les répertoires ayant les autorisations d’accès ‘rwxr-xr-x ‘.

10) Supprimer tous les fichiers auxquels vous n’avez pas accédés depuis

plus de deux semaines.

11) Afficher tous les fichiers répertoires ou les fichiers dont le nom se

termine par le caractère ‘a’.

12) Afficher tous les fichiers qui n’appartiennent pas a l’utilisateur

« userxg1 ».

Page 67: Rapport des Travaux Pratiques UNIX

67

Comment ça marche ?

find :

La commande find permet de rechercher un fichier dans l'arborescence à partir du

point spécifié.

Syntaxe :

find répertoire option1 [option2...]

-name fich recherche sur le nom fich

-size n recherche sur la taille en blocs

-ctime n recherche sur la date de création

-exec cmd {} \; exécute la commande cmd sur les fichiers trouvés

-print affiche le résultat de la recherche

! négation du critère de recherche

Exemple :

$ find $HOME - name "vil*" -print

$ find . -print| cpio -ocvB / dev/streamer

$ find / -name "profile*" - exec pg \; \;

Remarque :

{ }

Pour bien maitriser les différentes utilités de la

commande find.

Page 68: Rapport des Travaux Pratiques UNIX

68

Après -exec, on peut utiliser n'importe quelle commande en la faisant suivre de

"\;". Par exemple : find source -perm 777 -type f -exec rm {}\;

Solution :

1) $find / -name "[a-A] *" -print

2) $find / -name "??M" -print

3) $find / -name "*[a b c] " > F1

4) $touch a1 a2 a3 a4 a5 a6 a7 a8 a9|find -name "a[1-5]"

5) $find / -type d - name "[A-Z] *"

6) $find / -user "webmasters1" -a -group "webos"

7) $find /-type f -size "+150K"

8) $find /-type f -mtime -3

9) $find /-type d -perm 755

10) $find /-type f -atime +15 -exec rm

Page 69: Rapport des Travaux Pratiques UNIX

69

11) $find /(-type d -o type f) -name "*a"

12) $find ! -user "user xg"

Note

Il y a une autre commande qu’on peut l’utiliser

pour effectuer une recherche rapide .cette

commande s’appelle locate (localiser)

Son utilisation est tres simple il suffit de d’ecrire

locate suiver par le nom du fichier que vous

voulez retrouver.

Pour rechercher un fichier sur tout le disque, la commande locate est très

rapide mais ne trouvera pas les fichiers qui viennent d'être créés dans la

journée. On peut mettre à jour la liste des fichiers qu'elle connaît en

appelant updatedb.(précédé par sudo)

_ find est une commande plus puissante mais plus lente qui va parcourir votre

disque à la recherche de vos fichiers. Elle peut s'utiliser avec trois paramètres, dans

l'ordre :

où chercher, que chercher et que faire avec.

Page 70: Rapport des Travaux Pratiques UNIX

70

Exercice 12 :

1) Ecrire un script shell qui donne le nombre de sous répertoire et

de fichier en partant du niveau courant.

2) Ecrire un script shell qui donne le nombre de sous répertoire et

de fichier contenus dans une arborescence dont le chemin sera

donné en paramètre.

3) Ecrire un script shell qui donne le nombre de sous répertoire et

de fichier contenus dans une arborescence dont le chemin sera

demandé à l‟utilisateur.

4) Même chose que pour la question 3 en vérifiant que le nom du

répertoire de départ est valide.

5) Ecrire un script shell qui donne poue une arboresence donné le

nombre de fichiers exécutables, de fichiers accessibles en lecture,

et de fichiers accessibles en écriture.

6) Faire un script qui crée un certain nombre de fichiers, ce

nombre étant passé en paramètre (fich00, fich01, fich02, …).

Faire un script shell qui donne les informations suivantes:

- Nom de l‟utilisateur

-Son groupe

-Son programme initial (son shell)

- Catalogue de travail En utilisant les fichiers /etc/passwd et

/etc/group.

Objectifs :

Page 71: Rapport des Travaux Pratiques UNIX

71

Comment ça marche ?

Programmation Shell:

Le shell c'est un programme qui se trouve dans le répertoire /bin. Et ce que l’on

appel un « Interpréteur de commandes ».

dans la programmation shell on travaille avec un éditeur du texte de notre choix

(script).

La syntaxe générique d'une commande shell est :

commande [options [argument1 [argument2 [... ]]]]

- # ! / bin / bash : c’est pour initialiser le programme en Shell.

- chmod +x : ajouter le droit d’exécution en fichier.

- . / Nom du fichier : exécution le script.

Où bien sans rendre le script exécutable on peut utiliser la syntaxe

suivante $sh nom_script où $bash nom_script

En Bash la syntaxe plus générale de if est:

if test condition_1 # ou if [ condition_1 ]

then

commandes1

[ elif test condition_2 ; then commandes ]…

[ else commandes3 ]

fi # l'envers de if (fin de bloc)

la syntaxe plus générale de case :

Comment utiliser la programmation Shell.

savoir compter avec des scripts Shell par différentes

façons : Les nombres de fichiers Les nombres de

répertoires

Page 72: Rapport des Travaux Pratiques UNIX

72

Case $variable in

Valeur1)

Commande1;;

Valeur2)

Commande2;;

….….

*) # tous les autres cas

Commande;;

esac # (l'envers de case) ( Fin de bloc case )

la syntaxe de while

while condition

do

commandes

done

la syntaxe de until

Until condition

do

commandes

done

Solution :

1) sous vi :

Vi exo12-1

Page 73: Rapport des Travaux Pratiques UNIX

73

: wq

Sous terminal :

Chmod +x exo12-1

Rendre le fichier exécutable pour avoir le droit d’exécution du script

. /exo12-1

2) sous vi :

vi exo12-2

: wq

Sous terminal :

chmod +x exo12-2

. /exo12-2 $HOME

3) sous vi :

vi exo12-3

Page 74: Rapport des Travaux Pratiques UNIX

74

sous terminal :

sh exo12-3

4)sous vi :

Page 75: Rapport des Travaux Pratiques UNIX

75

5)vi exo12-5

#! /bin/bash

echo tapez un chemin valide

read chemin

nb-r=0

nb-w=0

nb-x=0

6)vi exo12-6

#! /bin/bash

for i in ‘seq 0 $1’ for (i=0 ;i<$1 ;i++)

do

touch fich 0 $i

done

7)vi exo12-7

Page 76: Rapport des Travaux Pratiques UNIX

76

#! /bin/bash

sort –t : +3 -4 –n / etc / passwd > passwd-tri

sort –t : +2 -3 –n/ etc / groupe > groupe-tri

joint –t : -j14 –j23 –o 1.1 2.1 1.7 1.6 passwd-tri groupe tri |grep ” ^$1 “

Page 77: Rapport des Travaux Pratiques UNIX

77

L'idée force était de familiariser le lecteur avec ce que

fait Linux quand il exécute une commande. Ce qui citer ici

ne gère pas toutes les fonctionnalités que bash prennent

en charge. La gestion des touches Tab, Page Haut/Bas,

comme on le voit dans bash peut être implémentée.

D'autres fonctionnalités comme la prise en charge de la

programmation shell, la modification des variables

d'environnement pendant la durée d'exécution, etc. sont

essentielles. Une étude attentive du code source

de bash n'est pas une tâche aisée en raison des diverses

complexités impliquées, mais elle vous aidera à

développer un interpréteur de commandes très complet.

Page 78: Rapport des Travaux Pratiques UNIX

78