Déb/u/o/gue tes humanités
Saison 4 Séance 01

Comprendre l’ordinateur avec le terminal

Pourquoi est-ce important de savoir comment les fichiers de son ordinateur sont organisés ? Plusieurs stratégies permettent de les manipuler plus facilement, et même créer des liens si besoin. Nous proposerons une douce introduction au terminal.

Chaire de recherche du Canada sur les écritures numériques, Bibliothèque des lettres et des sciences humaines, Ouvroir d'histoire de l'art et de muséologie numérique. — giulia.ferretti@umontreal.ca ; louis-olivier.brassard@umontreal.ca

Plan de la séance

  1. Tour de table et d’écrans
  2. Déroulement de la formation
  3. Origines de l’informatique
  4. Principes du numérique
  5. Qu’est-ce qu’un programme/logiciel ?
  6. Usages basiques d’un terminal

1. Tour de table et d’écrans

3 questions :

  • votre nom
  • ce que vous faites cette année
  • l’objet numérique le plus proches de vous (autre que votre ordinateur)

2. Déroulement de la formation

  • des séances théoriques et pratiques
  • des échanges
  • vous pouvez amener vos projets
  • des supports et de la documentation en ligne

3. Origines de l’informatique

Des calculateurs analogiques aux machines programmables

  • première machine à calculer : boulier (antiquité) ;
  • ordinateur : capacité de faire des calculs sans intervention humaine ;
  • 1936 : basculement dans l’histoire de l’informatique ;
  • machine de Turing.

3. Origines de l’informatique

Qu’est-ce qu’un ordinateur ?

  • ceci n’est pas une boîte noire ;
  • distinguer le matériel (hardware) du logiciel (software) ;
  • support + message.

Tout d’abord il faut écarter l’idée que l’ordinateur serait une boîte noire, ou une machine dont le comportement serait aussi incompréhensible qu’imprévisible. L’informatique s’est fortement complexifiée depuis une trentaine d’années, sans parler du fait que la plupart des terminaux sont désormais connectés à Internet, mais ce n’est pas pour cela qu’il faut considérer un ordinateur comme une chose mystérieuse.

Cela ne veut pas pour autant dire que je pourrais vous expliquer simplement comment fonctionne un ordinateur, mais déjà les distinctions que Michel Serres vous a présenté sont utiles :

  • il s’agit de la composition de deux éléments (hardware et software)
  • et de l’association d’un support et d’un message (pour le dire vite).

4. Principes du numérique

4. Principes du numérique

Le numérique au sens propre du terme

Représentation de la réalité via des éléments discrets et atomiques qui correspondent à des nombres naturels.

S’oppose à analogique: représentation du réel via un signal continu, “analogue” au réel.

Numérique et analogique

4. Principes du numérique

La modélisation du monde

  1. modèle conceptuel
    • donner une description en langage naturel de quelque chose
  2. modèle computationnel
    • transformer la représentation en unités atomiques discrètes et définir des fonctions pour les traiter
      Le “numérique” se situe ici!
  3. modèle matériel
    • implémenter le calcul fonctionnel dans une machine de Turing réelle.
    • calculable = computable

Les trois étapes ne sont pas étanches!

4. Principes du numérique

La base 2

Pour pouvoir implémenter l’approche numérique dans une machine avec 2 symboles disponibles (plein vide, noir/blanc, +/-…).

Base 10 Base 2
0 0
1 1
2 10
3 11
4 100
5 101
6 110

4. Principes du numérique

La base 2

Base 10 Base 2
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

4. Principes du numérique

La base 2

  • 11 en base 10 signifie: 1 dizaine et 1 unité (10+1).
  • 11 en base 2 signifie: 1 couple et une unité ( et donc en base 10: 2+1=3)
  • en base 10 avec 4 chiffres je peux exprimer: 10^4^ = 10x10x10x10 = 10000 chiffres (en effet de 0 à 9999)
  • en base 2 avec 4 chiffres je peux exprimer 2^4^ = 2x2x2x2=16
  • en base 2 avec 8 chiffres je peux exprimer 2^8^ = 256 (un octet)

4. Principes du numérique

Les algorithmes

