Sujet 103: Commandes GNU et Unix

Page 1 sur 62Lecteur de document UniversityLib

Sujet 103: Commandes GNU et Unix

Linux Command Line Operations · notes

Voir tous les documents en systèmes d'exploitation et cloud

Sujet 103 : Commandes GNU et Unix

 103.1 Travailler en ligne de commande (Weight 4)

 103.2 Contrôler des flux de texte à l'aide des filtres (Weight 3)

 103.3 Effectuer la gestion de base des fichiers (Weight 4)

 103.4 Utilisation des flux, des tubes (pipes) et des redirections (Weight 5)

 103.5 Création, surveillance et destruction de processus (Weight 5)

 103.6 Modifier la priorité d'exécution d'un processus (Weight 3)

 103.7 Recherche sur des fichiers texte avec des expressions régulières

(Weight 2)

 103.8 Édition de fichiers texte avec "vi" (Weight 3)

ziedbouziri.com

1

Travailler en ligne de commande

ziedbouziri.com

2

Travail en ligne de commande

 Description : Les candidats doivent être capables de travailler en ligne de commande.

l'utilisation du shell bash sera traité dans cet objectif.

 Termes, fichiers et utilitaires utilisés :

● bash

● echo

● env

● exec

● export

● pwd

● set

● unset

● uname

● history

ziedbouziri.com

3

bash

 Bourne-again shell compatible avec sh, avec des fonctionnalités de ksh, csh

 un shell est un programme qui exécute des programmes et permet aussi de

construire d'autres programmes appelés scripts.

 prompts

salah@Bagdad:~> echo $PS1

\u@\h:\w>

salah@Bagdad:~> echo $PS2

>

ziedbouziri.com

4

Séquences de commandes

 Exécuter séquentiellement des commandes l'une après l'autre :

– cmd1 ; cmd2

 Exécuter cmd2 si et seulement si cmd1 s'est exécutée sans erreur

– cmd1 && cmd2

 Exécuter cmd2 si et seulement si cmd1 a renvoyé une erreur :

– cmd1 || cmd2

 & en fin de commande permet de lancer cette commande en tâche de fond

(background) – firefox &

ziedbouziri.com

5

Variables

 Variables d'environnement : connues de toutes les commandes les commandes

lancées depuis le shell.

salah@Bagdad:~> PS1="[\t][\u]\$"

[10:12:32][salah]$

 variable simple :

$ formation="lpi"

$ echo $formation

lpi

 Rendre la variable visible pour les shells fils :

$ export formation

 Afficher toutes les variables d'environnements : $ env

 Afficher les variables simples et les variables d'environnement : $ set

 Effacer une variable : $ unset formation

ziedbouziri.com

6

Quelques variables d'environnement bash

Variable

Fonction

USER

UID

HOME

?

#

1,2....

0

le nom de l'utilisateur courant

UID de l'utilisateur courant

Le repertoire de connexion de l'utilisateur courant

Le code d'erreur de la dernière commande

Le nombre de paramètres à l'appel du script

les paramètres du script

le nom du script

ziedbouziri.com

7

quotes et variables

 Quote double : Permet la substitution des variables

$ echo "mon repertoire est $HOME"

mon repertoire de connexion est /home/salah

 Quote simple : Désactive l'interprétation des caractères spéciaux

$ echo 'mon repertoire de connexion est $HOME'

mon repertoire est $HOME

 Quotes inversées : Permet la substitution des commandes

$ echo "mon repertoire courant est `pwd`"

mon repertoire courant est /tmp

ziedbouziri.com

8

Raccourcies claviers

 history

 HISTSIZE

 HISTFILE

ziedbouziri.com

9

Raccourcies claviers, commandes Emacs

ziedbouziri.com

10

Contrôler des flux de texte à l'aide des filtres

ziedbouziri.com

11

Traitement de flux de type texte par des filtres

 Description : Les candidats doivent être capables d'appliquer des filtres à un flux de type

texte.

 Termes, fichiers et utilitaires utilisés :

● cat

● cut

● expand

● fmt

● head

● od

● join

● nl

● paste

●

pr sed sort split tail tr unexpand uniq wc

ziedbouziri.com

12

Filtres (1)

