Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Petits scripts et paquets logiciels

Après cette leçon: Je peux écrire et lancer un petit script shell, et dire de quel paquet vient un programme.

Leçon de 55 min13 commandesLab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Le rapport tapé chaque lundi

Une boutique vous envoie chaque semaine un fichier de visites. Chaque lundi, vous tapez les mêmes trois commandes pour trouver le jour le plus chargé.

Un lundi, vous vous trompez en les tapant et vous envoyez le mauvais jour à votre responsable.

Un bon technicien écrit la tâche une fois, la range dans un fichier et lance le fichier.

À la fin de cette leçon

Remarque

Je peux écrire et lancer un petit script shell, et dire de quel paquet vient un programme.

Mots-clés

MotCe que ça veut direExemple
Scriptdes commandes rangées dans un fichier, pour les relancer à volonté
Shebangla première ligne d’un script, qui nomme le programme chargé de le lire#!/bin/bash
Argumentun mot tapé après une commande, que la commande peut utiliser$1
Code de retourun nombre laissé par une commande : 0 veut dire qu’elle a réussi$?
Paquetun programme et ses fichiers, réunis pour que le système puisse l’installer
Gestionnaire de paquetsl’outil qui installe, met à jour et retire les paquetsapt

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un tube répond à une question

Le labo garde un petit fichier de visites dans /srv/lab-web/report.csv. Chaque ligne donne un jour, une virgule et un nombre. Le fichier est en anglais.

cut -d, -f1 garde la première colonne. -d, dit que les colonnes sont séparées par des virgules. tail -n +2 saute la ligne de titre. sort -t, -k2 -n -r trie sur la deuxième colonne, comme des nombres, du plus grand au plus petit. head -n 1 garde la première ligne.

Extraire la première colonne

Commande
cut -d, -f1 /srv/lab-web/report.csv

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Trouver le jour le plus chargé

Commande
tail -n +2 /srv/lab-web/report.csv | sort -t, -k2 -n -r | head -n 1

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup croient que sort trie les nombres par taille. Par défaut, il trie comme du texte : 98 vient après 175, car 9 vient après 1. Sans -n, le tube ci-dessus affiche Tuesday,98. Ajoutez -n dès que la colonne contient des nombres.

Un script : des commandes dans un fichier

Un script est un fichier texte de commandes. Le shell les exécute de haut en bas, comme si vous les tapiez.

La première ligne est le shebang. Il nomme le programme qui lit le fichier. Une ligne qui commence par # est un commentaire, que le shell saute.

Dans un script, $1 désigne le premier mot tapé après son nom. Le script marche donc sur n’importe quel fichier.

Écrire le script dans un fichier

Commande
printf '#!/bin/bash\n# Affiche le jour le plus chargé d’un fichier CSV.\ntail -n +2 "$1" | sort -t, -k2 -n -r | head -n 1\n' > meilleur.sh

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Essayer de le lancer

Commande
./meilleur.sh /srv/lab-web/report.csv

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Demander à bash de le lire

Commande
bash meilleur.sh /srv/lab-web/report.csv

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Autoriser le lancement

Commande
chmod +x meilleur.sh

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le lancer

Commande
./meilleur.sh /srv/lab-web/report.csv

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Chaque commande laisse un code de retour

Quand une commande se termine, elle laisse un nombre. 0 veut dire qu’elle a réussi. Tout autre nombre signale un problème.

$? contient le nombre laissé par la dernière commande. Les scripts et cron s’en servent pour savoir si une tâche a réussi.

Une commande qui échoue

Commande
ls /nothere ; echo "code $?"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le script qui marche

Commande
./meilleur.sh /srv/lab-web/report.csv ; echo "code $?"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup croient qu’un fichier que cat sait afficher se lancera aussi. Lire et lancer sont deux droits différents. Un nouveau fichier n’a le x pour personne. Tapez d’abord chmod +x, ou demandez à bash de le lire.

Les logiciels arrivent en paquets

Sur Ubuntu, un programme arrive sous forme de paquet. Le gestionnaire de paquets garde la liste de ce qui est installé et du paquet qui possède chaque fichier.

dpkg lit cette liste. apt installe depuis internet et demande sudo. Avec -s, apt-get install fait seulement semblant : on peut l’essayer sans risque.

Où est le programme ?

Commande
command -v curl

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Quel paquet possède ce fichier ?

Commande
dpkg -S /usr/bin/curl

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Le paquet est-il installé ?

Commande
dpkg -s curl | grep -E "^(Package|Status)"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Faire semblant de le réinstaller

Commande
apt-get install -s curl 2>&1 | tail -n 3

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple travaillé : les verbes d’apt

Vous tapezCe que ça faitFaut-il sudo ?
sudo apt updateMet à jour la liste de ce qu’on peut installerOui
sudo apt install htopInstalle un paquet et ce dont il a besoinOui
sudo apt remove htopRetire le paquetOui
apt-get install -s htopMontre ce qu’une installation ferait, sans rien changerNon
dpkg -S /usr/bin/curlNomme le paquet qui possède un fichierNon

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Pour aller plus loin

Tapez ces commandes vous-même. Modifiez le script pour qu’il affiche le jour le plus calme. Quelle option retirez-vous ou ajoutez-vous ?

Trouvez ensuite l’heure cron qui lancerait meilleur.sh à 07 h 30 chaque lundi. Sur un serveur, vous mettriez cette ligne dans /etc/cron.d, avec l’utilisateur avant la commande.

À propos de ce labo et de sa source: Lab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.