logo telecom ipp

Chapitre 1 : Terminal

Terminal: Histoire

A l’origine, les ordinateurs n’ont pas de terminal, clavier, écran, mais un lecteur de ruban ou cartes perforées et une imprimante. Un programme est un paquet de cartes perforées ou un ruban qu’on met dans le lecteur, et quand l’ordinateur a fini le programme précédent, il lit le prochain paquet de cartes, exécute le programme et imprime les résultats. Le système d’exploitation est extrêmement simple.

A Télécom en 1985, j’ai déposé un paquet de cartes dans un casier du centre de calcul et j’ai récupéré le rapport le lendemain.

Le clavier est apparu pour taper des commandes dont le résultat était imprimé.

Les premiers écrans ressemblent aux radars dans les vieux films noir et blanc. Ils servent plus à afficher des informations graphiques qui ne passent pas sur des imprimantes de type « machines à écrire ».

Terminal: Histoire (suite)

Puis apparaissent les premiers terminaux avec un écran alphanumérique et un clavier. C’est à cette époque que se développe le système d’exploitation qui est à la base de ce que nous utilisons aujourd’hui : Unix.

A Télécom en 1985, les chercheurs avaient déjà des claviers, des écrans, mais pas de souris. Je possédais un PC avec 640Ko de RAM, avec un disque dur de 5Mo et une souris !

Sur un écran graphique actuel, une fenêtre alphanumérique remplace l’écran cathodique d’origine, et le clavier est temporairement attaché à cette fenêtre par un clic de la souris.

Le terminal vient donc du fonctionnement d’origine des ordinateurs. Il reste un outil précieux pour ce qui est administration de l’ordinateur.

Terminal: Principe

Le principe est le même que sur un terminal d’origine : vous tapez une commande, elle est exécutée, et le résultat est affiché sur l’écran en dessous de la commande au lieu de l’imprimante.

Selon le système d’exploitation, les commandes varient. MacOS et Linux, tous les deux basés sur Unix, ont un ensemble de commandes de base très proches. Windows a un terminal DOS avec des commandes très différentes et en fait très primitives, et aussi depuis peu un terminal dit PowerShell inspiré de Linux.

Le programme qui lit les commandes que vous tapez dans le terminal s’appelle le « shell ». Il lit la commande, la vérifie, va chercher le programme à exécuter, le lance, récupère le résultat et l’affiche. Il y a malheureusement beaucoup de variantes de shell.

Avant d’aller plus loin et de vous montrer des exemples, j’ai besoin de vous parler des fichiers et du système de fichiers.

Chapitre 1.1: Fichiers

Fichiers: Disques

Un disque est un appareil permettant de stocker des données informatiques. Originellement sous forme de disques magnétiques qui tournaient dans des boites sous vide, l’appellation disque est moins pertinente aujourd’hui avec les SSD qui sont de simples mémoires.

Un disque physique est organisé en « volumes » qui ne sont rien d’autres que des zones séparées du disque physique. Les données des fichiers sont organisées d’une certaine manière, c’est-à-dire leur format (HFS+, NTFS, FAT…). Certains formats sont plus faciles à lire sur certains systèmes mais dans le principe, ils rendent tous le même service : organiser les fichiers d’un volume en dossiers et sous-dossiers (directory ou folder en anglais) et gérer l’espace libre.

Un dossier est une liste de fichiers et de sous-dossiers. Il peut y avoir beaucoup de niveaux de sous-dossiers.

Fichiers

Un fichier est un paquet de données avec des caractéristiques diverses : un type de données (texte, image), une date de création, un auteur, un type d’encodage (US, FR, JP), un format (JPEG, PNG, Word), une localisation sur le disque, c’est-à-dire dans quel volume et quel dossier.

Pour naviguer un disque et trouver un fichier, vous pouvez utiliser Finder sur MacOS, Nautilus sur Linux et Explorer sur Windows, qui sont des logiciels graphiques pour consulter le contenu d’un volume.

Nous verrons des exemples dans les vidéos sur les terminaux mais une différence importante est la façon d’écrire les dossiers :

  • Sous Windows, un dossier se définit comme C:, avec C: pour le volume et pour le dossier et sous-dossier. Notez le back-slash comme séparateur.
  • Sous MacOS et Linux, un dossier se définit comme /Volumes/Large/Media/Movies. Notez le slash comme séparateur et le volume est un dossier presque comme un autre.

Note: vos fichiers à l’école

Vous disposez d’un espace de stockage de fichiers à l’école. Cet espace est sauvegardé. Il est disponible automatiquement sur toutes les machines de TP de l’école. Quand vous êtes connecté.e.s sur une de ces machines (Linux), le dossier home est votre espace.

Vous pouvez accéder à cet espace de stockage depuis un PC en vous connectant sur \samba.enst.fr_login

Vous pouvez accéder à cet espace de stockage depuis un Mac en vous connectant sur smb:\samba.enst.fr_login

Votre machine personnelle doit être connectée sur le wifi Campus-Télécom ou utiliser le VPN (voir plus loin).

Terminal: suite

Nous avons maintenant tous les éléments pour vous montrer des exemples d’utilisation des terminaux.

Choisissez votre système d’exploitation préféré pour voir la démo.

Mac OS

Linux

Windows

Terminal: Exécuter un programme

Pour exécuter un programme, vous devez soit connaitre sa localisation sur le disque, soit juste son nom si le programme est dans le chemin d’accès.