cut Extraire des champs

nl Numéroter les lignes

cat, less, more Afficher le contenu

sort Trier les lignes

tail / head Afficher l'enête / enqueue

Fichier Texte

wc Afficher le nombre d'octets, de mots et de lignes

ziedbouziri.com

13

cat et tac

 Affiche le contenu d'un fichier.  Exemple fichier1

1 un 2 deux 3 trois

$ cat fichier1 $ tac fichier1

ziedbouziri.com

14

head et tail

 head : Afficher le début d'un fichier (par défaut les 10 premiers

lignes)

 Exemple

$ head -3 /var/log/messages

 tail : Afficher la dernière partie d'un fichier (par défaut les 10 derniers

lignes)

 Exemples :

$ tail -c20 /etc/passwd

$ tail -f /var/log/messages

Publicité

ziedbouziri.com

15

cut

 Permet d'afficher certains champs d'un fichier donné  Exemple :

$ cut -d: -f1 /etc/passwd

ziedbouziri.com

16

nl

 Numéroter les lignes d'un fichier.  Exemples :

$ nl /etc/passwd $ ls | nl -s')'

ziedbouziri.com

17

sort

 Trier les lignes d'un fichier texte

 options

● -d : Trier dans l'ordre alphabétique ● -n : Trier dans l'ordre numérique ● -r : Inverser l'ordre

 Exemples :

$ sort /etc/passwd

– trier selon le champs RSS (resident size)

$ ps aux | sort -k 6 -n

ziedbouziri.com

18

wc

 Afficher le nombre d'octets, de mots et de lignes d'un fichier.

 Options

● -c : Afficher uniquement le nombre d'octets ● -m : Afficher uniquement le nombre de caractères ● -l : Afficher uniquement le nombre de lignes ● -w : Affiche uniquement le nombre de mots

 Exemples :

$ wc -l fich

$ wc -w fich

$wc fich

ziedbouziri.com

19

Filtres (2)

paste

Regrouper les lignes

join Jointure des lignes

Fichier Texte

split Découper un fichier

ziedbouziri.com

20

paste

 Regrouper les lignes de différents fichiers.

 Exemple :

–

file1

1

2

3

–

file2

A

B

C

$ paste file1 file2

1 A

2 B

3 C

ziedbouziri.com

21

paste (suite)

$ paste -d'@' file1 file2

1@A

2@B

3@C

$ paste -s file1 file2

1 2 3

A B C

ziedbouziri.com

22

join

 Fusionner les lignes de deux fichiers ayant un champ commun.

 Exemple : file1 :

–

1 one 2 two 3 three

–

file2 :

1 11 2 22 3 33

– $ join -j 1 file1 file2

1 one 11 2 two 22 3 three 33

ziedbouziri.com

23

split

 Découper un fichier en différentes partie.

 Exemple1 :

–

file1 :

1 one

2 two

3 three

4 four

5 five

6 six

$ split -2 file1 splitout_

==> créer trois fichiers splitout_aa, splitout_ab, et splitout_ac

 Exemple 2 : Découper un fichier en plusieurs de taille maximale d'une disquette :

$ split -b 1.4m grosfichier petitfichier_

ziedbouziri.com

24

Filtres (3)

fmt Formater les paragraphes

expand (vs unexpand)

Convertir les tabulations en espaces

od Afficher en format octal

Fichier Texte

tr Convertir des caractères

●Mise en forme pour l'impression.

pr

ziedbouziri.com

25

expand

 Convertir les tabulations d'un fichier en espaces.  unexpand fait le processus inverse.  Exemple : convertir les tabulations en 2 espaces:

$ expand -t 2 monfichier

ziedbouziri.com

26

fmt

 Formater les paragraphes dans un fichier.

 options :

● -u : Espacement uniforme. Réduire les espacements entre les mots

à une espace

● -w : Remplir les lignes jusqu'à la largeur mentionnée (par défaut

75 colonnes)

 Exemple :

$ fmt -w 80 myfile.txt > myfile80wide.txt

ziedbouziri.com

27

od

 Afficher le contenu d'un fichier en octal ou sous d'autres formats (decimal, hexadecimal,

ASCII)

 option :

