Exercices de la page 9 du pdf cours-unix-td
Grâce à la commande mkdir, je crée trois nouveaux répertoires dans un dossier :TEST1, TEST2, TEST 3.
Petite particularité du dernier répertoire: il contient un espace. Pour que le logiciel n’interprète pas mon instruction comme une demande de création d’un répertoire « TEST » et d’un répertoire « 3 », il est nécessaire de délimiter le nom du fichier par des guillemets.
Avec la commande ls je peux vérifier l’action de ma commande précédente, « ls -t » affichant le contenu du répertoire courant trié par date de modification.
J’entre ensuite dans le répertoire TEST1 grâce à la commande cd, puis je crée trois fichiers vides avec la commande touch. Avec une même ligne de commande je peux créer les trois fichiers en même temps. Ainsi j’écris « touch » suivi du nom du premier fichier (qui sera donc créé dans le répertoire courant TEST1), puis du nom du second fichier accompagné de son emplacement (. désigne le répertoire courant : ce second fichier sera donc également créé dans TEST1) et enfin du nom du troisième fichier également accompagné de son emplacement (ici je remonte dans le répertoire parent grâce à .. puis j’entre dans TEST2 pour y créer le fichier).
On peut voir que les trois fichiers ont bien été créés (TEST1 a deux éléments et TEST2 en a un) :
Avec la commande « echo “aurore” > vide1.txt », je crée une ligne de texte - avec la commande « echo » - que je redirige dans le fichier vide1.txt grâce à la redirection de la sortie standard « > ».
Avec la commande « echo “le mot geek sur le web” >> vide1.txt, j’ajoute une ligne de texte à la fin du fichier vide1.txt sans écraser les précédentes données saisies dans ce même fichier grâce à la redirection double « >> »
Grâce à la commande « cat » je peux vérifier ce que contient mon fichier depuis le terminal.
Avec la commande « mv », on peut renommer un fichier. Ici, le fichier vide1.txt est renommé jenesuisplusvide.txt :
Avec la commande « cp » on peut copier un fichier et le placer dans un autre répertoire, lorsque la commande « cp » est suivie du nom du fichier à copier et d’un emplacement. Ici, le fichier jenesuisplusvide.txt du répertoire TEST1 est copié et déplacé dans le répertoire TEST2 depuis le répertoire parent du répertoire courant :
Avec la commande « cp », on peut également copier et renommer en même temps un fichier en faisant suivre la commande « cp » du nom du fichier à copier et du nouveau nom du fichier. Ici, le fichier jenesuisplusvide.txt est copié et renommé moinonplus.txt dans le répertoire TEST1. Avec la commande « ls » on peut vérifier le contenu du répertoire courant:
J’ai donc maintenant dans trois fichiers dans le répertoire TEST1 : deux avec le même contenu mais des noms différents (jenesuisplusvide.txt et moinonplus.txt) et un vide (vide2.txt).
J’utilise la commande « cat > toto.txt » pour écrire dans un nouveau fichier toto (qui se crée automatiquement étant donné qu’il n’existe pas encore).
Je peux constater avec la commande « ls » que TEST1 comporte désormais 4 fichiers.
Avec la commande « ls > liste.txt », je peux créer un nouveau fichier comportant la liste des fichiers de TEST1 en redirigeant la réponse à la commande « ls » (normalement envoyé sur StdOut, i.e. l’écran) vers un 5e fichier grâce à l’opérateur « > ». Si je réitère l’opération avec l’opérateur « >> », j’aurai la liste en double sur le fichier :
Je peux également rediriger les éventuels messages d’erreur (qui sortent normalement sur StdErr et s’affichent à l’écran) vers un fichier en utilisant l’opérateur « 2> ». Ainsi si, au lieu de « ls », j’utilise une commande qui n’existe pas, comme par exemple « lsd », et que je redirige le flux d’erreur vers un fichier erreur.txt, ce fichier est créé dans mon répertoire courant avec comme contenu le message d’erreur :
Je peux enfin créer un fichier avec le contenu de la commande « ls » dans un autre répertoire que le répertoire courant, ce que je fais ici en créant dans TEST2 un fichier présentant le contenu de TEST1.
Pour terminer, je peux supprimer un fichier (ici le fichier vide2.txt) avec la commande « rm », ou encore un répertoire (ici TEST 3) avec la commande « rmdir ».
Si je souhaite visualiser dans le terminal le contenu d’un fichier, par exemple toto.txt, je peux utiliser la commande « less ». Pour quitter la lecture du fichier, il me suffit d’appuyer sur Q.
Exercice p10 : Faire un tube (pipe)
Pour compter le nombre de fichiers dans le répertoire courant :
Avec le symbole « CMD1 | CMD2 » placé entre 2 commandes, la sortie standard de « ls » - qui donne le contenu du répertoire - est redirigée comme entrée standard de « wc -l » - qui compte le nombre de lignes de son entrée standard « ls ». Le répertoire TEST1 contient 5 éléments et je peux le vérifier avec la commande « ls ».
Pour compter le nombre de fichier dans le répertoire TEST2 :
J’applique le même principe que précédemment, mais cette fois la commande « ls » prend en argument le chemin relatif vers le répertoire TEST2. Le répertoire TEST2 contient 3 éléments.
Exercice p11 :
Je peux faire une exécution séquentielle (enchaîner plusieurs commandes sans liens entre elles sur une seule ligne) en les séparant avec le séparateur «CMD1 ; CMD2». Le terminal m’affiche les réponses les unes à la suite des autres. Je peux par exemple demander quel est le contenu du répertoire courant (ls), qui est connecté (who) et quel est le chemin absolu vers le répertoire courant (pwd) :
Faire un regroupement : si je souhaite rediriger les réponses standards de plusieurs commandes dans un seul fichier en une seule fois, je peux mettre ces commandes entre parenthèses : (CMD1 ; CM2). Voici comment créer un fichier temporaire “qui” contenant la date et l’heure ainsi que la personne connectée. En me déplaçant dans le répertoire “tmp”, j’ai ensuite vérifié que le fichier avait bien été ajouté au répertoire des fichiers temporaires avec la commande “ls”, puis j’ai affiché le contenu du fichier “qui” avec la commande “cat qui”:
Faire une imbrication : si je souhaite utiliser directement le résultat d’une commande comme argument d’une autre, je peux utiliser les parenthèses précédées du signe $ : $(CMD). Ainsi, si je veux afficher une phrase (commande “echo”) énonçant dans quel répertoire je suis (commande pwd), je peux procéder comme suit :
Je peux également utiliser l’anti-quote sans $ : ‘CMD’
Exercice p. 14: créer un txt à deux lignes:
Le script crée un fichier text dans un autre répertoire de l’arborescence, dans lequel il écrit nom/prénom sur une ligne et le mot du projet sur la seconde.
Voici le script:
Et le résultat:
Exercice p12 (p14 est identique) : créer une page web avec un tableau
Voici le script permettant de créer une page web ayant mon nom comme titre et comprenant un tableau d’une colonne et de deux lignes (mon nom et le mot du projet).
Et voici le résultat :
(oui, c’est une belle bordure de 100px).
Etant sous Windows dans bashubuntu, il m’a fallu, avant d’exécuter chacun de ces programmes,
remplacer les \r de windows par des \n universels dans la terminal, à l’aide de “tr -d “\r” < fichier1 > fichier2”.
Commentaires
Enregistrer un commentaire