Débuter avec le terminal
  • N.B. : Pour tirer pleinement profit de l'étude de ce document, exécutez les exemples dans un terminal au fil de votre lecture.

Introduction

Connectez-vous sur le serveur Jupyter avec un navigateur. Consultez si nécessaire ce document.

Pour ouvrir un terminal cliquez sur le bouton New en haut à droite de la page d'accueil puis choisissez Terminal. Il s'agit plus précisément ici d'un émulateur de terminal qui simule un véritable terminal à travers une interface Web.

Le texte psiet-turing@Chato:~ indique que vous êtes connecté sur la machine Chato sous le nom d'utilisateur psiet-turing et que le dossier de travail actuel est le dossier ~, c'est-à-dire votre dossier personnel /home/psiet-turing.

Ce texte psiet-turing@Chato:~ s'appelle un prompt, c'est-à-dire une invitation à entrer une commande système. Le programme qui interprète les commandes système est appelé shell. Les commandes système ont la forme suivante :

psiet-turing@Chato:~$ nom_de_la_commande options arguments

Par exemple :

pset-turing@Chato ~ $ ls -l /home/psiet-turing
total 16
drwxr-x--- 2 pset-turing pset-turing 4096 Aug 23 10:12 bin
drwxr-x--- 4 pset-turing pset-turing 4096 Aug 29 17:37 doc
drwxr-xr-x 2 pset-turing pset-turing 4096 Aug 23 10:12 pub
drwxr-xr-x 2 pset-turing pset-turing 4096 Aug 23 10:12 share
drwxr-x--- 2 pset-turing pset-turing 4096 Aug 23 10:12 tmp

La commande ls liste le contenu du dossier /home/psiet-turing. L'option -l donne plus d'informations que le comportement par défaut.

On voit ici que la racine dossier personnel de psiet-turing contient 5 sous-dossiers.

Parfois, vous aurez besoin d'en savoir plus sur une commande en particulier (quelles sont ses options, etc.). Pour cela, la commande man nom_de_la_commande permet d'afficher toutes les informations nécessaires à l'utilisation de la commande. Exemple :

psiet-turing@Chato ~ $ man ls

Cette commande ouvre le manuel de la commande ls, lequel contient une description de la commande, les options facultatives et parfois des exemples d'utilisation.

Certains caractères spéciaux peuvent être d'une grande utilité. * et ? sont les caractères spéciaux les plus utilisés.

  • * signifie n'importe quelle chaîne de caractères dans un texte (exemple : t*.txt ciblera test.txt tout comme t.txt et très_long_nom_de_fichier.txt.
  • ? signifie n'importe quel caractère dans un texte (exemple : t?.txt ciblera t1.txt ou tZ.txt mais pas T23.txt.

L'exemple ci-dessous liste tous les fichiers du dossier /var/log/ dont le nom se termine par .log.

