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)
[Link] 1
Travailler en ligne de commande
[Link] 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 [Link] 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
>
[Link] 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 &
[Link] 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
[Link] 6
Quelques variables d'environnement bash
Variable Fonction
USER le nom de l'utilisateur courant
UID UID de l'utilisateur courant
HOME 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
1,2.... les paramètres du script
0 le nom du script
[Link] 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
§ [Link] 8
Raccourcies claviers
§ history
§ HISTSIZE
§ HISTFILE
[Link] 9
Raccourcies claviers, commandes Emacs
[Link] 10
Contrôler des flux de texte à l'aide des filtres
[Link] 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 pr
sed
● cut sort
● expand split
tail
● fmt tr
● head unexpand
uniq
● od wc
● join
● nl
● paste
●
[Link] 12
Filtres (1)
cat, less, more sort
Afficher le contenu Trier les lignes
cut
Extraire des champs tail / head
Afficher l'enête / enqueue
Fichier Texte
nl
Numéroter les lignes
wc
Afficher le nombre d'octets, de mots et de lignes
[Link] 13
cat et tac
§ Affiche le contenu d'un fichier.
§ Exemple fichier1
1 un
2 deux
3 trois
$ cat fichier1
$ tac fichier1
[Link] 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
[Link] 15
cut
§ Permet d'afficher certains champs d'un fichier
donné
§ Exemple :
$ cut -d: -f1 /etc/passwd
[Link] 16
nl
§ Numéroter les lignes d'un fichier.
§ Exemples :
$ nl /etc/passwd
$ ls | nl -s')'
[Link] 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
[Link] 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
[Link] 19
Filtres (2)
paste join
Regrouper les lignes Jointure des lignes
Fichier Texte
split
Découper un fichier
[Link] 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
[Link] 21
paste (suite)
$ paste -d'@' file1 file2
1@A
2@B
3@C
$ paste -s file1 file2
1 2 3
A B C
[Link] 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
[Link] 23
3 three 33
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_
[Link] 24
Filtres (3)
fmt expand (vs unexpand)
Formater les paragraphes Convertir les tabulations en espaces
od
Afficher en format octal Fichier Texte
tr pr
Convertir des caractères ●Mise en forme pour l'impression.
[Link] 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
[Link] 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 [Link] > [Link]
[Link] 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
[Link] 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 [Link] | lp
$ pr -m [Link] [Link] | lp
[Link] 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) :
• cat file1 | tr -s '\n'
[Link] 30
Gestion de fichiers
[Link] 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 :
● cp tar
cpio
● find dd
● mkdir file
gzip
● mv gunzip
● ls bzip2
● rm
● rmdir
● touch
●
[Link] 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
[Link] 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.
[Link] 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 Exemples
* désigne 0 ou plusieurs caractères x*
? Désigne exactement un seul caractère x? x??
[caractères] Désigne un seul caractère de la liste [caractères] x[yz]
[!caractères] Désigne un seul caractère en dehors de la liste [caractères] x[!yz]
[a-z] Désigne un seul caractère appartenant à l'intervalle de x[0-9] x[a-zA-Z]
caractères défini entre [ ]
Désigne un seul caractère n'appartenant pas à l'intervalle de
[!a-z]
caractères défini entre [ ]
{frag1,frag2,..} brase expansion file_{one,two,three}
[Link] 35
Tubes et les redirections
[Link] 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
[Link] 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
[Link] 38
Redirection
Fonction de redirection Syntaxe
Envoyer stdout vers file $ cmd > file ou $ cmd 1> file
Envoyer stderr vers 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
[Link] 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
[Link] 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'
[Link] 41
Les Processus
[Link] 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 [Link] 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
[Link] 44
ps
§ Quels sont les processus exécutés par le système
§ Afficher tous les processus du système :
# 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
[Link] 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
[Link] 46
Envoyer un signal à un processus
§ kill [numéro-du-signal] PID
§ Afficher une liste des noms de signaux connu : kill -l
[Link] 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/[Link]`
§ 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 &
[Link] 48
Envoyer un signal à un processus (encore ...)
§ Vous avez oublié de lancer firefox en arrière plan (bg) :
# firefox TSTP (20)
(vous faites ctrt z)
[1]+ Stopped firefox
# bg CONT
[1]+ firefox & (18)
§ Envoyer un signal à des processus indiqués par leurs noms
– killall -HUP httpd
[Link] 49
Modifier la priorité d'un processus
[Link] 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
[Link] 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
[Link] 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/[Link]
# nice -n -10 vi /etc/[Link]
§ renice : Modifier la priorité d'un processus
#renice -20 501
#renice -10 -u salah -p 501
[Link] 53
Recherche sur des fichiers texte avec
des expressions régulières
[Link] 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
[Link] 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
[Link] 56
Expression régulière : position
[Link] 57
Expression régulière : groupe de caractères
[Link] 58
Expression régulière : Les modificateurs
[Link] 59
L'éditeur vi
[Link] 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!
[Link] 61
L'éditeur historique du système UNIX
● x : supprimer caractère
● dd : supprimer la ligne
● u : undo
Mode Commande ● ctrl-R : redo
● / : recherche
● n : résultat suivant
i, a esc
Mode Edition
:
● w :enregistrer
● wq : enregistrer et
quitter
Mode Exécution ●
[Link] 62