Série finie et exacte d’instructions permettant de résoudre un problème ou d’effectuer des calculs, à partir des données initiales (input). Les algorithmes respectent deux conditions:

  • à chaque instruction il est possible de connaître l’instruction suivante
  • si on suit les étapes on arrive à une instruction qui demande l’arrêt (output)

4. Principes du numérique

La machine de Turing

Jouez avec une machine de Turing virtuelle

5. Qu’est-ce qu’un programme/logiciel ?

  • programme informatique : suite d’instructions qu’exécute un ordinateur
  • logiciel : ensemble de programmes informatiques + interfaces
  • les conditions d’utilisation

6. Usages basiques d’un terminal

6.1. Qu’est-ce qu’un terminal ?

Un terminal est une interface graphique (graphical user interface, ou GUI) qui émule une console. Il nous permet d’exécuter un shell.

Source

6. Usages basiques d’un terminal

6.2 Définition : le shell

Le shell est un interpréteur de commandes. Il s’agit d’un programme qui transmet les commandes entrées par l’utilisateur au système d’exploitation pour qu’il les exécute.

Des exemples de programmes shell sont bash (qui est aussi un langage de commande) et zsh (Z shell).

6. Usages basiques d’un terminal

6.3 L’intérêt

Les autres interfaces graphiques nous offrent une série d’options et nous orientent vers un parcours d’action. Grâce au terminal, nous pouvons construire nos propres commandes, adaptées à nos besoins. En apprenant à bien utiliser le terminal, nous pouvons exécuter des commandes complexes très rapidement.

6. Usages basiques d’un terminal

6.4. Ouvrir un terminal

Sous Linux ou Mac, chercher « Terminal » parmi les applications.

Sous Windows, chercher « Windows Power Shell » ; dans le menu déroulant en haut sélectionner « Ubuntu » ; écrire dans le terminal :

# Windows PowerShell

cd /c/Users/votre-nom-sur-Windows

Sinon suivre ces instructions ou celles-ci.

6. Usages basiques d’un terminal

6.5. Savoir où l’on est

pwd

# exemple de réponse: /home/nom-d-utilisateur

À noter ici qu’il s’agit d’un chemin absolu puisque l’adresse/chemin indiquée commence par une barre oblique /.

6. Usages basiques d’un terminal

6.6. Lister les fichiers

ls

ou

ls -a

pour voir aussi les fichiers cachés (dont le nom débute par un .).

Pourquoi vouloir voir les fichiers cachés ? Ce sera utile pour la suite.

6. Usages basiques d’un terminal

6.7. Naviguer

Pour changer de dossier, utiliser la commande cd, suivi du chemin. Exemple :

cd Document/Photos

mène au dossier Photos dans le dossier Documents.

6. Usages basiques d’un terminal

6.8. Les bons réflexes

  • touche TAB pour compléter une commande
  • flèche du haut pour parcourir les dernières commandes utilisées
  • CTRL + R pour rechercher une commande en tapant les premières lettres (faites à nouveau CTRL + R autant de fois que nécessaire pour parcourir l’historique à partir des lettres que vous avez tapées)
  • CTRL + L ou commande clear pour repartir sur un nouveau terminal

6. Usages basiques d’un terminal

Redimensionner des images en masse

Nous avons plusieurs dizaines de photographies en très haute résolution. Du fait de leur résolution élevée (plusieurs mégapixels), la taille de fichier est également très élvée.

Pour ne pas alourdir le document numérique dans lequel nous souhaitons les incorporer (comme un diaporama ou un document PDF), il faudrait les redimensionner (par exemple, passer de 6000px sur le long côté à au plus 600px).

Comment faire?

Une première solution

Il serait possible d’importer chaque image dans un logiciel de traitement d’image (avec une interface graphique) et de renommer le fichier ainsi transformé.

Toutefois, pour une masse de plusieurs dizaines images, cela s’avérerait fastidieux et chronophage.

Cette tâche triviale pourrait être facilement automatisée grâce à une seule (!) instruction en ligne de commande.

Une autre solution, en ligne de commande

Avec le logiciel ImageMagick (attention, il s’agit d’un logiciel sans interface graphique !), on pourrait utiliser l’utilitaire convert qu’il propose :

#!/bin/bash

convert Photo1.jpg Photo1.redim.jpg -resize 600