-t type Sélectionner le format d'affichage des résultats selon le type :

● a : caractères littéraux ● c : caractères ASCII ou séquences d'échappement préfixées par

BackSlash ● o : valeurs octales ● u : valeurs décimales non signées ● x : valeurs hexadécimales

 Exemples :

$ od -t a file1

$od -t c file1 $ od -t x1 file1

ziedbouziri.com

28

pr

 Mettre en forme des fichiers de texte pour l'impression.

 Quelques options :

-wN : Indique le nombre de caractères par lignes (72)

-lN : Indique le nombre de lignes par page (66).

-hTexte : le Texte doit remplacer le nom de fichier dans l'en-tête

de chaque page.

-n : numérote les ligne

-m : imprimer tous les fichiers en parallèle un par colonne

 Exemples

$ pr -hLPI rapport.txt | lp

$ pr -m budget.oct budget.nov | lp

ziedbouziri.com

29

tr

 Pour effectuer des conversions de caractères (exp minuscule/majuscule, ...)

 Exemples :

– $ cat file1 | tr 'a-z' 'A-Z' OU $ cat file1 | tr '[:lower:]' '[:upper:]' – la suppression des accents d'un texte : – cat file1 | tr 'àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ' 'aceeeeiioouuACEEEEIIOOUU' – Convertir les séquences de sauts de lignes en un seul saut de ligne (ceci

supprime les lignes blanches) :

Publicité

● cat file1 | tr -s '\n'

ziedbouziri.com

30

Gestion de fichiers

ziedbouziri.com

31

Effectuer une gestion de base sur les fichiers.

 Description : Les candidats doivent être capables d'utiliser les commandes Linux de base

pour gérer les fichiers et les répertoires.

 Termes, fichiers et utilitaires utilisés :

tar cpio dd file gzip gunzip bzip2

● cp

● find

● mkdir

● mv

● ls

● rm

● rmdir

● touch

●

ziedbouziri.com

32

Inodes

 Associer à chaque objet du système de fichier un inode (The

identification information for filesystem object)

 Un inode regroupe des informations sur l'objet du système de fichiers :

localisation, date de modification, paramètres de sécurité....

 Chaque système de fichier ext2 est crée avec un nombre fini d'inodes

calculé selon la taille du système de fichier et d'autres options passées à la commande mke2fs.

 plusieurs objets du système de fichiers peuvent partager le même

inode : lien physique

ziedbouziri.com

33

Commandes de base

 pwd : Afficher le chemin absolu du répertoire courant

 cd : changer de répertoire

 ls : lister le contenu d'un répertoire

 mkdir : créer un nouveau répertoire

 rmdir : supprimer un répertoire

 touch : changer les informations de date et de d'heure d'un fichier; créer un fichier

vide lorsque le fichier passé en argument n'existe pas.

 cp :copier un fichier

 mv : Déplacer ou renommer un fichier

 rm : supprimer un fichier.

ziedbouziri.com

34

Utiliser les wildcards

 Besoin de manipuler plusieurs fichiers à la fois,

 Par exemple : cas d'un développement en C et pour être sure de recompiler tous les

fichiers sources.

Wildcards * ?

Descriptions

désigne 0 ou plusieurs caractères Désigne exactement un seul caractère

[caractères] Désigne un seul caractère de la liste [caractères] [!caractères] Désigne un seul caractère en dehors de la liste [caractères]

[a-z]

[!a-z]

Désigne un seul caractère appartenant à l'intervalle de caractères défini entre [ ] Désigne un seul caractère n'appartenant pas à l'intervalle de caractères défini entre [ ]

Exemples x* x? x?? x[yz] x[!yz]

x[0-9] x[a-zA-Z]

{frag1,frag2,..} brase expansion

file_{one,two,three}

ziedbouziri.com

35

Tubes et les redirections

ziedbouziri.com

36

Utilisation des flux, des tubes (pipes) et des redirections

 Description : Les candidats doivent être capables de rediriger des flux et de les connecter dans le but de traiter efficacement ces données textuelles. Les tâches à effectuer comprennent les redirections de l'entrée standard, de la sortie standard et de la sortie standard des erreurs, connecter la sortie d'une commande à l'entrée d'une autre, utiliser la sortie d'une commande comme paramètre pour une autre commande et envoyer le résultat en même temps sur la sortie standard et dans un fichier.

 Termes, fichiers et utilitaires utilisés :