psiet-turing@Chato ~ $ ls -l /var/log/*.log
-rw-r--r-- 1 root   root    9738 Aug 29 13:13 /var/log/alternatives.log
-rw-r----- 1 syslog adm  7221878 Aug 29 20:30 /var/log/auth.log
-rw-r--r-- 1 syslog adm   461291 Aug 25 21:30 /var/log/cloud-init.log
-rw-r--r-- 1 root   root   12221 Aug 25 21:30 /var/log/cloud-init-output.log
-rw-r--r-- 1 root   root  546221 Aug 29 13:18 /var/log/dpkg.log
-rw-r--r-- 1 root   root    6485 Aug 29 13:13 /var/log/fontconfig.log
-rw-r----- 1 syslog adm        0 Aug 28 07:35 /var/log/kern.log

Remarque : Le caractère ~ est une abréviation pour désigner votre dossier personnel /home/psiet-turing/.

La commande cd

psiet-turing@Chato ~ $ cd /dossier/sous_dossier

La commande cd permet de se déplacer dans un dossier choisi :

psiet-turing@Chato ~ $ cd /var/log
psiet-turing@Chato: /var/log $

Pour remonter dans le dossier parent on exécute la commande cd ... Voici un exemple :

psiet-turing@Chato /var/log $ cd ..
psiet-turing@Chato /var $ cd ..
psiet-turing@Chato / $

Nous sommes maintenant à la racine du système de fichier. Pour cela bien sûr il suffisait de faire

psiet-turing@Chato /var/log $ cd /
psiet-turing@Chato / $

Lorsque l'on est placé dans un dossier /dossier/sous_dossier, on peut se déplacer dans le dossier /dossier/sous_dossier/sous_sous_dossier en tapant simplement cd sous_sous_dossier.

psiet-turing@Chato /home $ cd /
psiet-turing@Chato / $ cd home
psiet-turing@Chato /home $ cd psiet-turing/doc
psiet-turing@Chato ~/doc $

Une habitude : [Tab]

Lorsqu'on se déplace dans un sous dossier, il est facile de taper le nom entier du dossier. Cependant, lorsque l'on navigue dans une arborescence complexe, il devient vite très long de taper chaque nom de dossier. La pratique consiste alors à presser la touche [Tab] une fois pour que le terminal complète automatiquement le nom du dossier, si celui-ci existe.

Exemple pour se rendre dans le dossier /usr/local/lib/python3.5/dist-packages :

psiet-turing@Chato ~ $ cd /u [Tab]
psiet-turing@Chato ~ $ cd /usr/
psiet-turing@Chato ~ $ cd /usr/lo [Tab]
psiet-turing@Chato ~ $ cd /usr/local/
psiet-turing@Chato ~ $ cd /usr/local/l [Tab]
psiet-turing@Chato ~ $ cd /usr/local/lib/
psiet-turing@Chato ~ $ cd /usr/local/lib/p [Tab]
psiet-turing@Chato ~ $ cd /usr/local/lib/python
psiet-turing@Chato ~ $ cd /usr/local/lib/python3 [Tab]
psiet-turing@Chato ~ $ cd /usr/local/lib/python3.5/ [Tab]
psiet-turing@Chato ~ $ cd /usr/local/lib/python3.5/dist-packages/
psiet-turing@Chato /usr/local/lib/python3.5/dist-packages $

Remarque : Si plusieurs dossiers commencent par les mêmes caractères, il faudra presser [Tab] une première fois pour voir apparaitre les caractères en commun des dossiers, puis deux fois pour voir apparaitre la liste des possibilités.

La touche [Tab] doit devenir une habitude car on économise ainsi beaucoup de frappe. Le gain de temps est très appréciable.

Lister le contenu d'un dossier

  • La commande ls nom_dossier sert à lister alphabétiquement tout le contenu visible du dossier nom_dossier.

  • l'option -l permet d'avoir un affichage détaillé des résultats (droits d'écriture, propriétaire, date de création, etc).

  • En ajoutant l'option -a on liste également les fichiers qui débutent par un point. Ces fichiers sont généralement des fichiers de configuration.

  • La commande ll est l'abbréviation de ls -la.

Rechercher un fichier

Il se peut que l'on ne connaisse pas l'emplacement d'un fichier, mais que l'on connaisse le nom du fichier. La commande find permet de trouver ce fichier parmi l'arborescence du système de fichier.

La syntaxe est find dossier_de_départ critères_de_recherche.

psiet-turing@Chato ~ $ find ~ -name equation*.ipynb
/home/psiet-turing/doc/physique/equation-de-la-chaleur.ipynb
/home/psiet-turing/pub/equation-de-la-chaleur.ipynb

La commande find permet de rechercher des fichiers selon des critères multiples. Par exemple, pour rechercher les fichiers d'extension .ipynb qui ont été modifiés il y a moins de trois jours, on exécutera la commande :

psiet-turing@Chato ~ $ find ~ -mtime -3 -name *.ipynb
/home/psiet-turing/doc/info/essai.ipynb
/home/psiet-turing/doc/math/suite-numerique.ipynb

Modifier le contenu des dossiers

La commande mkdir

La commande mkdir nouveau_dossier permet de créer le dossier nouveau_dossier.

psiet-turing@Chato ~ $ mkdir doc/info/base-de-donnees

Dans ce exemple, la commande a créé un sous-dossier base-de-donnees dans le dossier /home/psiet-turing/doc/info qui est donc supposé déjà exister.

La commande cp

Pour copier/coller des fichiers ou des dossiers on utilise la commande cp.

psiet-turing@Chato ~/doc $ cp info/cryptographie.ipynb ../pub

Remarquez que la commande précédente est exécutée alors que l'on se trouve dans le dossier /home/psiet-turing/doc :

  • info/cryptographie.ipynb désigne donc le fichier /home/psiet-turing/doc/info/cryptographie.ipynb,
  • et ../pub désigne le dossier /home/psiet-turing/pub. Rappelez-vous que .. désigne le dossier parent du dossier courant.

Pour copier tout le contenu d'un dossier et de ses sous dossiers, il faut rajouter l'option -r (pour récursif).

psiet-turing@Chato ~/doc $ cp -r info sauve-info

Le dossier doc contient maintenant un sous-dossier sauve-info qui est une copie de tout le contenu du sous-dossier info.

La commande mv

La commande mv permet de déplacer un fichier d'un dossier vers un autre. Elle permet aussi de renommer un fichier.

psiet-turing@Chato ~/doc/info $ mv essai.ipynb compression-jpeg.ipynb
psiet-turing@Chato ~/doc/info $ mv cinema.db base-de-donnee

La première commande a renommé le fichier essai.ipynb en compression-jpeg.ipynb. Par contre, puisque base-de-donnees existe déjà comme dossier, la seconde commande a pour effet de déplacer le fichier essai.ipynb du dossier /home/psiet-turing/doc/info vers le dossier /home/psiet-turing/doc/info/base-de-donnees.

La commande rm

La commande rm permet de supprimer un fichier ou un dossier.

psiet-turing@Chato ~/doc $ rm info/*.jpg
psiet-turing@Chato ~/doc $ rm -r sauve-info

La première commande a supprimé les fichiers d'extension .jpg situé dans le dossier /home/psiet-turing/doc/info. La seconde commande a supprimé le dossier /home/psiet-turing/doc/sauve-info avec tout son contenu.

La commande rm doit être utilisée avec une très grande prudence. Un fichier ou un dossier supprimé l'est définitivement. Il n'y a pas de corbeille !

Télécharger des fichiers

La commande wget

La commande wget permet de télécharger un fichier de l'internet vers le dossier courant. Par exemple, la commande ci-dessous télécharge dans le dossier doc/info le fichier PDF qui contient le programme d'informatique des CPGE scientifiques :

psiet-turing@Chato ~/doc/info $ wget https://www.scei-concours.fr/CPGE/BO/Informatique.pdf

La commande unzip

Si le fichier téléchargé est un dossier compressé la commande unzip permet de le décompresser :

psiet-turing@Chato ~ $ unzip bouees.zip

Cette commande a décompressé le fichier bouees.zip dans le dossier courant.

La commande zip

Inversement, il peut être nécessaire de compresser soit même un fichier ou un dossier dans le but, par exemple, de le transférer sur votre ordinateur personnel. La commande zip permet de faire cela :

psiet-turing@Chato ~ $ zip bouees.zip bouees