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

Outils utiles pour les TP

Pour travailler dans un système Unix, nous allons utiliser une machine virtuelle Linux.

Qu’est-ce que le terminal ?

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

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 :

Dans la fenêtre de terminal, un shell est déjà lancé, il s’agit du shell standard des systèmes Linux : bash.

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 :

Quand le shell est lancé, il affiche un prompt, usuellement de la forme <utilisateur>^<machine>:<chemin>$. Par exemple, robert@nbrtlinux:~$ indique que l’utilisateur se nomme robert, la machine (la vm) se nomme nbrtlinux et le chemin courant est ~ (nous verrons bientôt ce que cela signifie).

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 précédente a terminé 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 /var/log/wtmp
    • 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