Utiliser Linux via un terminal

Introduction

Dans ce chapitre, nous proposons de mettre les mains dans le cambouis en vous montrant comment utiliser un terminal Linux via un shell.

À noter que vous devez connaître un minimum l’utilisation du terminal si vous voulez continuer à lire ce livre, car nous n’utiliserons pas d’interface graphique, ou environnement de bureau, pour administrer le serveur web.

Pour obtenir un terminal, plusieurs choix s’offrent à vous :

  • si vous êtes déjà utilisateur de Linux : ouvrez tout simplement un terminal

  • si vous êtes un utilisateur de Windows :

Utilisateurs de macOS : vous avez accès à un terminal qui possède sensiblement les mêmes commandes, mais nous ne pouvons pas vous garantir que tout ce qui sera présenté fonctionnera comme sur Linux. Le mieux sera de passer par une machine virtuelle.

Terminal, shell, prompt

Nous pouvons distinguer ces trois éléments qui, par abus de langage ou par simplification, sont parfois employés pour désigner des réalités proches, mais néanmoins différentes.

Le terminal est un programme qui permet d’interagir en ligne de commande avec le système, par l’intermédiaire du shell. Il s’agit d’une console ou d’une interface en ligne de commande. Lorsqu’un utilisateur se connecte à une machine, il le fait via un terminal :

  • Le terminal est dit « physique » si l’utilisateur est connecté directement à la machine.

  • Le terminal est dit « pseudo-terminal » si l’utilisateur est connecté à distance.

Le shell est un programme qui permet d’utiliser et d’administrer complètement un système Linux en saisissant des commandes qui appellent des programmes, binaires compilés ou scripts, c’est-à-dire des fichiers texte contenant du code interprété. Il s’agit d’un interpréteur de commandes.

Le prompt correspond à la ligne affichée dans le shell à l’endroit où l’utilisateur saisit une commande.

En résumé, les commandes sont saisies dans le prompt, affiché par le shell, lui-même chargé dans le terminal. Dans la suite...

Les aides

Voici quelques outils d’aide pratiques à connaître pour utiliser le terminal plus efficacement.

1. man

Au fil de votre utilisation de Linux, vous constaterez qu’il existe un très grand nombre de commandes, qu’il s’agisse de programmes installés par défaut sur la majorité des systèmes d’exploitation ou de programmes installés par l’utilisateur.

Il est impossible de toutes les connaître. C’est pourquoi une documentation d’utilisation est très souvent associée aux commandes.

Dans ce livre, nous utiliserons quelques commandes Linux, qui seront expliquées en fonction de l’usage que nous en ferons. Si vous souhaitez en savoir plus, vous pourrez afficher leur documentation avec la commande man, comme ceci :

man <commande>  

Exemple : pour afficher le manuel de la commande ssh, saisissez :

alex@y510p:~$ man ssh  

La plupart des commandes disposent d’un manuel plus ou moins volumineux. Il est notamment possible d’afficher les numéros de ligne en saisissant -N, puis en appuyant sur [Entrée]. Par exemple, le manuel de ssh compte 760 lignes. Il est également possible d’effectuer des recherches par mots-clés dans le manuel grâce à la combinaison de touches [Maj] /.

Exemple : pour rechercher le mot-clé « password » dans le manuel de ssh, appuyez sur [Maj] /, saisissez password, puis appuyez sur [Entrée] :

images/05RI02.png

La première ligne contenant le terme « password » s’affiche, avec le mot recherché surligné. Vous pouvez passer à l’occurrence suivante en appuyant sur N, et revenir à l’occurrence précédente avec la combinaison...

L’éditeur de texte nano

Il existe différents éditeurs de texte non graphiques sous Linux, notamment Vi, Vim, version enrichie de Vi, et Emacs. Dans cet ouvrage, nous proposons d’utiliser l’éditeur Nano, qui nous paraît plus simple à prendre en main.

Cet éditeur servira essentiellement à modifier des fichiers de configuration et des scripts interprétables.

1. Utilisation

Nano permet de créer un fichier, ainsi que de lire et de modifier un fichier existant. Pour cela, utilisez la commande suivante :

nano <nom_du_fichier>  

Si le fichier n’existe pas, il est créé. Dans le cas contraire, il est ouvert.

Exemple :

alex@y510p:~$ nano test1234  

Cette commande crée le fichier test1234.

alex@y510p:~$ nano /etc/network/interfaces  

Cette commande ouvre le fichier /etc/network/interfaces.

Il est alors possible d’éditer le fichier et de s’y déplacer à l’aide des touches directionnelles du clavier.

