Terminal, les bases de l'utilisation

11 minutes
console terminal shell bash

Une fois le principe du terminal intégré, nous allons pouvoir passer à un peu de pratique.
Nous allons juste voir les bases, de quoi se débrouiller, et s'amuser !

Fini la théorie, on va maintenant passer aux choses sérieuses !
Pour vous mettre l'eau à la bouche et vous convaincre que l'utilisation du terminal est une bonne chose, on commence par les inconvénients et les avantages.

  • il faut avoir quelques connaissances sur son système d'exploitation (par exemple : architecture des dossiers)
  • connaître les commandes de base, que l'on retient facilement avec un peu de pratique

  • pour de nombreuses tâches il est beaucoup plus rapide de passer par le terminal (copié/collé de fichier, copie d'un cd/dvd, savoir si on est connecté à internet, etc...)
  • si l'on demande de l'aide sur un forum, les conseils seront sûrement des lignes de commande, donc autant s'y habituer un peu
  • voir ce qui se passe lorsqu'un programme fonctionne et/ou s'arrête brutalement. C'est utile si l'on veut corriger ou demander de l'aide
  • certains programmes ne s'utilisent qu'en ligne de commande
  • il est possible de réaliser des scripts, ce qui permet d'automatiser les taches récurrentes (exemple : faire une zip avec des photos et l'envoyer par mail)

Sur les systèmes Unix et Linux, la « racine » du système est le slash : « / ». C'est l'équivalent de « C:\ » sur Windows.
Le répertoire personnel est dans « /home », et portera par défaut le nom du compte utilisateur, par exemple « /home/sebastien ».
Ce répertoire personnel contient les configurations, les images, les musiques, les téléchargements, le bureau, etc...
Un tilde (« ~ ») permet de raccourcir la syntaxe du répertoire personnel de l'utilisateur courant. C'est à dire que « /home/sebastien » peut être raccourci en « ~ ».
Deux autres raccourcis existent, un pour désigner le répertoire courant « . » et un pour désigner le répertoire parent « .. ».
Petit exemple pour éclaircir tout ça:
Un utilisateur nommé sebastien est dans le répertoire : « /home/sebastien/Images ».
S'il regarde ce qu'il y a dans le répertoire « . », il verra toutes ses images, alors que dans « ~ » il verra le contenu de son répertoire personnel « /home/sebastien ».
De la même manière, s'il regarde ce qu'il y a dans le répertoire « .. », il verra le contenu de son répertoire personnel « /home/sebastien ».
Dans ce cas, on appelle le chemin « ./wallpapers » le chemin relatif et le chemin « /home/sebastien/Images/wallpapers » le chemin absolu.

Étant donné que Unix et Linux sont des systèmes multi-utilisateurs, il existe des droits permettant de séparer les données de chacun.
Ainsi, l'utilisateur « toto » ne peut pas aller voir ce qu'il y a dans le répertoire personnel de « tata » et inversement.
Par défaut, les utilisateurs n'ont pas accès aux informations sensibles du système réservé à l'administrateur.
Pour obtenir l'accès, il faut que l'utilisateur élève ses droits pour passer super-utilisateur (su, root, ou sudo).

Pour ceux qui veulent aller plus loin, sachez qu'il est possible d'envoyer le résultat d'une commande vers une autre commande avec le pipe « | ».
Il est également possible de rediriger la sortie avec « > » et l'entrée avec « < ».
Enfin, vous avez la possibilité de gérer les droits de vos fichiers et dossier (commande chmod).

Par défaut, le prompt est une série d'informations finissant pas un signe dollar « $ » :

    kazenojiyu@kazenojiyu-Laptop:~$

