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
ISIMA
  • twitter
  • linkedin
  • viadeo

[UNIX] TP 1

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

Bonjour, si vous êtes en première année ISIMA, que vous êtes connectés sur un PC sous LINUX dans une salle de TP, sur ada dans une salle de terminaux ou bien encore sur la machine virtuelle mise à votre disposition, 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 ou encore shell, 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 PC/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 connecté sur sa machine virtuelle :

stuart@vm-stuart:~$ pwd
/home/stuart
stuart@vm-stuart:~$

Le signe $ (avec ce qui le précède éventuellement) est ce que l'on appelle le prompt ou invite de commandes. Cela signifie que la machine attend nos instructions. Pour la suite des exercices, on se contentera de $

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

$ ls
$ ls /usr

Vous pouvez essayer la commande suivante qui permet de lister tous les fichiers présents dans les répertoires :

$ 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 /usr

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 /usr
$ ls -al /usr
$ ls -a -l /usr
$ ls -l -a /usr

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 des répertoires pour tous les utilisateurs qui se se sont déjà connectés sur votre machine. Vous pouvez essayer d'aller voir ce qu'il y a dans les répertoires s'il y en a. Nous verrons demain comment contrôler les accès.

Si le répertoire est vide, demandez à un voisin de se connecter et réessayez !

Les répertoires

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

$ cd 
$ cd $HOME
$ cd ~
$ cd ~stuart (si stuart est votre login/indentifiant)

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

$ mkdir SB
$ rmdir SB
$ rm -r SB

 

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 premier_fichier.txt
$ code premier_fichier.txt  (VS Code)
$ vi premier_fichier.txt    (vi, cf plus bas)

La commande touch permet de créer un fichier vide (ou de mettre à jour la date de modification du fichier s'il existe déjà). Les autres commandes sont des éditeurs de texte classiques (on peut ajouter à la liste geany, kate, pluma, gedit, (x)emacs, nano en fonction des environnements). vi un éditeur texte incontournable est vu plus loin.

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

$ cat nom_de_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)

Toutes les machines mises à votre disposition peuvent être réinstallés sans préavis. Un seul répertoire n'est jamais effacé (il est même sauvegardé, la classe !!!). Quelle est la commande pour copier un répertoire SB de votre home dans le sous-répertoire shared ?

$ cd
$ mkdir SB SB/TP1 SB/TP2
$ touch SB/TP1/ex1 SB/TP1/ex2 SB/TP2/ex1
$ tree SB

$ cp -r SB shared
$ tree shared

On vous conseille de travailler en local pendant les TPs et de copier les fichiers importants dans shared en fin de TP.

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 (Game of Thrones ou The Acolyte, on tranchera dans le vif)).

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

Une pincée de superutilisateur

Sur la plupart des machines mises à disposition, vous avez des droits limités. En revanche sur la machine virtuelle, vous pouvez être superutilisateur.

$ apt install tint

Bon, ça ne marche pas parce que vous n'avez pas les droits, obtenez-les en sudo :

$ sudo apt install tint
$ tint

Vous pouvez également utiliser une connexion RDP sous Windows ou guacamole.isima.fr avec un navigateur.

Pour quitter la machine virtuelle, fermez Remmina

A demain...

Ne partez pas trop vite !!! DÉCONNECTEZ-VOUS ou ETEIGNEZ l'ordinateur !! Cliquez sur l'icône "Cinnamon" puis sur une des deux icônes du dessus. Confirmez l'action avec la boite de dialogue.