1. Introduction

Rappel des commandes rencontrées et de leur usage basique :

commande rôle usage
adduser créer un utilisateur adduser login
apropos trouver des pages de manuel apropos mot-clef
cat afficher le contenu d’un fichier cat [fichier]
cd se déplacer dans l’arborescence cd [chemin]
chmod modifier les droits chmod MODE fichier
chown modifier le propriétaire chown LOGIN:GROUP fichier
kill envoyer un signal à un processus kill [-s SIGNAL] PID
ln créer un lien ln [-s] SRC DEST
ls afficher le contenu d’un dossier ls [chemin]
man lire les pages de manuel man nomdecommande
mkdir créer un dossier mkdir [-p] nomdossier
mv déplacer ou renommer mv source... dest
pwd afficher le dossier courant pwd
ps afficher les processus ps [-elfu]
pstree afficher l’arbre des processus pstree [-p]
rm supprimer un fichier rm [-r] fichier
rmdir supprimer un dossier rmdir nomdossier
su changer d’utilisateur su [-] [login]
top Afficher interactivement les processus top
touch créer un fichier (ou changer son timestamp) touch fichier
umask agir sur les droits par défaut umask [MODE]

2. Entrées/sorties et redirections

Un programme a pour rôle de traîter des données. Il peut donc prendre des données, les manipuler et renvoyer le résultat de ces manipulations. On peut voir le programme comme une boîte noire à qui on passe des ingrédients et duquel peuvent ressortir deux sortes de choses : des messages d’erreur ou des résultats. On parle d’entrée standard, de sortie standard et de sortie d’erreur. Par exemple, la commande cat, si on ne lui passe pas d’arguments se contente de recopier sur la sortie standard ce qu’on lui donne en entrée.

  • Lancez la commande cat, tapez un texte sur plusieurs lignes. Terminez en tapant Ctrl+d.

Le comportement par défaut est donc que l’entrée standard est ce que vous tapez au clavier après avoir lancé la commande, la sortie standard, ce qui apparaît à l’écran. La plupart des commandes que nous avons vues jusqu’à maintenant ne demandaient pas d’entrée, certaines (ls par exemple) donnaient cependant une sortie. Il est possible de rediriger ces entrées et sorties. pour les sauvegarder dans un fichier par exemple. Nous avons en fait déjà vu une redirection de sortie : la commande echo "XXe siècle" >> Lola_rennt consiste en effet à rediriger la sortie de la commande echo "XXe siècle" (qui écrit son argument) dans le fichier Lola_rennt.

Les symboles > et >> permettent de rediriger la sortie standard dans un fichier. >> ajoute à la fin d’un fichier tandis que > efface le fichier avant d’écrire dedans.

  • Testez la commande ps ux > processus. Un fichier nommé processus a été créé. Affichez son contenu.
  • Lancez la commande who > processus. Affichez le contenu du fichier processus.
  • Lancez la commande ls -ail >> processus. Affichez le contenu du fichier processus.

Le symbole < permet de faire des redirections de l’entrée standard, c’est-à-dire d’utiliser un fichier en entrée plutôt que le clavier.

  • Testez cat < processus.
  • La commande wc (wordcount) sert à compter les caractères, mots et lignes. Essayez-la sans arguments (Ctrl+d pour finir). Essayez wc < processus.
  • Que fait la commande cat > fichier ?
  • Que fait la commande cat < processus > truc

Les redirections servent également à rediriger la sortie d’une commande vers l’entrée d’une autre. On obtient ce comportement en reliant les commandes à l’aide d’un tube (ou pipe en anglais). Par exemple who | wc -l va compter le nombre d’utilisateurs connectés.

  • Pour connaître tous les programmes, on peut utiliser la commande ls /usr/bin. Malheureusement, les résultats sont trop nombreux pour être vus dans une fenêtre. On peut cependant utiliser un pager qui affichera les résultats page par page (comme le fait man). Utilisez ls /usr/bin | less.

Quelques commandes pouvant être utilisées comme filtre : wc, sort, uniq, tr, sed, tail, head, less, grep, cut.

Exercices

  1. sort permet de trier par ordre alphabétique ou numérique. Affichez le contenu trié du fichier processus.

  2. Le fichier /etc/passwd contient des lignes de la forme suivante :

    ehainry:x:1000:1000:Emmanuel Hainry,,,:/home/ehainry:/usr/bin/zsh

    Chaque ligne donne les informations suivantes, séparées par des :, login, mot de passe, numéro d’utilisateur, numéro de groupe, nom complet, répertoire personnel et shell préféré. Afficher la liste des login triée par ordre alphabétique.

  3. La commande cut permet de sélectionner une « colonne ». Lisez la page de manuel de cut. Affichez les numéros d’utilisateurs (UID) obtenus par cat /etc/passwd. Affichez les UID triés par ordre croissant.

  4. Redirigez la sortie de la commande cat /etc/passwd dans un fichier passwords dans votre répertoire personnel.

  5. La commande grep permet de sélectionner des lignes si elles contiennent un motif. Essayez cat < passwords | grep rob.

  6. Affichez les logins des utilisateurs utilisant bash comme shell.

  7. Les commandes head et tail permettent respectivement de voir les premières lignes ou les dernières lignes de l’entrée. Afficher les logins des 10 premiers utilisateurs dans l’ordre alphabétique.

  8. Affichez les logins des 13 à 16-ième utilisateurs dans l’ordre alphabétique.

  9. Affichez les noms de tous les fichiers ou dossiers dont le nom coontient un l dans /bin. Combien y en a-t-il ?

  10. Rechercher les dates des “revolution” présentes dans les fichiers de /usr/share/calendar y compris ceux dans les dossiers présents dans ce dossier. Quel jour a eu lieu la révolution d’octobre (Oktoberrevolution).