Séance 1 : Prise en main

Pourquoi Linux ?

Open-source, et donc

  • moins cher,

  • plus sécurisé,

  • plus portable (que des alternatives commerciales).

Largement utilisé :

  • serveurs, équipements réseau

  • appareils Android

  • autres « petits » appareils

    (liseuses, raspberry pi...)

Vocabulaire

  • Linux est en fait le nom du noyau du système d'exploitation (SE).

  • Un SE complet basé sur le noyau linux est appelé une distribution (ou distro). Exemple :

Pourquoi la ligne de commande ?

  • travail à distance

  • appareils peu puissants

  • productif

  • automatisable

Le shell

  • shell est le nom donné au programme qui gère la ligne de commande

  • il en existe plusieurs versions, mais bash est la plus utilisée

  • interaction typique avec le shell :

    • affiche une invite de commande (traditionnellement terminée par $ ou #)

    • analyse le texte tapé

    • exécute le(s) programme(s) demandé(s) (en lui/leur passant des arguments)

    • attend la fin de l'exécution, puis recommence

Analyse de la ligne de commande

  • Le shell découpe la ligne de commande au niveaux des espaces.

  • Ce découpage donne une liste de chaînes de caractères :

    • la première est interprétée comme le nom du programme à exécuter,

    • les suivantes sont les arguments passés au programme.

  • Pour inclure une (ou plusieurs) espace(s) dans un argument, il faut encadrer cet argument par des guillemets (" ou ').

# exemple
git commit --all   -m "fixed bug #42"
  • Une alternative pour inclure une espace dans un argument consiste à la faire précéder par un anti-slash (\).

# exemple
git commit --all   -m fixed\ bug\ \#42

Note

Dans l'exemple ci-dessus, le caractère dièse (#) nécessite également un anti-slash, car lui aussi serait interprété par le shell (commentaire).

Dans la suite, nous verrons d'autres caractères spéciaux utilisés par le shell pour analyser les lignes de commandes.

Cet outil développé par Thierry Excoffier permet de bien comprendre les mécanismes en œuvre dans cette analyse.

Arguments d'un programme

Les arguments d'un programme sont une liste de chaîne de caractères, passée à ce programme à son lancement.

int main(int argc, char* argv[]) {
  /* ... */
}

Le programme est libre d'interpréter ces arguments comme il le souhaite, mais il existe un certain nombre de conventions.

Conventions courantes sur les arguments

  • Un paramètre démarrant par un tiret (-) est une option, qui altère le comportement du programme.

  • Une option commençant par un seul tiret est composée d'une seule lettre (exemple -h, -V). Les options plus longues commencent par deux tirets (exemple --help, --version).

  • Plusieurs options courtes peuvent être combinées après un seul tiret (exemple -la au lieu de -l -a).

  • L'option --help sert à afficher une courte documentation de la commande.

Quelques commandes de base

man [section] <commande> / man [options]

Affiche une page du "manuel" (documentation).

<commande>

La commande dont on souhaite afficher le manuel.

[section]

Éventuellement, le numéro de section du manuel.

-k, --apropos <texte>

Liste toutes les pages du manuel contenant texte.

echo [options] <arguments>

Affiche les arguments, séparés par des espaces.

-n

N'affiche pas de retour à la ligne après les arguments.

more [ficher]

Affiche un fichier de manière paginée.

  • entrée ou espace avance d'une page

  • CTRL+C quitte le programme

Indication

CTRL+C n'est pas une instruction spécifique à more; cela interomp la plupart des programmes lancés en ligne de commande.

id [options] [utilisateur]

Affiche des informations sur un utilisateur.

utilisateur

Nom ou numéro d'utilisateur (défaut : utilisateur courant).

-u, --user

Affiche uniquement l'identifiant de l'utilisateur.

-G, --groups

Affiche uniquement les groupes auxquels appartient l'utilisateur.

-n, --name

Affiche l'identifiant textuel au lieu de l'identifiant numérique (avec -u ou -g).

date [options] [+format]

Affiche une date au format demandé.

-d, --date=STRING

La date à afficher (défaut : date courrante)

+format

Format à utiliser pour l'affichage, cf. man date.

Exemples :

  • "+%d/%m/%y" affiche jour/mois/année (sur 2 chiffres)

  • +%A affiche uniquement le jour de la semaine

  • +%W affiche le numéro de la semaine

Note

La valeur passée à --date accepte de nombreux formats différents, y compris des expressions comme « tomorrow » ou « 2 years ago ».

Attention cependant au format xx/yy/zzzz, il est généralement interprété à l'américaine : mois/jour/année. Il vaut mieux lui préférer le format aaaa-mm-jj.

Travaux dirigés

Lancement d'une machine virtuelle Linux

  • Ouvrir le fichier D:\VMWARE_images\PA.Champin\Ubuntu 19.10.ova avec Vmware workstation.

  • Choisissez comme répertoire destination un sous-répertoire de D:\ (n'utilisez pas un répertoire réseau, cela serait beaucoup trop lent).

  • En cas d'erreur, cliquez sur Retry.

  • Le mot de passe est etudiant.

  • Une fois la machine virtuelle démarrée, ouvrez un terminal en cliquant sur l'icône correspondante.

_images/terminal.png

Icône "Terminal"

Utilisation de commandes

  • affichez avec more tout le contenu du fichier /etc/passwd

  • affichez avec more les premières pages du fichier /var/log/syslog, puis quittez le programme

  • en utilisant echo, affichez bonjour le monde

  • affichez maintenant bonjour le  MONDE  ! (avec deux espaces avant et après « monde »)

  • en utilisant date, affichez le jour de la semaine de votre jour de naissance

Historique

Indication

Avec les touches haut et bas, il est possible de naviguer dans l'historique des commandes tapées. Il est ensuite possible de modifier la ligne de commande de manière classique (flêche gauche et droite, retour arrière...).

  • affichez à nouveau bonjour le monde

  • en utilisant date, affichez le jour de la semaine de votre jour de naissance

  • affichez maintenant le jour de la semaine de vos trois premiers anniversaires (utilisez le retour arrière dans l'historique pour éviter de retaper la commande à chaque fois)

Indication

On peut effectuer une recherche dans l'historique des commandes, en tapant CTRL+``R``, suivi du texte à rechercher. En tapant à nouveau CTRL+``R``, on remonte dans l'historique au résultat suivant de la recherche.

  • affichez à nouveau le jour de la semaine de votre jour de naissance (utilisez CTRL+R pour rechercher votre année de naissance dans l'historique)

  • affichez à nouveau bonjour le  MONDE  !

Édition avancée de la ligne de commande

Indication

  • Avec CTRL+*gauche* et CTRL+*droite*, on peut déplace le curseur mot par mot.

  • Avec CTRL+``K``, on peut supprimer tout ce qui est à droite du curseur.

  • Avec CTRL+``U``, on peut effacer la totalité de la ligne de commande.

  • affichez au revoir le monde

  • affichez Bonjour le  MONDE  !

  • affichez le jour de la semaine de votre quatrième anniversaires

Répétition du dernier argument

  • affichez à nouveau bonjour le monde

  • tapez echo au revoir le ``, puis la touche *echap*, puis ``. (NB: sur un clavier français, le . est obtenu avec SHIFT+``;``). Quel message s'affiche ?

Indication

ESC+`.` ajoute le dernier argument de la précédente ligne de commande.

Tab-complétion

  • tapez ec suivi de la touche tabulation (→|) ; que constatez vous ? videz ensuite la ligne de commande avec CTRL+C.

  • tapez e suivi de la touche tabulation ; que constatez vous ? tapez la touche tabulation à nouveau ; que constatez vous ? videz la ligne de commande avec CTRL+C.

  • tapez man suivi d'une espace, puis tapez tabulation deux fois ; que constatez-vous ?

Indication

La touche tabulation déclenche ce qu'on appelle la tab-completion: le shell complète automatiquement le mot à gauche du curseur (qui peut être vide).

Si plusieurs complétions sont possibles, le shell fait plusieurs propositions.

Les proposition du shell dépendent du contexte; elle peuvent être * un nom de fichier (par défaut), * une option de la commande, * un nom d'utilisateur (e.g. pour la commande id), * une sous-commande (e.g. pour la commande git)...

  • tapez les caractères suivants: m, o, r, tabulation, /, e, tabulation, p, a, s, tabulation, entrée

  • combien y a-t-il d'entrées dans la section 3 du manuel ?

  • combien y a-t-il d'entrées commençant par pa dans la section 3 du manuel ?