1. L'outil de pagination less

Téléchargez une version du dictionnaire "Oxford English Dictionary" avec 36'000 mots en utilisant l'outil curl :

curl -o dictionary.txt https://raw.githubusercontent.com/sujithps/Dictionary/master/Oxford%20English%20Dictionary.txt

Examinez le contenu du fichier dictionary.txt avec l'outil de pagination less. Utilisez l'aide en ligne de less en tapant h ou consultez la man page pour répondre aux questions suivantes :

  1. Avec quelle touche se déplace-t-on au début du fichier ?

    g < ESC-< * Aller à la première ligne du fichier (ou ligne N)

  2. Avec quelle touche se déplace-t-on à la fin du fichier ?

    G > ESC-> * Aller à la dernière ligne du fichier (ou ligne N)

  3. Comment peut-on commencer à chercher toutes les occurrences du motif admin ?

    less -p admin dictionary.txt pour ouvrir le fichier à la première occurrence du mot "admin" 
    
    /admin pour trouver les occurrences du mot "admin" à la suite du fichier en cours de consultation
    
    &admin pour afficher les lignes contenant le mot "admin" dans le fichier en cours de consultation
    
    ?admin pour trouver les occurrences du mot "admin" précédemment dans le fichier en cours de consultations
    
    cat dictionary.txt | grep "admin"
    
  4. Comment se déplace-t-on à l'occurrence suivante ?

    n pour aller à l'occurrence suivante

    N pour aller à l'occurrence précédente

  5. Quel est l'effet de taper -i avant une recherche ? Et un -i répété ? Positionnez-vous au début du fichier et cherchez le motif bob.

    -i ignore la casse dans la recherche. Plusieurs -i de changent rien.

  6. Que se passe-t-il si vous ouvrez

    1. un fichier comprimé, par exemple /usr/share/doc/bash/INTRO.gz ?

      /usr/share/doc/bash/INTRO.gz => command not found
      gzip -d /usr/share/doc/bash/INTRO.gz => décompresse le fichier
      
    2. une archive comprimée, par exemple /usr/share/doc/apg/php.tar.gz

      /usr/share/doc/apg/php.tar.gz => command not found
      tar -C /usr/share/doc/apg/php.tar.gz => décompresse le fichier et l'archive
      

2. Naviguer le manuel unix

Répondez aux questions suivantes concernant le manuel Unix. La majorité des informations se trouve dans la man page de la commande man.

  1. Quelles sont les neuf sections du manuel Unix ?

    man man

  2. Quelle section du manuel contient les commandes utilisateur telles que cat et ls ?

    La section 1. Nous trouvons ceci en tapant man ls et man cat

  3. Quelle section documente les formats de fichier, tels que les fichiers de configuration ?

    La section 5: "File formats and conventions"

  4. Quelle section contient des commandes d'administration système, telles que shutdown ?

    La section "8: System administration commands"

3. La structure des "man pages"

3.1. section SYNOPSIS

La section SYNOPSIS montre brièvement comment une commande est appelée. Lisez la man page pour man et expliquez ce que les textes de SYNOPSIS suivants veulent dire. Expliquez comment chaque commande peut ou doit être appelée; vouz n'avez pas à savoir ce que les commandes font réellement.

  1. mkpasswd PASSWORD SALT

    Change le mot de passe de l'utilisateur SALT et le remplace par "PASSWORD".

  2. uniq [OPTION] ... [INPUT [OUTPUT]]

    Permet de repérer et supprimer les doublons.

  3. gzip [ -acdfhlLnNrtvV19 ] [-S suffix] [ name ... ]

    Décompresse un fichier compressé au format .gz

  4. pour

    chcon
    

    :

    1. chcon [OPTION]... CONTEXT FILE...

      Change le contexte de sécurité du fichier par celui indiqué dans CONTEXT

    2. chcon [OPTION]... [-u USER] [-r ROLE] FILE...

      Ajouter l'utilisateur et le rôle dans le contexte de sécurité cible

    3. chcon [OPTION]... --reference=RFILE FILE...

      Option qui permet de remplacer le contexte de sécurité cible par celui d'un fichier référencé par RFILE

3.2. Autres sections