2. Personnalisation

Par défaut, l’éditeur Nano n’est pas toujours configuré de manière optimale pour l’édition de fichiers de configuration ou de scripts. Par exemple, il n’affiche pas systématiquement les numéros de ligne à l’ouverture d’un fichier, ne propose pas toujours d’indentation automatique fondée sur la ligne...

Des commandes de base à connaître

1. pwd

Comme indiqué précédemment, la commande pwd permet d’afficher le chemin du répertoire courant, c’est-à-dire l’emplacement où l’utilisateur se trouve actuellement dans l’arborescence du système d’exploitation.

alex@y510p:~$ pwd 
/home/alex  

Le résultat indique ici que l’utilisateur se trouve dans son répertoire personnel.

alex@y510p:/media/alex/Storage$ pwd 
/media/alex/Storage  

Dans cet exemple, l’utilisateur se trouve dans le répertoire /media/alex/Storage.

2. cd

Cette commande permet de se déplacer dans l’arborescence du système.

Exemple 1 :

déplacement dans le sous-répertoire Downloads de l’utilisateur courant :

alex@y510p:~$ cd Downloads/ 
alex@y510p:~/Downloads$  

Exemple 2 :

même déplacement en utilisant le chemin absolu :

alex@y510p:~$ cd /home/alex/Downloads/ 
alex@y510p:~/Downloads$  

Exemple 3 :

retour au répertoire parent :

alex@y510p:~/Downloads$ cd ../ 
alex@y510p:~$  

Exemple 4 :

retour de plusieurs niveaux dans l’arborescence :

alex@y510p:~/Downloads/pacman$ cd ../../ 
alex@y510p:~$  

Exemple 5 :

retour au répertoire parent, puis déplacement dans un autre sous-répertoire de l’utilisateur courant :

alex@y510p:~/Downloads$ cd ../Desktop/ 
alex@y510p:~/Desktop$  

Exemple 6 :

déplacement vers n’importe quel emplacement depuis n’importe quel répertoire, en indiquant un chemin absolu :

alex@y510p:~/Downloads$ cd /etc/apt/sources.list.d/ 
alex@y510p:/etc/apt/sources.list.d$  

Exemple 7 :

retour au répertoire personnel depuis n’importe quel répertoire :

alex@y510p:/etc/apt/sources.list.d$ cd 
alex@y510p:~$  

3. ls

Cette commande permet de lister le contenu du répertoire cible, par défaut le répertoire courant. Pour obtenir un résultat lisible, les options -l et -h sont couramment utilisées : la première affiche le résultat sous forme de liste, tandis que la seconde affiche la taille des fichiers avec des unités lisibles.

Exemple 1 :

lister le contenu du répertoire courant avec ls -lh :

images/05RI06.png

Exemple 2 :

afficher également les fichiers et répertoires cachés avec l’option -a. Ces éléments...

Les variables d’environnement

Linux dispose de variables d’environnement. Elles contiennent des informations qui leur sont assignées et qui, comme leur nom l’indique, varient en fonction de leur environnement (de la session utilisateur). Elles sont très utiles pour faire des scripts shell (autrement appelés bash), on peut aussi s’en servir directement dans le terminal.

1. Variables d’environnements et variables

À noter qu’il y a différentes sortes de variables. Pour simplifier, nous ne ferons pas la différence.

2. Variables par défaut

Ce sont des variables qui sont déjà définies par défaut par le système, telles que :

  • $USER

  • $HOME

  • $SHELL

  • $PATH

L’ensemble des variables d’environnement définies avec leur valeur s’affiche avec la commande printenv.

3. Afficher le contenu d’une variable

Pour afficher le contenu d’une variable, nous utilisons la commande echo (avec le charactère $) ou printenv :

alex@y510p:~$ echo $LANG 
en_US.UTF-8 
alex@y510p:~$ printenv LANG 
en_US.UTF-8  

4. Assigner une valeur à une variable

Il est possible d’assigner une nouvelle valeur à une variable existante ou bien à une nouvelle variable.

Exemple 1 :

Cette commande assigne une nouvelle valeur, cela affectera potentiellement le comportement des programmes existants qui utilisent la variable modifiée :

alex@y510p:~$ LANG=fr_FR.UTF-8  

Exemple 2 :

cette commande crée une nouvelle variable et l’exporte dans le but qu’elle soit utilisable dans le shell en cours :

alex@y510p:~$ MYVAR=1 
alex@y510p:~$ export MYVAR  

Exemple 3 :

variante de l’exemple 2 en une seule commande...