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 -mpuisuname --machine. Qu’affichent les 2 commandes ? Que faut-il en déduire sur les 2 options ? -
Exécuter les commandes
uname -o -m -netuname -omn. Que faut-il en déduire sur les options courtes ? -
Exécuter la commande
unamesuivie de l’option--versionqui est disponible pour une grande majorité des commandes. Que permet cette option ? Existe-t-elle en version courte ? (🪤)
💻 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
whereisavec l’option-bpermet de localiser l’emplacement du fichier exécutable d’une commande.Localiser et relever l’emplacement de la commande
ifuseren exécutant :whereis -b pingEn déduire le type de la commande
ping(→ interne ou externe ?) -
Localiser l’emplacement de la commande
ip.Que constatez-vous ?
Comment interprétez-vous le “-> ../bin/ip” dans le résultat de la commande
lssuivant :# ls -l /usr/bin/ip /usr/sbin/ip -rwxr-xr-x 1 root root 721912 May 27 2025 /usr/bin/ip lrwxrwxrwx 1 root root 9 May 27 2025 /usr/sbin/ip -> ../bin/ip -
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 ?)
-
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 -asuivie du nom d’une commande permet de savoir si celle-ci est une commande externe ou interne (→ builtin)Rappel :-
interne ≡ intégrée au shell
-
externe ≡ codée dans un fichier exécutable
Déterminer le type des commandes suivantes :
-
history -
rmdir -
pwd
Quelle particularité présente cette dernière 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.txtqui 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 -let relever les lignes dans lesquelles figurent le nom de fichierfoobar.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 -lpuis analyser les lignes relatives au fichierfoobar.txtet à ses 2 liens (symbolique et matériel).Le lien matériel se distingue-t-il du fichier sur lequel il pointe ?
Quelle différence pouvez-vous relever au niveau du nombre affiché juste après les droits d’accès 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 vraiment de valeur. Seuls les droits d’accès du fichier sur lequel il pointe doivent être considérés.
-
Afficher le contenu de
foobar.txtet 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.txtavec la commandermet 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
dummydans 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 sur les liens matériels ?
💻 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.
Relever les commandes saisies dans le compte rendu.
-
Consulter Caractères génériques du shell
-
Afficher le type des fichiers/répertoires (→ commande
file) contenus dans votre répertoire personnel dont le nom débute par un point -
Afficher le type des fichiers/répertoires 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
/etcdont 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 ‘t’ 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.
Relever les commandes saisies dans le compte rendu.
-
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 debashrecommande malgré tout la 1ière syntaxe. -
Élaborer la séquence de commandes suivante :
-
Lister uniquement les répertoires de
/var/loggrâce à la commandefindet 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/nullet 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.txtvia la commandetr(consulter la page de manuel) en redirigeant son entrée depuis le fichierfolder.txt -
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
Relever les commandes saisies dans le compte rendu.
-
Consulter Tubes
-
Observer les derniers évènements du système en tapant la commande
sudo dmesg | tailqui envoie la sortie dedmesgsur l’entrée detail.La commande
tailpermet de n’afficher que les dernières lignes d’un texte alors que la commandedmesgaffiche 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
sudo dmesg | less.La commande
lesspermet 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 sur une seule ligne avec un pipe qui permettra d’afficher en majuscules les répertoires de
/var/logaccessibles à l’utilisateur standard courant.
💻 Travail n° 7 Commandes réseau usuelles
Ce travail consiste à utiliser quelques commandes réseau de base.
Relever les commandes saisies dans le compte rendu.
-
Consulter Gestion Réseau
-
Utiliser la commande
ippour récupérer l’adresse IP ainsi que l’adresse MAC de votre interface réseau -
Déterminer avec la commande
ipl’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
nmapdepuis la ligne de commande :$ sudo apt update $ sudo apt install nmap -
Faire un scan rapide (→ fast scan) des services uniquement UDP (→ udp scans) tournant sur votre propre machine. Consulter la page de manuel pour trouver les options associées.
Faire un scan réseau de sa propre machine avec
nmapest plutôt stupide : des commandes commesssont nettement plus adaptées.Ici, l’objectif de la question est de tester basiquement la commande
nmaptout en prenant compte de la grande variété des options disponibles sans occasionner de trafic important sur notre réseau.En effet, un scan
nmapaggressif de la part de chacun d’entre vous sur l’ensemble des machines de notre réseau (masque CIDR 24 bits ⇒ 1024 machines) durerait des heures et encombrerait le réseau.
💻 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.
Relever les commandes saisies dans le compte rendu.
-
Consulter Gestion des processus
-
Depuis le terminal, lancer 2 instances de la calculatrice en tapant les commandes
$ xcalc& (1) $ xcalc& (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) Les 2 instances de la calculatrices seront superposées au lancement ⇒ les déplacer avec la souris pour qu’elles soient visibles toutes les 2.
-
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
toppour n’afficher les informations que sur les 2 instances de la calculatrice -
Quitter
top -
Se renseigner sur les commandes
kill -s stop <pid>,fg,bgetjobspuis 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. -
🞄 🞄 🞄