Accéder au contenu principal

#Article 4 Quelques exercices : commandes Ubuntu



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

Posts les plus consultés de ce blog

#Article 10 : Création du Site Web

Ce dixième et dernier article du blog aura pour objet la création de notre site web associé au projet. Nous avons choisi une mise en forme personnalisée, sur la base d'un modèle trouvé en ligne, et, ayant tous les trois quelques connaissances en HTML/CSS, nous avons ajouté et modifié nous-mêmes les pages dudit site. Il reprend certaines parties de ce blog: présentation de l'équipe, du projet. Nous y avons ajouté une section traitant des programmes utilisés tout au long de notre recherche, ainsi qu'une page dédiée aux données traitée. Par la suite, une section se consacre au script et à son écriture, une aux résultats obtenus, et enfin une à l'analyse de ces résultats. Contrairement à ce blog, le site contiendra plus de visuels et sera probablement un peu plus agréable dans sa navigation. Pour pouvoir travailler ensemble sur les fichiers, ceux-ci ont été partagés sur un drive commun. En effet, il serait autrement compliqué d'y avoir accès aisément depuis différentes

#Article2 Présentation de l’équipe

Avant de vous présenter le projet lui-même et de vous expliquer ce qui nous a amenés à choisir le mot « geek » pour notre étude, laissez-nous vous faire une rapide présentation de l’équipe. Aurore : (langues : français et anglais) : Je suis titulaire d’une licence en Sciences du Langage à Nanterre. En dernière année, avec le parcours Traitement Informatique de Corpus j’ai pu suivre une initiation à la linguistique informatique et la linguistique de corpus. Ayant apprécié l’expérience, j’ai décidé d’entreprendre le Master TAL. En 3ème année de licence, dans le cadre d’une enquête sociolinguistique, mes camarades et moi-même avions travaillé sur les anglicismes dans les jeux vidéos. C’est l’envie d’entreprendre un projet sur un sujet connexe qui m’a conduite à vouloir travail sur un thème proche du gaming. Corentin : (langues : français, japonais, italien) Titulaire d’une Licence en Science du Langage à Nanterre, passionné par langues et la linguistique, et versé dans l’informatique,

#Article 7 : Finalisation du script

Lors de notre dernier billet, nous avons cherché une manière d’obtenir les encodages de toutes les pages et de convertir en UTF-8 celles qui ne l’étaient pas déjà. Nous avons vu en cours une manière plus simple et efficace que celle que nous avions trouvée : egrep -io "charset=\"?[^\",]+\"?" ./PAGES-ASPIREES/$numerotableau-$compteur.html | cut -f2 -d"=" | tr -d '("|\\|>)' | sed "s/'//g" | tr '[a-z]' '[A-Z]' L’expression régulière charset=\"?[^\",]+\"? permet de trouver l’encodage, puis nous nous débarrassons de « charset= » grâce au cut -f2 -d"=" , ainsi que des éventuels guillemets (simples et doubles) encadrant l’encodage et autre signes (barres obliques et balises) avec tr -d '("|\\|>)' | sed "s/'//g" | , et enfin nous passons le résultat en majuscules avec tr '[a-z]' '[A-Z]' .   Nous   avons ajouté à cette commande les inst