Résultat : on obtiendrait ainsi un fichier Photo1.redim.jpg qui ferait 600 px sur le plus long côté, sans écraser l’image originale.

Examinons la commnade !

Décortiquons la commande :

  • convert : la commande que nous souhaitons exécuter. Il faudra l’accompagner d’arguments, un peu comme les paramtètres x, y, … d’une fonction mathématique.
  • Photo1.jpg : premier argument. Pour la commande convert, il s’agit du fichier en entrée, qu’on souhaitera convertir.
  • Photo1.redim.jpg : deuxième argument. Il s’agit du fichier en sortie, résultant de la transformation, qu’on a choisi de renommer avec le suffixe .redim.
  • -resize 600 : il s’agit d’une option (ou « drapeau ») qui précise la conversion. Ici, le drapeau -resize indique que la largeur maximale sur le plus long côté doit être d’au plus 600 px. Il faut toujours se référer à la documentation du logiciel pour connaître les options disponibles. Il est d’ailleurs courant d’avoir plusieurs drapeaux pour une seule commande (pour une image, on pourrait également spécifier, en plus de la résolution maximale, le ratio, la compression, la palette de couleurs, etc.).

Là encore, on pourrait procéder une image à la fois… Ce qui n’est guère plus viable dès lors qu’on a plusieurs fichiers à redimensionner. Ne pourrait-on pas gagner du temps ?

Généraliser la ligne de commande

Grâce aux connaissances acquises dans la section précédente, nous pourrons, au saupoudrant un petit peu de bash, généraliser notre commande.

Considérant un dossier dans lequel il y a plusieurs images dont l’extension est .jpg :

# Dans un répertoire ~/projet/avec/images

Photo1.jpg
Photo2.jpg
Photo3.jpg
Photo_x.jpg
# et ainsi de suite...

…on pourrait recourir à une boucle (pour chaque image .jpg, effectuer le redimensionnement avec le suffixe .jpg) :

#!/bin/bash

for i in *.jpg; do
  convert $i.jpg $i.redim.jpg -resize 600
done

Résultat : chaque image a été redimensionnée sans écraser l’originale !

6. Usages basiques d’un terminal

6.9. Gérer des fichiers ou des dossiers

  • touch mon-fichier.txt
  • mkdir mon-dossier.txt
  • grep -ri mot-recherche pour trouver tous les fichiers contenant le terme qui nous intéresse
  • find . -type f -name "*.txt" pour trouver tous les fichiers qui se terminent par l’extension .txt

6. Usages basiques d’un terminal

6.10. Déplacer un fichier

La commande mv permet de renommer ou de déplacer un fichier (dans le terminal, c’est la même chose!). Deux exemples :

# Pour renommer le fichier "mon-fichier.md" => "fichier.md"

mv mon-fichier.md fichier.md
# Pour déplacer le fichier "mon-fichier.md" dans le dossier "Documents/"
# Attention! On suppose que ce dossier existe déjà

mv /home/utilisateur/mon-fichier.md /home/utilisateur/Documents/mon-fichier.md

6. Usages basiques d’un terminal

6.11. Supprimer un fichier

# Pour supprimer uniquement un fichier
rm mon-fichier.md

# L'option -R permet de supprimer les sous-répertoires, récursivement.
# (Par défaut, la commande `rm` refusera de supprimer les sous-répertoires,
# au cas où on aurait oublié qu'il y en avait d'autres dans ce dossier.)
rm -R mon-dossier

6. Usages basiques d’un terminal

6.12. Afficher le contenu d’un fichier

cat mon-fichier.md

Avec les logiciels nano ou vim :

# avec nano
nano mon-fichier.md

# avec vim
vim mon-fichier.md

6. Usages basiques d’un terminal

6.13. Exercice

  1. créez un dossier livre contenant un sous-dossier chapitre01, contenant lui-même un fichier texte.txt
  2. naviguez dans le dossier chapitre01
  3. revenez dans le dossier livre
  4. déplacez le fichier texte.txt dans le dossier livre
  5. renommez le fichier texte.txt dans le dossier livre
  6. supprimez le dossier chapitre01

6. Usages basiques d’un terminal

6.14. Pour en savoir plus sur une commande de terminal

man nom-commande