Un programme est installé dans un dossier. Ce dossier peut être un dossier du système pour les programmes qui appartiennent au système d’exploitation. Ce dossier peut être un dossier particulier juste réservé à ce programme, surtout si ce programme a des ressources dont il a besoin. Dans ce dernier cas, l’installation du programme sur votre machine revient à créer le ou les dossiers dont ce programme a besoin sur votre machine et à y mettre toutes les ressources nécessaires, ce qui peut inclure des images, des polices, de la documentation, etc.

Le « shell » (programme qui lit vos commandes et les interprète) a un chemin d’accès où il va chercher les commandes. Le chemin d’accès est une liste de dossiers contenant des programmes. Le shell lit votre commande, isole le nom du programme, va voir dans tous les dossiers s’il trouve ce programme et le lance avec les arguments que vous avez donnés.

Voyons quelques exemples dans votre OS préféré.

Mac OS

Linux

Windows

Terminal: Très utile

Dans le terminal, vous avez un historique des commandes passées, accessible avec les touches curseur vers le haut et vers le bas. Avec les touches curseur vers la droite et vers la gauche, vous pouvez éditer une commande passée pour la modifier, puis appuyer sur retour chariot ou enter pour l’exécuter.

Toujours dans le terminal, la touche tab permet dans les shells modernes de compléter le mot courant : par exemple, vous voulez afficher un fichier texte du dossier courant dont le nom commence par a, tapez « cat a » puis appuyez sur tab qui complètera le nom du fichier s’il n’y a pas d’ambiguité.

Tout ceci a été démontré dans les vidéos précédentes, c’est rappelé ici pour insister.

Terminal: Commandes utiles

En plus de cd, pwd et ls:

  • mkdir x : créer un sous-dossier x
  • rm x : supprimer le fichier x
  • mv x y : renommer le fichier ou dossier x en y
  • rmdir x : supprimer le dossier x qui doit être vide
  • rm -r x : supprimer le dossier x et son contenu, l’argument -r signifiant “récursif”

Et en même temps, tout cela peut être fait dans l’outil graphique de consultation des fichiers de votre système d’exploitation.

Le prochain transparent montre une démo de tout cela sur Mac.

MacOS

Fichiers cachés, configuration

Il y a des fichiers qui sont « cachés ». Ce sont des fichiers qui servent à vos programmes, mais que vous n’avez normalement pas besoin de voir, sauf accident. Ce sont par exemple les fichiers dont le nom commence par un point. Pour les voir, il faut ajouter une option à ls

Terminal: difficultés

Les noms de fichier peuvent contenir des espaces. Dans ce cas, le shell prend le nom du fichier comme 2 (ou plus) noms séparés. Pour que le shell comprenne un nom de fichier avec espaces, il faut entourer le nom du fichier par des guillemets ou des apostrophes (” ou ’)

S’il manque un ” ou ’ dans une ligne, alors le shell attend le ” ou ’ manquant indéfiniment : faites controle-C pour en sortir.

. est le dossier courant, .. est le dossier parent, ~ est le dossier racine de l’utilisateur connecté

/home/dufourd/test/src est un chemin absolu, ~/test/src est le chemin équivalent relatif à mon dossier racine

cd (tout seul) me remet dans le dossier racine (sauf sur Windows)

Dans mon dossier racine, test/src est le chemin relatif équivalent au chemin absolu /home/dufourd/test/src

/home/dufourd/test/src fonctionne où que vous soyez, ~/test/src aussi, mais un chemin relatif dépend d’où vous êtes

Terminal: commandes diverses

  • date: affiche la date
  • whoami: affiche le nom du compte connecté
  • who: qui est connecté sur cette machine
  • hostname: affiche le nom de la machine
  • history: affiche l’historique des commandes shell
  • man x: affiche le manuel de la commande x
  • clear: efface le terminal
  • cat x: affiche le contenu du fichier x comme si c’était du texte (si c’est du binaire, alors ça fait n’importe quoi)
  • less x: affiche le contenu du fichier x comme si c’était du texte et page par page; espace pour avancer, et q pour sortir

Terminal: fichiers encore

En faisant ls -l vous pouvez voir les permissions des fichiers.

Pour changer les permissions: chmod <permission> <fichier>. Par exemple, changer un fichier de clef SSH qui est .rwxrwxrwx, faire chmod 700 id_ed25519

Les permissions sont: r=lecture w=écriture x=executable. Les premiers RWX sont pour l’utilisateur, puis le groupe, puis tout le monde. 700= RWX pour l’utilisateur, rien pour les autres. 777=RWX pour tout le monde. 640= RW utilisateur, R groupe, rien pour les autres. Le premier caractère des permissions est un d (pour un dossier) ou un . (pour un fichier)

Changer un fichier texte pour qu’il devienne executable: chmod +x script.sh. Faites man chmod pour connaitre les détails.

Pour savoir ce qui prend de la place sur votre compte, la commande du affiche la taille des fichiers et dossiers. Par défaut, l’unité est le bloc de 512 octets, donc ajoutez toujours l’option -k pour avoir des Ko.

  • du -k donne l’occupation du dossier courant et de tous les sous-dossiers
  • du -s -k donne juste l’occupation du dossier courant
  • du -s -k * donne l’occupation de tous les sous-dossiers (un par un)
  • ncdu est une application interactive plus sympa que du mais qui n’est pas toujours installée