● tee

● xargs

ziedbouziri.com

37

Les tubes

 Les tubes Unix permettent de combiner des commandes en les

utilisant comme des briques indépendamment de leur provenance.

 Trois types d'entrées / sorties

– Entrée standard (stdin) : Descripteur 0 – Sortie standard (stdout) : Descripteur 1 – Sortie d'erreur standard (stderr) : Descripteur 2

ziedbouziri.com

38

Redirection

Fonction de redirection

Syntaxe

Envoyer stdout vers file

Envoyer stderr vers file

$ cmd > file ou $ cmd 1> file

$ cmd 2> file

Envoyer stdout et stderr vers file

$ cmd > file 2>&1

Envoyer stdout vers file1 et stderr vers file 2

$ cmd > file1 2>file2

Recevoir stdin à partie de file

$cmd < file

Ajouter stdout à la fin du file

$ cmd >> file ou $ cmd 1>> file

Envoyer stderr à la fin du file

$ cmd 2>> file

Envoyer stdout et stderr à la fin du file

$ cmd >> file 2>&1

ziedbouziri.com

39

Les tubes (pipe)

 La sortie d'une commande devient l'entrée d'une autre.

 Tubes et redirections peuvent être combinées sur une ligne de

commande selon les résultats qu'on veut obtenir.

 Pipe stdout de cmd1 vers cmd2 :

$ cmd1 | cmd2

 Pipe stdout et stderr de cmd1 vers cmd2.

$ cmd1 2>&1 | cmd2

 Afficher les 6 premières lignes du fichier /etc/passwd une fois ce

fichier trié par ordre alphabétique

$ sort /etc/passwd | head -6

 La commande tee permet de dupliquer le flux de données en sortie : $

sort /etc/passwd | tee res1 | head -6

ziedbouziri.com

40

La commande xargs

– cmd1 | xargs cmd2

• Permet de passer en arguments de la commande cmd2, le résultat de la

commande cmd1

Exemples :

$ find /tmp -name core -type f -print | xargs /bin/rm -f

$ find /etc/ -name *.conf | xargs grep 'Linux'

ziedbouziri.com

41

Les Processus

ziedbouziri.com

42

Création, surveillance et destruction de processus

 Description :Les candidats doivent être capables d'effectuer une gestion de base sur les

processus.

 Termes, fichiers et utilitaires utilisés :

● &

● bg

● fg

● jobs

● kill

● nohup

● ps

● top

● free

● uptime

● killall

ziedbouziri.com

43

Processus Unix ?

 Un programme en cours d'exécution qui utilise les ressources de la

mémoire + processeur.

 Quelques informations relatives à un processus :

– PID : Process ID – PPID : Parent Process ID – User ID (UID) et Group ID (GID) : Ayant lancé le processus – temps CPU – tables de référence des fichiers ouverts

ziedbouziri.com

44

ps

 Quels sont les processus exécutés par le système

 Afficher tous les processus du système :

Publicité

ps -A ou ps -ef

 Manipulations

– l'utilisateur salah exécute la commande : $ vi test – Afficher les processus de l'utilisateur salah

ps -U salah

– Afficher les utilisateurs qui exécutent la commande vi

ps -f -C vi UID PID PPID C STIME TTY TIME CMD salah 5229 5201 0 18:23 pts/5 00:00:00 vi tets zied 5278 4370 0 18:31 pts/0 00:00:00 vi test

ziedbouziri.com

45

top

 Afficher des informations sur l'activité du système en temps réel

 Quelques options interactives :

–

ctrl-L : refresh

– h : help

– n : nombre de processus à afficher

– q : quitter

–

r : (renice) changer le priorité d'un processus ziedbouziri.com

46

Envoyer un signal à un processus

 kill [numéro-du-signal] PID

 Afficher une liste des noms de signaux connu : kill -l

ziedbouziri.com

47

