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 :
- Trouver l'icône dans le menu Application (icône de Cinnamon à gauche)
- Cliquer sur l'icône "Terminal" dans la barre des tâches avec la configuration par défaut
- Vous pouvez également cliquer avec le menu droit sur le bureau (menu contextuel) et trouver le bon menu (Open in a Terminal)
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 :
- Tout d'abord, dans un terminal, un historique des commandes est maintenu( shell bash). Il suffit d'appuyer sur les touches arrow_upward et arrow_downward pour se balader dans cet historique.
- Lorsque vous tapez un nom de fichier ou de répertoire, il suffit d'appuyer sur la touche keyboard_tab (tab) pour que le terminal essaie de compléter automatiquement le nom. S'il y a ambiguïté, le système complètera ce qu'il peut et/ou vous proposera les alternatives.
- Vous pourrez également faire du copier/coller avec la souris. Vous pouvez sélectionner le contenu avec la souris (par exemple, du code ci-dessous) et appuyer avec le bouton du milieu de la souris à l'emplacement où vous voulez coller. Simple, non ?
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)).
- Donner les chemins relatifs de dave, de scarlett puis olaf à partir du répertoire kevin
- Créer les fichiers (vides) disney dans reine_des_neiges et bonhomme_de_neige dans olaf sans vous déplacer dans l'arborescence.
- Se déplacer dans olaf
- Copier le fichier bonhomme_de_neige dans $HOME en le baptisant bonhomme_relatif en utilisant un chemin relatif
- Copier le fichier bonhomme_de_neige dans $HOME en le baptisant bonhomme_absolu en utilisant un chemin absolu
- Se déplacer dans reine_des_neiges
- Copier le fichier disney dans elsa
- Copier tous les répertoires de minions dans le répertoire anna avec une seule commande
- Allez dans le $HOME et vérifier que l'arborescence est correcte
- Effacer tous les répertoires et fichiers que l'on vient de créer
- Trouver les informations affichées par la commande
$ wc /usr/include/X11/Xlib.h
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.
- Compléter la ligne 4 avec "fichiers"
- Enlever le S à parent
- Compléter la ligne 10
- Ajouter les entêtes
* COMMANDE cmd
en copiant-collant, le nom de la commande est en majuscules. - Faire des blocs spécifiques pour mkdir et rmdir au bon endroit
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.
- Connectez-vous sur votre machine virtuelle à partir du PC sous LINUX (machine créé et lancée au préalable - my.isima.fr)
- Cherchez l'utilitaire
Remmina
, saisissezvm-login
dans le champ RDP - Mettez en plein écran, lancez un terminal et installez l'application
tint
$ 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.
- 1
- 2
- 3
- 4