Lisez les man pages pour man et aussi d'autres man pages (par exemple pour ls, uniq, chmod et adduser) et répondez aux questions suivantes.

  1. Qu'est-ce que vous trouvez normalement dans la section DESCRIPTION ?

    Une courte description de la commande et de quelques options ou alternatives très utiles.

  2. Quelle section documente normalement, en détail, ce que fait chaque option de commande ?

    La section "OPTIONS".

  3. Disons que vous lisez la man page pour une commande et que l'information que vous cherchez ne s'y trouve pas. Dans quelle partie trouvez-vous des références à d'autres man pages qui pourraient contenir ce que vous cherchez (jetez un oeil à la man page pour reboot, imaginant que vous cherchez une commande pour éteindre l'ordinateur) ?

    La section "SEE ALSO".

  4. Dans quelle section trouvez-vous de l'information sur les fichiers de configuration utilisés par un programme ?

    La section "FILES".

3.3. Résoudre des ambiguïtés

Utilisez la man page de man pour répondre aux questions suivantes :

  1. Parfois il existe plusieurs man pages (dans des sections différentes) pour le même mot-clé. Quelle option de la commande man pouvez-vous utiliser pour les afficher toutes ?

    "whatis"

  2. Parfois vous ne savez pas le nom d'une commande que vous cherchez, mais vous pouvez deviner un terme qui est en relation avec la commande. Quelle option de la commande man pouvez-vous utiliser pour afficher toutes les pages qui mentionnent un terme donné ?

    "apropos" et "man -k" qui ont la même fonction.

3.4. La commande ls

Faites afficher la man page pour la commande ls.

  1. Que fait la commande ls ?

    Elle liste les fichiers et dossiers présents depuis un contexte donné.

  2. Quelle option de ls affiche de l'information sur la taille des fichiers, leur propriétaire, leur groupe, leurs permissions, etc. ?

    ls -l

  3. Que fait l'option -R de ls ?

    Elle liste les sous-répertoires récursivement.

  4. Installez l'outil tree en tapant sudo apt install tree. Comparez tree avec ls -R.

    3.4-lsR_tree

    Avec tree, on obtient une arborescence visuelle.

4. Chemins absolus et relatifs

Le schéma suivant montre une partie d'un système de fichier Unix.

/
├── bin/
├── dev/
├── etc/
├── home/
| └── rijag112/
| | └── bin/
| | | ├── mplayer
| | | └── mencoder
| | ├── labs/
| | └── private/
| ├── cosaz039/
| ├── zbicz922/
| ├── tomli839/
| └── ramsi645/
├── lib/
├── proc/
├── sbin/
├── tmp/
├── usr/
 ├── bin/
 | ├── man
 | ├── info
 | ├── less
 | ├── ls
 | └── ssh
 ├── lib/
 ├── local/
 | ├── bin/
 | ├── man/
 | └── share/
 ├── sbin/
 └── share/
 ├── doc/
 └── man/
  1. Donnez un chemin absolu pour ssh

    /usr/bin/ssh

  2. Donnez un chemin relatif pour

    ssh

    1. si le répertoire courant est /usr/

      bin/ssh

    2. si le répertoire courant est /usr/bin

      ssh

    3. si le répertoire courant est /usr/share

      ../bin/ssh

    4. si le répertoire courant est /usr/local/bin

      ../

