Copy of https://perso.isima.fr/loic/unixc/tpunix01.php
tete du loic

 Loïc YON [KIUX]

  • Enseignant-chercheur
  • Référent Formation Continue
  • Responsable des contrats pros ingénieur
  • Référent entrepreneuriat
  • Responsable de la filière F2 ingénieur
  • Secouriste Sauveteur du Travail
mail
loic.yon@isima.fr
phone
(+33 / 0) 4 73 40 50 42
location_on
Institut d'informatique ISIMA
  • twitter
  • linkedin
  • viadeo

[UNIX] TP 1

 Cette page commence à dater. Son contenu n'est peut-être plus à jour. Contactez-moi si c'est le cas!

Date de première publication : 2014/09/09

Bonjour, si vous êtes en première année ISIMA, que vous êtes connectés sur nightmare ou ada ou encore sur un PC sous LINUX, et que c'est le premier jour de TP des semaines bloquées, FÉLICITATIONS, vous avez réussi à afficher cette page qui va vous donner la suite des opérations.

Découverte de l'interface

Nous allons avoir besoin de ce que l'on appelle un terminal, voici les deux premières méthodes pour en obtenir un :

Nous allons vous proposer un certain nombre de commandes qui parfois seront un peu longues à taper. Nous vous conseillons de les taper mais il y a quelques astuces pour ne pas faire que cela :

Pendant des milliers d'années, on a pris l'habitude de ne pas éteindre les terminaux. Maintenant pour une démarche respectueuse de l'environnement, on éteint les terminaux en fin de journée, avant un week-end ou des vacances

Visite guidée

Vous allez donc ouvrir un terminal et taper la commande pwd. Cette commande permet de connaître le répertoire dans lequel vous êtes actuellement. Suivant la manière d'ouvrir le terminal, vous pouvez être dans votre $HOME ou bien dans le sous-répertoire Desktop. Voici ce que voit l'utilisateur stuart :

$ pwd
/home/local.isima.fr/stuart
$

Le signe $ (ou alors un rappel de l'emplacement du répertoire) est ce que l'on appelle le prompt ou invite de commandes. Cela signifie que la machine attend nos instructions.

On va maintenant lister le contenu de deux répertoires : le répertoire courant et un répertoire système.

$ ls
$ ls /usr

Le répertoire courant a l'air vide, vous pouvez essayer la commande suivante qui permet de lister tous les fichiers

$ ls -a 

Deux répertoires particuliers apparaissent : point (.) et pointpoint (..). Le répertoire point est un raccourci pour le répertoire courant et le répertoire pointpoint est un raccourci pour le répertoire parent. Seul le répertoire racine (ou root ou /) n'a pas de répertoire parent.

La lecture du répertoire usr n'est pas facile, vous pouvez essayer la commande suivante pour afficher les éléments du répertoire ligne par ligne ;

$ ls -l 

Nous verrons dans le TP suivant ce que signifient les différentes colonnes. Bien entendu, vous pouvez lister TOUS les éléments ligne par ligne :

$ ls -la
$ ls -al
$ ls -a -l
$ ls -l -a

La commande ls a pas mal d'options. Quand on sèche, l'aide est disponible comme suit :

$ man ls

Pour sortir de la commande man, il suffit d'appuyer sur la touche q comme Quit.

On va maintenant se balader sur le disque et on va commencer par le répertoire parent ... enfin ..

$ cd ..
$ pwd 

Si vous listez le répertoire, vous trouvez tous les répertoires correspondant aux étudiants de l'ISIMA. Vous pouvez essayer d'aller voir ce qu'il y a dans les répertoires. Nous verrons demain comment contrôler les accès.

Les répertoires

Si vous n'êtes pas dans votre répertoire , retournez-y !

$ cd 
$ cd $HOME
$ cd ~
$ cd ~stuart  

Voici comment créer un répertoire, comment l'effacer (s'il est vide) et l'effacer s'il n'est pas vide :

$ mkdir TP
$ rmdir TP
$ rm -r TP 

 

