Travaux pratiques sur Linux et le terminal
Exercices à réaliser dans un terminal pour pratiquer les commandes Linux : déplacement dans les dossiers (cd), accès aux fichiers (ls), recherches sur les noms (find) ou les contenus des fichiers (grep), comptages (wc), découpages (cut), tris (sort et uniq), extractions de textes (pdftolatex et tesseract), récupération depuis le web (wget), conversions (pandoc et pdflatex), codages des textes, visualisation de documents, etc.
[ 1 ] Récupération et installation d'une archive compressée
- Télécharger le fichier seance-tp.tar.bz2 à l'url qui vous a été fournie.
wget --trust-server-names url_fournie
- Décompresser ce fichier.
bunzip2 seance-tp.tar.bz2
- Désarchiver l'archive, puis l'effacer.
tar xvf seance-tp.tar rm seance-tp.tar
- Observer l'arborescence et les fichiers créés.
ls -l cd seance-tp ls -l ls *
[ 2 ] Visualisation des fichiers du cours
- Établir la liste de tous les sous-dossiers et de tous les fichiers
présents dans le dossier seance-tp.
cd seance-tp find
- Trouver l'emplacement d'un fichier introduction.pdf
et se rendre dans le dossier contenant ce fichier.
cd ~ find -name "introduction.pdf" cd seance-tp/latex/
- Visualiser le fichier pdf.
evince introduction.pdf &
- Trouver l'emplacement du fichier demos.html.
cd ~ find -name "demos.html" cd seance-tp/html-css/
- Lancer firefox pour visualiser ce fichier et naviguer.
firefox-esr demos.html
[ 3 ] Dans une arborescence : rechercher et compter
- Rechercher sur votre compte les fichiers pdf. Faire afficher leur nombre.
cd ~ find -name "*.pdf" find -name "*.pdf" | wc -l
- Rechercher dans le dossier seance-tp les occurrences du mot nature dans les fichiers.
cd ~ man grep grep -r nature seance-tp
- Se restreindre au mot lui-même mais autoriser les différences de casse.
grep -riw nature seance-tp
- Obtenir le nombre de ces occurrences.
grep -riw nature seance-tp | wc -l # ATTENTION : on compte en fait le nombre de lignes sur lesquelles le mot apparaît... une ou plusieurs fois.
- Rediriger les lignes contenant le mot vers un fichier et consulter ce fichier dans un
éditeur de texte.
grep -riw nature seance-tp > ~/resultats.txt gnome-text-editor ~/resultats.txt &
[ 4 ] Extraction du texte d'un document
- Ouvrir les fichiers présents dans le dossier misc, contiennent-ils
le mot nature ?
cd seance-tp cd misc soffice chs-juin-2011.doc & evince Programme.pdf & evince risque-alcool.pdf & evince pdyf-p55.pdf & eog cake.png &
- Extraire le texte contenu dans le document pdf nommé Programme.pdf.
Idem avec le fichier caviarder.pdf (observer le d'abord avec un lecteur de documents pdf).pdftotext -layout Programme.pdf
- OCRiser l'image de document nommée de cake.png pour en obtenir le texte.
tesseract -l fra cake.png cake ls -l gnome-text-editor cake.txt
-
Tester ces deux techniques sur d'autres fichiers présents dans le dossier (misc).
pdftotext -layout pdyf-p55.pdf # NE DONNE RIEN CAR LE PDF EST UNE IMAGE tesseract -l fra pdyf-p55.pdf yemba # NE MARCHE PAS CAR TESSERACT NE TRAITE PAS LES PDF tesseract pdyf-p55.png yemba # KO CAR TESSERACT N'A PAS ÉTÉ ENTRAÎNÉ SUR LE YEMBA pdftoppm -png risque-alcool.pdf risque-alcool # CONVERSION D'UN PDF EN PNG tesseract -l fra risque-alcool-1.png risque
[ 5 ] Dans un fichier : découper, chercher, compter
- Pour le fichier introduction.tex, obtenir :
le nombre de lignes, le nombre de mots, le nombre de caractères
et le nombre de diapositives.
cd seance-tp/latex/ wc introduction.tex grep frametitle introduction.tex | wc -l
- À partir du fichier kdos.txt,
extraire les appellations des jouets.
cut -d\; -f2 kdos.txt cut --delimiter=\; --fields=2 kdos.txt
- Idem en se restreignant aux jouets pour enfants de 3 ans.
grep '3 ans' kdos.txt | cut -d\; -f2
- Idem en classant les jouets par ordre alphabétique et en écartant les éventuels doublons.
grep '3 ans' kdos.txt | cut -d\; -f2 | sort | uniq
- Mêmes questions pour les jouets sans précision d'âge.
grep -vw ans kdos.txt | grep -vw mois | cut -d\; -f2 | sort | uniq
- À partir du fichier nat2020.csv, établir la liste des
prénoms donnés en France depuis 1901.
cut -d\; -f2 nat2020.csv | sort | uniq cut -d\; -f2 nat2020.csv | sort | uniq | wc -l
[ 6 ] Structuration de documents et changement de formats
À partir du format Markdown
- Se déplacer dans le dossier contenant les fichiers avec l'extension .md
et observer le contenu de ces fichiers.
find -name *.md cd markdown
- Transformer automatiquement le fichier exemple.md en html, voir le résultat.
pandoc exemple.md -o exemple.html ls firefox-esr exemple.html &
- Transformer automatiquement le fichier alice.md en pdf, voir le résultat.
pandoc alice.md -o alice.pdf ls evince alice.pdf &
- Transformer automatiquement le document alice.md en epub, voir le résultat.
pandoc alice.md -o alice.epub ls atril alice.epub &
- Décompresser le fichier alice.epub obtenu comme s'il s'agissait d'un fichier avec l'extension .zip
unzip alice.epub ls cd EPUB/text firefox-esr ch001.xhtml &
À partir du format LaTeX
- Compiler le fichier introduction.tex pour obtenir un fichier pdf.
pdflatex introduction.tex pdflatex introduction.tex
- Constater que des fichiers ont effectivement été créés par la compilation.
ls -l
- Effacer les autres fichiers produits à l'exception du pdf.
rm *.aux *.log *.nav *.out *.snm *.toc *.vrb
- Produire un fichier pdf à partir de introduction.tex en mode handout.
- Partir du fichier minimal.tex, l'enrichir et produire un document pdf.
[ 7 ] Codages des fichiers
- Lire le cours codage, en particulier la section sur le codage des caractères et l'exemple de codage/décodage.
- Convertir en utf-8 les fichiers précédemment repérés
comme étant en latin1.
cd seance-tp/textes file * iconv -f iso-8859-1 -t utf-8 horla.txt > horla-utf8.txt file *
- Constater le changement en affichant le contenu de ces fichiers dans le terminal.
[ 8 ] Manipulation de fichiers
- Copier le dossier seance-tp sur le bureau, renommer ce dossier.
cd cp -r seance-tp/ Bureau/ cd Bureau/ mv seance-tp fichiers-seance-linux
- Donner l'accès en lecture à tous au dossier créé sur le bureau.
chmod a+r fichiers-seance-linux ls -l
- Enlever les droits de lecture sur le fichier demos.html
pour les personnes n'appartenant pas au groupe.
cd fichiers-seance-linux/html-css/ chmod o-r demos.html ls -l
- Pour tous, enlever les droits d'écriture sur les fichiers présents
dans le dossier latex.
chmod a-w fichiers-seance-linux/latex/* ls -l fichiers-seance-linux/latex/*
- À chaque étape, observer que les droits sont effectivement modifiés.
ls -l
- Dans le dossier latex, créer un nouveau dossier nommé essai.
cd fichiers-seance-linux/latex/ mkdir essai
- Effacer la copie présente sur le bureau. Que se passe-t-il ?
Modifier ce qui doit l'être pour effectivement effacer le dossier.
rm -r fichiers-seance-linux chmod 644 fichiers-seance-linux/latex/* rm -r fichiers-seance-linux
- Obtenir l'emplacement précis de votre compte.
cd ~ pwd
- Lister le contenu de votre répertoire et en particulier les fichiers et dossiers cachés.
ls -a
- Faire apparaître les droits et les tailles des fichiers.
ls -alh
- Obtenir la taille du dossier seance-tp.
cd ~ du -h seance-tp
- Archiver et compresser ce dossier, puis observer la taille du fichier obtenu.
tar cvf tp.tar seance-tp ls -lh bzip2 tp.tar ls -lh
[ 9 ] Programmes et processus
lancement de commandes
- Quels sont les emplacements des commandes pdflatex, firefox-esr et ls ?
- Afficher toutes les commandes effectuées depuis le début de la séance.
- Dans cette liste, ne conserver que les utilisations de la commande cd.
- Afficher la liste des processus en cours d'exécution sur la machine, puis se restreindre à ceux appartenant à l'utilisateur.
exécution de programmes perl
- Se rendre dans le dossier perl.
- Observer les droits associés aux fichiers présents et constater qu'ils sont exécutables.
- Les exécuter à tour de rôle et observer les deux comportements.
- Ouvrir et comparer les deux fichiers perl dans un éditeur de texte.
[ 10 ] Récupération d'informations du web
- Trouver un dictionnaire de cuisine sur le web.
- Récupérer l'une des pages de définition depuis le terminal.
- Idem mais en redirigeant le résultat dans un fichier, puis ouvrir ce fichier dans l'éditeur de texte et repérer le mot défini sur la page d'origine.
- À nouveau, récupérer la page dans le terminal en isolant le mot défini.
Question subsidiaire : comment automatiser ce traitement ?