5. Manipulation de fichiers

  1. Téléchargez l'archive ex01_files.zip sur votre machine avec la commande curl :

    curl -O http://heigvd-ads.s3-website-eu-west-1.amazonaws.com/exercises/ex01_files.zip
    

    Désarchivez l'archive :

    unzip ex01_files.zip
    

    Examinez la structure des répertoires et fichiers. Utilisant la ligne de commande, manipulez les répertoires et fichiers pour obtenir la structure suivante :

    ex01_files└── play| ├── trip| └── trip_copy└── work └── book ├── chap01 ├── chap02 └── chap03
    

    Juste après que nous ayons désarchivé l'archive, nous nous retrouvons avec la structure suivante:

    yanick@ubuntu:~/Documents/labo2/ex01_files$ tree ..├── chap03├── downloads│   └── book│   ├── chap01│   └── chap02├── play│   └── trip└── work
    

    Nous exécutons les commandes suivantes pour arriver au résultat souhaité:

    mv downloads/book workmv chap03 work/bookrmdir downloadscp play/trip play/trip_copy
    

    Nous vérifions à présent que le résultat est le bon avec la commande tree ex01_files

    yanick@ubuntu:~/Documents/labo2$ tree ex01_filesex01_files├── play│   ├── trip│   └── trip_copy└── work └── book ├── chap01 ├── chap02 └── chap03
    

    Le résultat correspond à ce qui était souhaité.

  2. Téléchargez et désarchivez le fichier http://heigvd-ads.s3-website-eu-west-1.amazonaws.com/exercises/ex02_files.zip. Faites un cd dans le répertoire obtenu. Vous avez maintenant les fichiers et répertoires suivants :

    .├── index2.html├── index.html├── index.html~├── labs│ ├── index.html│ ├── lab01.html│ └── starter.tar.gz└── lectures └── index.html
    

    Donnez l'arborescence des répertoires et fichiers après exécution des commandes suivantes (certaines des commandes peuvent échouer). Donnez le résultat sans exécuter les commandes sur votre ordinateur, ensuite vérifiez :

    mv labs/index.html labs.htmlmv labs labs.dmv index2.html index.htmlrm index.html~echo TBD > lectures/lc01.htmlmkdir downloadscd downloadsmv ../labs/starter.tar.gz .
    

    Nous téléchargeons d'abord l'archive à l'aide de la commande curl

    curl -O http://heigvd-ads.s3-website-eu-west-1.amazonaws.com/exercises/ex02_files.zip

    Puis la désarchivons à l'emplacement courant

    unzip ex02_files.zip

    Faisons à présent l'exercice de comprendre ce que fait chacune de ces lignes, et établissons l'arborescence qui devrait en résulter.

    mv labs/index.html labs.html déplace le fichier labs/index.html dans le dossier courant (ex02_files) et le renomme en labs.html

    mv labs labs.d renomme le dossier labs en labs.d

    mv index2.html index.html renomme le fichier index2.html en index.html. Cette commande risque de poser problème car nous avons déjà à cet emplacement un fichier qui s'appelle index.html

    rm index.html~ supprime le fichier index.html~

    echo TDB > lectures/lc01.html Crée un nouveau fichier lc01.html dans le dossier lectures et y insère le contenu "TBD".

    mkdir downloads créé un dossier downloads

    cd downloads change le répertoire courant pour downloads

    mv ../labs/starter.tar.gz . déplace le fichier start.tar.gz contenu dans le dossier labs dans le dossier downloads. Cette commande ne devrait pas fonctionner car nous avons précédemment renommé le dossier labs en labs.d.

    En suivant ces commandes, nous devrions nous retrouver avec l'arborescence suivante (on considère que toutes les commandes on fonctionné)

    ex02_files|-- index.html|-- index2.html|-- labs.html|-- labs.d |-- lab01.html |-- starter.tar.gz|-- lectures |-- lc01.html |-- index.html|-- downloads
    

    Effectuons à présent ces commandes dans le dossier et vérifions que la résultat est bien ce que nous attentions.

    Nous voyons donc que toutes les commandes ont passé sans erreur, sauf la dernière comme nous l'avions pensé. Voici l'arborescence après toutes ces commandes

     

    En comparant le résultat avec ce que nous avions prédit, nous voyons que la seule différence se trouve au niveau du fichier index.html qui a écrasé le fichier index.html original lors de la commande de renommage mv index2.html index.html.

6. Globbing

Téléchargez et désarchivez le fichier http://heigvd-ads.s3-website-eu-west-1.amazonaws.com/exercises/ex03_files.zip.

Vous trouverez dans le répertoire plusieurs fichiers de logs (simulés). Ils proviennent d'un serveur web qui est composé de différentes composants : le serveur web proprement dit, la base de données, plusieurs applications web. Il y a aussi des logs de composants non identifiés.

Utilisez la commande ls pour

  1. Trouver tous les logs du 1er mars 2015. ls *2015-03-01 ou ls | grep 2015-03-01

  2. Trouver tous les logs du composant database.

    ls *database* ou ls | grep database

  3. Trouver tous les logs des applications. ls *app* ou ls | grep app