Pratique du shell Linux
💻 Travail n° 1 Options d’une commande Linux
Ce travail vise à vous faire découvrir les différentes façons de fournir des options aux commandes Linux
La commande uname
de Linux va servir de base à ce travail. Cette commande fournit des informations basiques sur le système.
-
Consulter Syntaxe générale des commandes
-
Consulter la page de manuel de la commande
uname
-
Exécuter les commandes
uname -p
puisuname --processor
. Que faut-il en déduire sur les 2 options ? -
Exécuter les commandes
uname -o -n -p
etuname -onp
. Que faut-il en déduire sur les options courtes ? -
Exécuter la commande
uname
suivie de l’option--version
qui est disponible pour une grande majorité des commandes. Que permet cette option ?
💻 Travail n° 2 Catégories de commandes
L’objectif de ce travail est de vous faire différencier les commandes intégrées au shell et celles implémentées dans leur propre fichier exécutable.
-
Consulter Catégories de commandes
-
Lancer un shell en tant que
root
(→sudo su
) -
La commande
whereis
avec l’option-b
permet de localiser l’emplacement du fichier exécutable d’une commande.Localiser et relever l’emplacement de la commande
ifuser
en exécutant :whereis -b ifuser
En déduire le type de la commande
ifuser
(→ interne ou externe ?) -
Localiser l’emplacement de la commande
cd
. Quelle différence faut-il noter par rapport aux résultats pour la commande précédente ?Que faut-il en déduire sur le type de cette commande (→ interne ou externe ?)
-
Localiser l’emplacement de la commande
mkdir
.Que constatez-vous ?
Afficher et relever les détails (→
ls -l <fichier>
) des exécutables de la commandemkdir
présents dans les répertoires affichés par la commandewhereis
précédente. Pouvez-vous donner une interprétation de ce qui est affiché ? -
Afficher et relever l’ensemble des répertoires contenus dans la variable d’environnement
PATH
.Faire la même chose mais cette fois-ci dans un shell d’un utilisateur standard.
Que pouvez-vous en déduire du nombre de commandes accessibles pour chacun des ces utilisateurs (standard et
root
) ? -
La commande
type -a
suivie du nom d’une commande permet de savoir si celle-ci est une commande externe ou intégrée au shell (builtin).Déterminer le type des commandes suivantes :
-
history
-
halt
-
pwd
. Quelle particularité présente cette commande ?
-
💻 Travail n° 3 Liens symboliques et matériels
L’objectif de ce travail est de vous faire prendre conscience des différences entre les 2 types de liens sur les fichiers existant sous Linux : liens symboliques et liens matériels
-
Consulter Liens symboliques et matériels
-
Dans votre répertoire utilisateur standard, créer un fichier
foobar.txt
qui contiendra le texte “Hello world”. Vous utiliserez à cet effet la commande suivante :$ echo "Hello world" > ~/foobar.txt
-
Créer un lien symbolique sur ce fichier avec la commande :
$ ln -s foobar.txt foobar_soft.lnk
-
Lister le contenu du répertoire avec la commande
ls -l
et relever dans le compte rendu les 2 lignes dans lesquelles figurent le nomfoobar.txt
-
Créer à présent un lien matériel sur le fichier avec :
$ ln foobar.txt foobar_hard.lnk
-
Lister de nouveau le répertoire avec
ls -l
puis relever les 3 lignes associées au fichierfoobar.txt
et ses 2 liens (matériel et symbolique).Que constatez-vous au niveau de la représentation des liens au niveau de l’affichage ?
Quelle différence pouvez-vous relever au niveau du nombre affiché entre les droits d’accès et le nom du propriétaire du fichier
foobar.txt
par rapport à celui présent avant la création du lien matériel ?Les droits d’accès d’un lien symbolique n’ont pas de valeur. Seuls les droits d’accès du fichier sur lequel il pointent doivent être considérés.
-
Afficher le contenu de
foobar.txt
et de ses 2 liens (matériel et symbolique) avec la commandecat
. Vérifier que le texte “Hello world” s’affiche à chaque fois. -
Executer la commande
stat foobar.txt foobar_hard.lnk foobar_soft.lnk
.Comparer les informations affichées et plus particulièrement les valeurs de “Size”, “Blocks” et “INode”.
-
Détruire le fichier
foobar.txt
et exécuter la commandestat foobar_hard.lnk
.Que remarquez-vous au niveau de l’information “Links” ?
-
Afficher le contenu des 2 liens (matériel et symbolique) avec la commande
cat
.Interpréter le résultat.
-
Créer un répertoire
dummy
dans votre répertoire utilisateur et créer les 2 types de liens (matériel et symbolique) sur ce répertoire.Que pouvez-vous en déduire ?
Malgré ce qui vient d’être démontré sur l’impossibilité de créer des liens matériels sur des répertoires, les “raccourcis” |
💻 Travail n° 4 Caractères génériques
Ce travail vise à vous faire expérimenter l’utilisation de “jokers” (→ caractères génériques) dans les commandes pour cibler des ensembles de fichiers plutôt que de devoir tous les spécifier les uns après les autres.
-
Consulter Caractères génériques du shell
-
Afficher le type des fichiers (→ commande
file
) contenus dans votre répertoire personnel dont le nom débute par un point -
Afficher le type des fichiers du répertoire personnel dont le nom débute par ‘.’, se termine par ‘g’ et contient un ‘f’
-
Afficher le type des fichiers de
/etc/
dont la 3ième lettre du nom est un ‘u’ -
Afficher le type des fichiers de
/etc/
dont le nom se termine par ‘conf’ -
Afficher le type des fichiers de
/etc
dont le nom comporte au moins 8 lettres et se termine par ‘s’ -
Afficher le type des fichiers de ` /sys/devices/` qui comportent un chiffre dans leur nom
-
Afficher le type des fichiers de
/dev/
dont le nom se termine par 2 chiffres -
Afficher le type des fichiers de
/dev/
dont le nom débute par ‘l’ mais qui ne se termine pas par 1 chiffre
💻 Travail n° 5 Redirections
Ce travail consiste à mettre en œuvre le mécanisme de redirection de Linux qui permet aux commandes d’envoyer leurs résultats vers un fichier ou d’obtenir leurs arguments depuis un fichier.
-
Consulter Redirections
-
Que produit la commande
echo "Lorem ipsum" 1> foo.txt
? Conclure sur la signification de1>
. -
Que signifie selon vous
&>
dans la commande suivantels /r* &> foo.txt
?Cette commande peut également s’écrire
ls /r* > foo.txt 2>&1
. La page de manuel debash
recommande malgré tout la 1ière syntaxe. -
Élaborer la séquence de commandes suivante :
-
Lister les répertoires de
/var/log
grâce à la commandefind
et son option-type
(cf. page de manuel) -
Rejouer la même commande mais en redirigeant uniquement STDOUT vers le fichier
folders.txt
-
Rejouer la dernière commande en redirigeant STDERR vers le fichier spécial
/dev/null
et observer le résultat.Consulter la page de manuel de
null
(→man null
) et expliquer à quoi correspond le fichier/dev/null
. -
Afficher tout en majuscules le contenu de
folders.txt
via la commandetr
vue plus haut -
Modifier la commande pour qu’elle envoie le résultat dans un fichier plutôt qu’à l’écran.
Que se passe-t-il si le même fichier est spécifié pour la redirection d’entrée et la redirection de sortie ?
-
💻 Travail n° 6 Tubes
L’objectif de ce travail est de vous faire manipuler les tubes (ou pipes) au niveau des commandes Linux
-
Consulter Tubes
-
Observer les derniers évènements du système en tapant la commande
dmesg | tail
qui envoie la sortie dedmesg
sur l’entrée detail
.La commande
tail
permet de n’afficher que les dernières lignes d’un texte alors que la commandedmesg
affiche l’ensemble des évènements détectés par le kernel ⇒ les 2 commandes combinées avec le pipe permettent donc de n’afficher que les derniers évènements. -
Visualiser page par page l’ensemble des évènements du système en tapant la commande
dmesg | less
.La commande
less
permet de naviguer à travers un document (‘q’ = quitter, ‘h’ = aide, ‘f’ ou <espace> = page suivante, ‘b’ = page précédente, ENTRÉE = ligne suivante …) -
Élaborer une commande avec un pipe qui permettra en une seule ligne d’afficher en majuscules les répertoires de
/var/log
accessibles à l’utilisateur courant.
💻 Travail n° 7 Commandes réseau usuelles
-
Consulter Gestion Réseau
-
Utiliser la commande
ip
pour récupérer l’adresse IP ainsi que l’adresse MAC de votre interface réseau -
Déterminer avec la commande
ip
l’adresse IP de la passerelle -
Vérifier la liaison avec la passerelle avec la commande
ping
-
“pinger” l’adresse 127.0.0.1. Comment expliquez-vous le fait que vous arriviez à joindre 127.0.0.1 alors que cette adresse n’est pas dans le même réseau que votre interface réseau ?
-
Installer le paquet logiciel
nmap
depuisYaST
-
Découvrir les hôtes présents sur le réseau 192.168.4.0/22 et déterminer ceux tournant sur Windows
💻 Travail n° 8 Gestion de processus
L’objectif de ce travail est de vous familiariser avec les commandes usuelles de Linux en rapport avec la gestion des processus.
-
Consulter Gestion des processus
-
Depuis le terminal, lancer 2 instances de la calculatrice en tapant les commandes
$ kcalc& (1) $ kcalc& (1)
1 le ‘&’ à la fin des commandes demande à Linux d’exécuter le programme en tâche de fond. Ceci permet de reprendre la main instantanément dans le shell plutôt que de devoir attendre la fin de chaque commande (ici, fermer la calculatrice) -
Saisir la commande permettant d’afficher les identifiants des processus en cours d’exécution (→ leurs PIDs)
-
Tuer la 1ère instance de la calculatrice en lui envoyant le signal
SIGKILL
-
Relancer plusieurs instances de la calculatrice
-
Saisir la commande unique qui permet de fermer toutes les instances de la calculatrice
-
Relancer 2 instances de la calculatrice en tâche de fond
-
Utiliser la commande
top
pour n’afficher les informations que sur les 2 instances de la calculatrice -
Quitter
top
-
Se renseigner sur les commandes
kill -s stop <pid>
,fg
,bg
etjobs
puis les utiliser pour :-
suspendre l’exécution (→
kill -s stop <pid>
depuis un autre shell) -
reprendre l’exécution en arrière plan (→
bg …
) -
reprendre l’exécution en 1er plan (→
fg …
)
d’une commande Linux qui ne rend pas la main automatiquement comme la commande ping.
-
🞄 🞄 🞄