TP1 - Prise en main du shell
Cette première partie est un entraînement aux manipulations élémentaires du shell et des fichiers Unix. Vous devez simplement effectuer le travail demandé et poser toutes les questions que vous jugerez utiles. L’objectif est que vous soyez capable de refaire seul(e) les manipulations décrites.
Informations sur le système utilisé
Section titled “Informations sur le système utilisé”- Déterminez le système installé par la commande :
uname -a - Affichez la distribution utilisée :
cat /etc/issueoulsb_release -a - Aide pour une commande :
nomdelacommande --help - Manuel d’une commande : testez la commande
manpour obtenir de l’aide sur la commande man.- Voir le cours : A l’aide !
Manipulation de fichiers et répertoires
Section titled “Manipulation de fichiers et répertoires”-
Copiez le répertoire
/media/commun/shelldans votre répertoire de travail par défaut (home directory) par la commande suivante (attention le point représente le répertoire courant) :-
« En local »
Terminal window cp -r /media/commun/shell . -
OU «en remote» (sur vos machines perso ou à la maison).
Terminal window scp -pr loginlinux@server:/media/commun/shell .
-
-
Placez-vous dans le répertoire shell et inspectez son contenu.
-
Les fichiers du répertoire noms sont vides, utilisez la commande
ls -lpour le vérifier. -
Placez-vous dans le répertoire noms (commande
cd).- Voir le cours : Quelques commandes pour manipuler les fichiers
-
Pour les questions suivantes seule la commande
lset les caractères jokers doivent être utilisés.- Voir le cours : Les caractères et chemins spéciaux
- Affichez tous les fichiers dont le nom se termine par .c
- Affichez le nom de tous les fichiers dont le nom commence par un ‘a’ ou un ‘g’. Faites-le une fois avec les [], puis sans.
- Affichez le nom de tous les fichiers dont le nom commence par un ‘a’ et termine par 1
- Affichez le nom de tous les fichiers dont le nom contient exactement 3 caractères.
-
Sans changer de répertoire, trouvez au moins deux méthodes pour afficher le contenu de votre répertoire de travail par défaut (home directory). Affichez tous les fichiers y compris les fichiers cachés du répertoire de travail.
-
Remontez au répertoire shell.
Compilation et arrêt de programme
Section titled “Compilation et arrêt de programme”Vous êtes dans le répertoire shell.
-
Affichez le contenu du fichier
bravo.cpar la commandecat bravo.c -
Compilez puis lancez l’exécution du programme C contenu dans le fichier
bravo.c; pour compiler utilisez la commandecc bravo.c -o a.outCette commande crée un fichier exécutable de nom
a.out
La commande a.out lance l’exécution du programme objet ; l’exécution échoue, car . (le répertoire courant) n’est pas présent dans la variable $PATH ; pour le vérifier affichez la variable PATH : echo $PATH
Il faut donc lancer l’exécution du programme objet par ./a.out
Voir le cours : Les variables « usuelles » (dont $PATH)
-
Recommencez mais en utilisant l’option -o qui permet de redéfinir le nom du fichier contenant l’exécutable du programme (que vous appellerez bravo).
cc bravo.c -o bravoproduit un fichier exécutable de nom bravo./bravolance l’exécution du programme objet (du répertoire courant) -
De la même manière, compilez le programme
boucle.cdans le fichierboucleet lancez son exécution. Pour l’arrêter, appuyez simultanément sur les touches Ctrl et C du clavier.
Redirigeons
Section titled “Redirigeons”Voir le cours : Redirections E/S
Vous êtes toujours dans le répertoire shell et vous avez créé un fichier exécutable de nom bravo.
- Lancez l’exécution de
bravoen redirigeant sa sortie standard dans un fichier nomméout. - Recommencez mais en AJOUTANT la sortie de bravo à
out(>> au lieu de >). - Tapez
ls titien redirigeant la sortie erreur de ls sur un fichiererr. - Tapez
ls titi *avec erreurs redirigées. Recommencez mais cette fois en redirigeant la sortie standard. Observez la différence : il s’agit de comprendre qu’un processus Unix a bien deux sorties : une pour les sorties normales et une pour les messages d’erreur.
La commande cat envoie le contenu des fichiers passés en paramètre sur sa sortie standard. Si aucun fichier n’est passé en paramètre, c’est le contenu de son entrée standard qui est envoyé sur la sortie.
Vous êtes toujours dans le répertoire shell.
- Utilisez
catpour faire afficher à l’écran le contenu des fichiersm1etm2en une seule commande. - Utilisez
catpour créer une copie du fichierm1baptiséem1bis. - Utilisez
catpour créer un fichiertotocontenant un texte que vous taperez au clavier (terminer le texte par Ctrl-D qui est la marque de fin de fichier sur Unix).
Prise en main de l’environnement
Section titled “Prise en main de l’environnement”-
Revenez à votre répertoire de travail par défaut (HOME directory), il existe au moins 3 syntaxes différentes de la commande
cdpour faire cela. -
Faites afficher votre environnement avec la commande
env, puis avec la commandeset. Observez les différences. La variablePS1est-elle une variable publique ?- Voir le cours : Les variables
-
Le prompt (caractères avant le curseur dans un terminal) est défini par la variable de l’environnement
PS1. Modifiez cette variable. (valable uniquement dans le terminal en cours) -
Ajoutez à la fin de votre fichier
.bashrcla commandeecho -e "\nBonjour\n". Ouvrez une nouvelle fenêtre Terminal, vous devez voir s’afficherBonjour.- Voir le cours : Ordre des initialisations (pourquoi une nouvelle fenêtre est nécessaire)
Édition de fichier texte
Section titled “Édition de fichier texte”- Utilisez un éditeur (graphique) de texte pour écrire vos scripts. Je vous conseille d’utiliser
vscode. - Une fois VSCode ouvert, ouvrez le dossier
shell(Fichier > Ouvrir un dossier) pour retrouver et éditer vos fichiers.
Si vous ne pouvez pas lancer d’applications graphiques, vous pouvez utiliser l’éditeur de texte nano
Exercice bonus (pour les plus rapides)
Section titled “Exercice bonus (pour les plus rapides)”Toujours sans écrire de script, uniquement avec les caractères jokers et les redirections vus dans ce TP (faites cet exercice avant de passer au ménage ci-dessous : il a besoin du répertoire noms) :
- Depuis le répertoire
shell, créez un fichierrecap.txtcontenant la liste des noms de fichiers denomsse terminant par.c. - Sans écraser
recap.txt, ajoutez-y la liste des fichiers denomsdont le nom contient exactement 3 caractères. - Affichez le contenu de
recap.txtà l’écran en une seule commande.
Faisons le ménage
Section titled “Faisons le ménage”Voir le cours : Quelques commandes pour manipuler les fichiers (suite)
- Sans changer de répertoire (vous êtes dans votre répertoire de travail par défaut), supprimez tous les fichiers du répertoire
shell/noms. - Supprimez le répertoire
shell/noms.