Introduction

Vous devrez rédiger un compte-rendu de TP qui sera en fin de séance transmis par mail à votre chargé de TP. Ce compte-rendu nous sert à savoir ce que vous avez compris ou non, et vous servira pour réviser les TP ainsi que lors de l’évaluation pratique (les documents seront autorisés). Aussi, attachez-vous à présenter les informations importantes de façon à pouvoir les retrouver facilement.

Manipulations en ligne de commande

Linux ayant hérité de la philosophie des systèmes Unix, il propose une autre interface que l’interface graphique : l’interpréteur de commande (ou shell). Les commandes que veut exécuter l’utilisateur sont entrées dans un terminal en mode texte. Bien que cette interface puisse paraître archaïque, elle est un outil très puissant et possédant de nombreux avantages sur les interfaces graphiques en particulier pour

  • l’automatisation des actions ;
  • la répétition des commandes : faire une même action sur trente six fichiers est plus facile ;
  • la “traçabilité” : un historique des actions est conservé ;
  • l’utilisation à distance : il y a beaucoup moins d’informations à transmettre par le réseau pour une interface textuelle que pour une interface graphique ;
  • l’utilisation sur des matériels peu puissants comme des routeurs.

Pour la suite du TP, nous allons lancer un terminal. Nous aurons ainsi dans notre environnement graphique une fenêtre donnant accès à un shell à côté des autres fenêtres.

Dans un système de la famille Unix, plusieurs shells différents peuvent être disponibles. Chacun de ces shells a ses spécificités. Il y a deux grandes familles parmi les shells :

  • les shell descendant de sh ou shells de type Bourne. On y trouve par exemple bash, dash, zsh et d’autres.
  • les shells de type C-shell comme csh ou tcsh.

Le shell que nous allons utiliser est le shell par défaut des systèmes Linux : bash, qui est le shell qui se lancera par défaut dans votre fenêtre de terminal. Il y a normalement une icône dans votre barre d’outils pour lancer un terminal.

Algorithme d’un shell

On peut assimiler le fonctionnement du shell à un dialogue avec l’ordinateur.

Terminal ↔︎ Chat

Les commandes que vous tapez sont analysées et exécutées par l’interpréteur de commandes. Une commande correspond en fait à l’exécution d’un programme dans l’interpréteur avec des options et des données. Pour s’exécuter, la commande que vous tapez peut :

  • avoir besoin d’informations, sous forme de paramètres qui peuvent être des options, des fichiers à manipuler ou des arguments ;
  • produire ou transformer de l’information (par exemple dans des fichiers) ;
  • produire un message d’erreur.

L’algorithme de base d’un interpréteur de commande, c’est-à-dire le schéma de fonctionnement est le suivant :

  1. afficher le prompt (invite de commande) pour indiquer à l’utilisateur qu’il est prêt et attend une commande
  2. attendre l’appui de la touche Entrée ()
  3. interpréter la ligne de commande
  4. si la commande est bien formée, alors
  5. exécuter la ligne de commande
  6. sinon
  7. produire un message d’erreur
  8. revenir en i.

Pour sortir de cette boucle, il suffit de taper la commande exit. Notez que l’étape 3 peut être complexe (cela inclut par exemple de transformer les noms de fichiers en des descripteurs des fichiers) et que l’étape 5 n’est en réalité pas effectuée par le shell mais consiste à confier au programme voulu de s’exécuter avec les arguments précisés, cette exécution peut produire des messages (y compris d’erreur).

Si le shell affiche le prompt sans écrire de message, cela signifie que la commande a agi avec succès.

Parmi les informations dont peut avoir besoin une commande, on trouve les options et les arguments. Une commande peut être lancée seule, avec une ou plusieurs options, avec un ou plusieurs arguments ou avec des options et des arguments. La syntaxe de base d’une commande est la suivante :

commande [options] [arg1] [arg2] ... [argN]

Où les crochets indiquent qu’un élément est optionnel (il ne faut pas taper les crochets). Les options sont en général de la forme -a ou --option. Notez que l’espace est interprété comme le séparateur des arguments, la commande commande Le nom de mon fichier est donc compris comme la commande commande avec 5 arguments : Le, nom, de, mon, et fichier.

On peut noter que les lignes de commandes sont similaires à des phrases à l’impératif : la commande correspond au verbe à l’impératif (par exemple make, list, change, remove…), les arguments correspondent à des compléments d’objet, les paramètres à des compléments circonstanciels.

La commande who

Commençons avec un exemple : la commande who. Le système que vous utilisez étant multi-utilisateurs, plusieurs utilisateurs peuvent être connectés simultanément, plusieurs sessions être en cours. La commande who permet de connaître les sessions en cours.

  1. Essayez les lignes de commande suivantes et interprétez leurs résultats :

    • who
    • who -H
    • who am i
    • who -y

    Pour chacun, quelle est la commande, quelles sont les options (et leur rôle), quels sont les arguments ?

  2. Que fait la touche dans le terminal ?

Suite

Les commandes d’aide