La première partie (jusqu'à l'arobase « @ ») est le nom de l'utilisateur courant, ici « kazenojiyu ».
La deuxième partie (jusqu'aux deux points « : ») est le nom de l'hôte, ici « kazenojiyu-Laptop », le nom de la machine.
Et enfin la dernière partie (jusqu'au dollar « $ ») est le répertoire courant. Donc si je me déplace à la racine, le répertoire courant deviendra « / ».
Pour information, le signe dollar « $ » à la fin du prompt devient un dièse « # » si l'utilisateur a les droits super-utilisateur.

    root@kazenojiyu-Laptop:~#

Ce prompt est suivit par un curseur clignotant qui indique que l'on peut saisir des commandes.
Il est possible de personnaliser totalement le prompt, pour cela, rendez-vous dans l'article personnalisation.

Par convention, les exemples de commande sont précédé d'un dollar « $ » ou d'un dièse « # » pour indiquer les droits nécessaire à cette commande (simple utilisateur ou super-utilisateur) entre autres.
La majorité des commandes (si ce n'est pas toutes) disposent d'options et de paramètres.
Les options permettent de spécifier à la commande ce que l'on veut faire (exemple : compresser ou décompresser une archive). Elles sont précédées d'un tiret « - » et peuvent être groupées ( exemple : « -xvzf » ).
Les paramètres sont les informations complémentaires permettant d'effectuer les actions (exemple: le chemin de l'archive à décompresser).

$ commande -option paramètre1 paramètre2 ...

Voici un exemple de commande :

$ ls -l ~/Images/

La commande « ls » permet de lister un répertoire, l'option « -l » affiche les détails (date de modification, auteur, droits, etc..) et « ~/Images/ » est le répertoire à lister (ici le répertoire Images dans mon répertoire personnel).

Je vais lister ici une série de commandes de base, utiles pour débuter, avec un exemple d'utilisation à chaque fois.
C'est loin d'être exhaustif, mais permettra au débutant de faire déjà par mal de chose.
La liste des options par commande étant assez importante, je laisse le soin à chacun d'aller les découvrir.

  • help : sans paramètre : affiche une liste de quelques commandes disponibles; avec paramètre : affiche une courte description de la commande
    $ help cd
  • man : man est l'abréviation de « manual » (le manuel en Français). La plupart des commandes sont accompagnées d'une page de manuel qui décrit en détail ses fonctionnalités
    $ man man
  • apropos : liste les pages de manuel contenant le terme renseigné en paramètre
    $ apropos ls

  • cd : sans paramètre : redirige vers le répertoire personnel de l'utilisateur courant; avec paramètre : redirige dans le répertoire donné en paramètre
    $ cd /home/kazenojiyu
  • ls : sans paramètre : affiche le contenu du répertoire courant; avec paramètre : affiche le contenu du répertoire fournit en paramètre
    $ ls ~/Images
  • pwd : donne le chemin absolu du répertoire courant````
    $ pwd

  • cp : effectue une copie d'un fichier ou d'un répertoire, il prend 2 paramètres : source et destination
    $ cp fichier.txt nouveau_fichier.txt
  • mv : change d'emplacement le fichier ou le dossier, il prend 2 paramètres : source et destination, si la destination n'existe pas, le fichier/dossier source sera renommé avec la destination
    $ mv fichier.txt nouveau_fichier.txt
  • rm : supprime un fichier
    $ rm vieille_sauvegarde.tar
  • mkdir : crée un dossier
    $ mkdir nouveau_dossier
  • rmdir : supprime un dossier
    $ rmdir vieux_dossier/

  • tar : suivant l'option passée, il est possible de gérer une archive (création, édition, affichage, extraction, etc...)
    $ tar -xvzf archive.tar.gz
  • unzip : liste, test et extrait les fichiers compressés d'une archive zip
    $ unzip archive.zip
  • gzip : compresse et décompresse les fichiers
    $ gzip -9 fichier

  • head : affiche les premières lignes d'un fichier
    $ head fichier.txt
  • tail : affiche les dernières lignes d'un fichier
    $ tail fichier.txt
  • cat : affiche l'intégralité d'un fichier
    $ cat fichier.txt
  • more : affiche le contenu d'un fichier page par page
    $ more fichier.txt

  • top : affiche dynamiquement les processus, l'utilisation de la mémoire et du processeur, etc..., le rafraîchissement se fait tous les 1,5 secondes
    $ top
  • ps : liste les processus lancés
    $ ps -e
  • kill : termine un processus
    # kill 25684

  • apt-get : gestion de logiciels (mise à jour, installation, suppression, etc...)
    # apt-get update
  • apt-cache : affiche les informations concernant des logiciels disponible dans le cache d'APT
    $ apt-cache search htop
  • dpkg : gestion de logiciels mais d'un niveau plus avancé
    # dpkg -i nouveau_logiciel.deb

Pour ceux qui veulent aller plus loin, il est possible de trouver beaucoup de ressources avec les commandes d'aides, mais aussi sur internet.

Il est intéressant de savoir que sur de nombreux systèmes, l'auto-complétion est activé.
Si vous commencez à taper une commande, ou un nom de répertoire dans une commande, si vous appuyez sur la touche « Tab » de votre clavier, le terminal va compléter ce qu'il manque.
S'il y a plusieurs possibilités, appuyez deux fois sur « Tab » pour qu'il affiche toutes les possibilités.
C'est super efficace !
Essayez avec par exemple :

    $ cd /home/

Si toutefois l'auto-complétion n'est pas activé pour votre compte ou le compte super-utilisateur, vous pouvez modifier le fichier ~/.bashrc et dé-commenter les lignes :

    #if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    #    . /etc/bash_completion
    #fi

Il est possible de définir des alias pour ne pas avoir à taper les commandes qui peuvent être longues.
L'exemple le plus courant concerne la mise à jour des paquets :

    $ sudo apt-get update && sudo apt-get upgrade -y

Une commande très longue qui est souvent utilisée.

On peut donc définir deux alias que l'on placera dans le fichier ~/.bashrc pour y avoir accès à chaque session de terminal :

    alias update="sudo apt-get update"
    alias upgrade="sudo apt-get upgrade -y"

La commande deviendra donc :

    $ update && upgrade

Il est possible de définir autant d'alias que notre imagination le permet !

Un autre alias qui nous servira par la personnalisation du terminal :

    alias ls="ls --color"

Il y a deux types de raccourcis clavier, ceux liés à la console/terminal et ceux liés à l'émulateur de terminal.
C'est important de différencier les deux uniquement pour les copier/coller, car le presse-papier n'est pas le même.
Je présente ici les raccourcis clavier liés à la console/terminal.

Pour retrouver ceux liés à l'émulateur de terminal, il vous suffit d'aller dans les préférences de celui-ci.

  • CTRL + A : curseur au début de la ligne
  • CTRL + E : curseur en fin de ligne
  • ALT + B : curseur au début du mot (B est l'abréviation de « backward » qui signifie « en arrière »)
  • ALT + F : curseur en fin de mot (F est l'abréviation de « forward » qui signifie « en avant »)

  • CTRL + K : coupe à partir du curseur jusqu'à la fin de la ligne
  • CTRL + U : coupe à partir du curseur jusqu'au début de la ligne
  • CTRL + W : coupe le mot précédent le curseur
  • ALT + D : coupe le mot suivant le curseur
  • CTRL + Y : colle le contenu du presse papier

  • CTRL + T : inverse les deux caractères précédent le curseur
  • ALT + SHIFT + T : inverse les deux mots précédent le curseur
  • ALT + SHIFT + C : lettre en majuscule
  • ALT + SHIFT + L : convertit le mot qui suit le curseur en minuscule
  • ALT + SHIFT + U : convertit le mot qui suit le curseur en majuscule
  • ALT + SHIFT + . : récupère le paramètre de la commande précédent et le colle
  • CTRL + _ : annule la dernière modification

  • CTRL + L : efface le contenu de l'écran
  • CTRL + C : stoppe la commande en cours de traitement
  • CTRL + Z : met en pause le programme ( pour le relancer deux commandes sont possibles : « fg » pour mettre au premier plan et « bg » pour mettre en arrière plan)
  • CTRL + D : quitte le terminal courant
    Bien entendu, cette liste n'est pas exhaustive, et je vous invite à en trouver d'autre.

Avec ces bases vous allez être déjà beaucoup plus à l'aise.
Créez vous un dossier dans lequel vous faites vos tests et supprimez le une fois terminé.
Et surtout ne tapez jamais une commande que vous ne comprenez pas. En quelques caractères il est possible de faire planter un ordinateur, c'est très puissant !
N'hésitez pas à me poser toutes vos questions en commentaires.

Cet article est le deuxième d'une série de 3 articles pour présenter le terminal et son utilisation. Vous pouvez consulter les autres : Terminal, c'est quoi cette bête là, Terminal, personnalisation

http://tldp.org/HOWTO/Text-Terminal-HOWTO.html
https://wiki.archlinux.org/index.php/Keyboard_shortcuts
https://doc.ubuntu-fr.org/tutoriel/console_commandes_de_base

http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux : un petit topo sur une belle liste de commandes de bases
http://www.linux-france.org/article/dalox/unix04.htm : donne un peu plus d'information sur les commandes et leur syntaxe
https://fr.wikipedia.org/wiki/Commandes_Unix : une autre petite liste de commandes
http://www.math-linux.com/linux-2/tutoriels-linux/article/droit-et-permission-d-acces-aux-fichiers : article sur les droits des fichiers
http://explainshell.com : vous entrez une commande que vous ne connaissez pas, et il vous l'explique
http://www.commandlinefu.com/commands/browse : site répertoriant des commandes très utiles
http://www.shell-fu.org/index.php : site répertoriant des commandes très utiles

Ajouter un commentaire

Article précédent Article suivant