Envoyer un signal à un processus (suite ...)

 Envoyer SIGTERM aux processus (PIDs 1000 et 10001

$ kill 1000 1001

$ kill -15 1000 1001

$ kill -SIGTERM 1000 1001

$ kill -TERM 1000 1001

 relecture des fichier de configurations

kill -HUP `cat /var/run/httpd.pid`

 Arrêt forcé !

kill -9 1000 1001 ou bien kill -KILL 1000 1001

 Afficher les processus qui s'exécutent en arrière plan (bg)

firefox &

[1] 5788

jobs

[1]+ Running ./firefox &

ziedbouziri.com

48

Envoyer un signal à un processus (encore ...)

 Vous avez oublié de lancer xterm en arrière plan (bg) :

xterm

(vous faites ctrt z)

TSTP (20)

[1]+ Stopped xterm

bg

[1]+ xterm &

CONT (18)

 Envoyer un signal à des processus indiqués par leurs noms

– killall -HUP httpd

ziedbouziri.com

49

Modifier la priorité d'un processus

ziedbouziri.com

50

Modification des priorités des processus

 Description : Les candidats doivent être capables de gérer les priorités des processus.

 Termes, fichiers et utilitaires utilisés :

● nice

● ps

● renice

● top

ziedbouziri.com

51

Priorité des processus

 top ou bien ps -l

 le noyau offre + temps CPU pour « hight priority process »

 Par défaut les processus d'un utilisateur sont créés avec la Nice Number 0.

 Nice Number positif --> moins de priorité

 Nice Number négatif --> plus de priorité

 Nice Number varie de -20 à 19

 Un utilisateur peut lancer un processus avec un Nice Number positif

 SEUL root peut lancer un processus avec un Nice Number négatif

ziedbouziri.com

52

nice et renice

 Un utilisateur lance cmd avec un Nice Number +5

$nice -5 cmd1

 Seul root peut lancer des processus avecun Nice Number négatif

nice - -10 vi /etc/hosts.deny

nice -n -10 vi /etc/hosts.deny

 renice : Modifier la priorité d'un processus

#renice -20 501

#renice -10 -u salah -p 501

ziedbouziri.com

53

Recherche sur des fichiers texte avec des

expressions régulières

ziedbouziri.com

54

Recherche dans des fichiers texte avec les expressions régulières

 Description : Les candidats doivent être capables de gérer les priorités des processus.

 Termes, fichiers et utilitaires utilisés :

● grep

● egrep

● fgrep

● sed

ziedbouziri.com

55

Objectifs et outils

 Recherche (texte) sur le contenu des fichiers, selon un modèle (motif) : « les expressions

régulières » regex

 Une expression régulières (regular expression) est un motif qui permet de décrire un

ensemble de chaînes.

 Outils : grep, egrep, sed, awk, Perl, java ...

 grep [options] regex [fichiers]

 options :

-c : Afficher le nombre de lignes qui satisfait regex, pas les lignes

-h :Ne pas afficher le nom des fichiers dans les résultats lorsque plusieurs fichiers sont

parcourus.

-i : Ignorer les différences majuscules/minuscules dans la recherche.

-n : Ajouter à chaque ligne de sortie un préfixe contenant son numéro dans le fichier

-v : Afficher les lignes qui ne satisfait pas regex

-E : Interpréter regex comme une expression régulière étendu. egrep

ziedbouziri.com

56

Expression régulière : position

ziedbouziri.com

57

Expression régulière : groupe de caractères

ziedbouziri.com

58

Expression régulière : Les modificateurs

ziedbouziri.com

59

L'éditeur vi

ziedbouziri.com

60

Édition de fichiers texte avec "vi"

 Description : Les candidats doivent être capables de gérer les priorités des processus.

 Termes, fichiers et utilitaires utilisés :

● vi

● /, ?

● h,j,k,l

● i, o, a

● c, d, p, y, dd, yy

● ZZ, :w!, :q!, :e!

ziedbouziri.com

61

L'éditeur historique du système UNIX

● x : supprimer caractère ● dd : supprimer la ligne ● u : undo ● ctrl-R : redo ● / : recherche ● n : résultat suivant

Mode Commande

i, a

esc

:

Mode Edition

● w :enregistrer ● wq : enregistrer et quitter

●

Mode Exécution

ziedbouziri.com

62