Attention, même si la commande rm permet de demander une confirmation (chose que l'on ne lit jamais), il est déconseillé d'effectuer la commande rm -r * surtout si l'on a l'habitude d'avoir des privilèges de super utilisateur.

Fichiers

Pour créer un fichier, vous pouvez utiliser une des commandes suivantes :

$ touch fichier
$ code fichier  (VS Code)
$ vi fichier  (VI, cf plus bas)

La commande touch permet de créer un fichier vide (ou de mettre à jour la date de modification du fichier). Les autres commandes sont des éditeurs de texte classiques (on peut ajouter à la liste geany, kate, gedit, pluma, nano en fonction des environnements). vi un éditeur texte standard est vu plus loin. Vous pouvez utiliser (x)emacs si vous le souhaitez également.

Pour afficher un fichier texte, on peut utiliser les commandes suivantes :

$ cat fichier
$ cat /usr/include/stdio.h
$ more /usr/include/stdlib.h
$ less /usr/include/X11/Xlib.h
$ head stdio.h
$ tail Xlib.h
$ wc -l Xlib.h

Si le fichier n'est pas dans le répertoire courant, il faut donner le chemin relatif ou absolu pour le trouver !

$ cp origine destination
$ cp /etc/host .
$ cp fic1 fic2
$ cp rep1/fic1 rep2/fic2

L'option -r permet de faire une copie récursive. La commande mv a une syntaxe relativement similaire à cp et permet de déplacer un fichier.

Les fichiers destination de cp et mv sont écrasés sans avertissement. De manière générale, on vous déconseille de faire un mv mais plutôt un cp suivi dans rm lorsque la copie a été validée (par vous-même)

Les commandes pour effacer un fichier sont naturellement celles-ci : la deuxième permet de demander confirmation

$ rm fichier
$ rm -i fichier

Majuscules ou minuscules (casse)

Taper les commandes suivantes :

$ touch loic
$ touch Loic

Avec un ls, vous pouvez constater qu'il y a bien deux fichiers. En général, sous UNIX/LINUX, le système de fichiers fait attention à la casse et distingue bien les deux noms de fichiers.

Ce n'est pas le cas avec les systèmes d'exploitation comme Windows et de manière plus surprenante avec Mac OS (en fait, cela dépend du système de fichiers utilisé).

Exercice

Créer l'arborescence suivante dans votre $HOME :

minions
|-- freres
|   |-- bob
|   |-- dave
|   |-- kevin
|   `-- tim
`-- patrons
    |-- dracula
    |-- gru
    |-- napoleon
    |-- scarlett
    `-- tyrannosaure

L'arborescence a été affichée par la commande tree

La commande UNIX tree n'est pas installée par défaut. Si vous voulez l'utiliser sur votre machine, vous devrez le faire.

Créer au même niveau que le répertoire minions un répertoire films et déplacer le répertoire minions et tous ses répertoires dans le répertoire films. Ajouter cette hiérachie de répertoires dans films :

reine_des_neiges
|-- anna
|-- elsa
`-- olaf

Si vous êtes allergiques, prenez le film ou la série que vous voulez avec quelques personnages (j'ai pas osé mettre Game of Thrones, c'est trop sanglant :-).

VIM

L'éditeur VI (aka VIM) est un des plus vieils éditeurs existants. Il est nécessaire de savoir s'en servir car il est installé sur toutes les machines UNIX et peut être utilisé même quand le mode graphique n'est pas disponible (si, si, c'est une configuration fréquente !)

$ vi fichier

permet d'éditer le fichier donné. Si le fichier n'existe pas, il sera créé si on en a les droits et si on le demande explicitement.

Pour apprendre le maniement de vi, il existe la commande vimtutor. Il existe aussi un jeu en ligne vim-adventures (il est joli mais pas gratuit)

Pour sortir de l'éditeur, tapez : puis q.

L'éditeur a deux modes : un mode "insertion" pour écrire / remplacer / ajouter / modifier du texte et un mode "commande" plutôt puissant. La touche ESC permet de passer en mode commande. Les touches i a o r permettent de passer en mode insertion. VI fait la distinction entre majuscules et minuscules. Il faut essayer les combinaisons avec la touche MAJ appuyée

Les touches h,j,k et l permettent de se déplacer dans le texte. On peut utiliser également les flèches de direction.

La touche x permet d'effacer un caractère.

VI intègre une pile d'annulation avec les touches u et U

J permet de concaténer deux lignes

Une fois les modifications faites, on peut sauvegarder avec :w ou :w!, sauvegarder en quittant avec :wq ou ZZ!

On ne sauvegarde pas en utilisant le raccourci classique CTRL+S. Ce raccourci demande au terminal courant de ne plus afficher quoi que ce soit (on a l'impression que le terminal est "planté". CTRL+Q redonne au terminal sa capacité d'affichage.

Il est facile de se rendre à une ligne donnée, il faut taper : et valider après le numéro de ligne.

Le copier/coller se fait avec les commandes yy, dd , p et P

Le chercher/remplacer est également très puissant.

Pour finir, il est possible d'utiliser un fichier de configuration qui est lu à chaque lancement du programme. Celui-ci se trouve dans votre $HOME et s'appelle .exrc.

Exercice

Voici quelques manipulations à faire sur le fichier resume.

Le résultat voulu est disponible ici. On peut comparer deux fichiers avec la commande diff. Si celle-ci n'affiche rien, c'est que la comparaison est parfaite (casse incluse) !

$ diff fichier1 fichier2

Il est tout à fait possible qu'il y ait quelques espaces de trop dans le document final

Ne partez pas trop vite !!! DÉCONNECTEZ-VOUS !! C'est possible de le faire deux icônes à cliquer et un bouton d'une boite de dialogue pour confirmer.