Retrouver une facture sans souris
Le serveur d’une boutique en ligne contient des milliers de fichiers. Une collègue vous demande de retrouver les factures du mois dernier.
Ce serveur n’a ni bureau ni souris. Vous avez une seule fenêtre et un curseur qui clignote.
La plupart des serveurs fonctionnent ainsi. On s’y déplace en tapant de courtes commandes.
À la fin de cette leçon
Remarque
Je peux travailler avec des fichiers et des dossiers depuis un shell.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Shell | le programme qui lit vos commandes et les exécute | |
| Chemin | l’adresse d’un fichier ou d’un dossier | /home/student/projects |
| Répertoire courant | le dossier où vous êtes en ce moment | |
| Redirection | envoyer la réponse d’une commande dans un fichier | >> |
| Tube (pipe) | passer la réponse d’une commande à la suivante | | |
| Mode | les lettres qui disent qui peut lire, écrire ou lancer un fichier | rw-r--r-- |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un chemin est l’adresse d’un fichier
Le shell se trouve toujours « dans » un dossier. C’est le répertoire courant. Une commande agit sur lui, sauf indication contraire.
Un chemin qui commence par / est un chemin absolu. Il marche de partout.
Un chemin sans / au début est un chemin relatif. Le shell le cherche dans le répertoire courant. Deux points, .., désignent le dossier au-dessus.
Exemple travaillé : où mène cd
| Vous êtes dans | Vous tapez | Vous arrivez dans |
|---|---|---|
| /home/student | cd projects | /home/student/projects |
| /home/student/projects | cd docs | /home/student/projects/docs |
| /home/student/projects/docs | cd .. | /home/student/projects |
| /home/student/projects | cd /var/log | /var/log |
| /var/log | cd projects | Une erreur : ce dossier n’existe pas ici |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Où suis-je ?
pwdAffiché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.
Que contient ce dossier ?
lsAffiché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.
Descendre de deux dossiers
cd projects/appAffiché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.
Regarder dedans
lsAffiché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.
Revenir au dossier personnel
cdAffiché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.
Erreur fréquente
Attention
Beaucoup de gens pensent que cd projects marche depuis n’importe quel dossier. Il cherche seulement dans le dossier où vous êtes. Tapez d’abord pwd, ou donnez un chemin complet qui commence par /.
mkdir, cp et mv changent les choses
mkdir crée un dossier. cp copie un fichier, et l’original reste en place. mv déplace un fichier. Avec un nouveau nom dans le même dossier, il le renomme.
rm supprime un fichier. Un serveur n’a pas de corbeille : un fichier supprimé est perdu.
Lancez les quatre commandes suivantes dans l’ordre.
Créer un dossier
mkdir -p boutiqueAffiché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.
Y copier un fichier
cp projects/docs/notes.txt boutique/notes.txtAffiché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.
Renommer la copie
mv boutique/notes.txt boutique/a_faire.txtAffiché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.
Vérifier le dossier
ls boutiqueAffiché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.
Redirections et tubes relient les commandes
Une commande affiche sa réponse à l’écran. Une redirection l’envoie dans un fichier. > remplace le contenu du fichier : l’ancien texte disparaît. >> ajoute à la fin.
Un tube, |, passe la réponse à une autre commande. ls | wc -l liste les noms, puis compte les lignes.
Ajouter une ligne au fichier
echo "Colis 2043 parti" >> boutique/a_faire.txtAffiché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.
Lire le fichier
cat boutique/a_faire.txtAffiché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.
Compter les fichiers d’un dossier
ls projects/app | wc -lAffiché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é : un mode en trois chiffres
| Lettres | Propriétaire | Groupe | Autres | Chiffres |
|---|---|---|---|---|
| rw-r--r-- | rw- = 4+2 = 6 | r-- = 4 | r-- = 4 | 644 |
| rwxr-xr-- | rwx = 4+2+1 = 7 | r-x = 4+1 = 5 | r-- = 4 | 754 |
| rwx------ | rwx = 7 | --- = 0 | --- = 0 | 700 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un groupe de lettres devient un chiffre
# Un groupe de trois lettres, calculé pas à pas.
groupe = "r-x"
total = 0
if groupe[0] == "r":
total = total + 4
if groupe[1] == "w":
total = total + 2
if groupe[2] == "x":
total = total + 1
print(total)
# Changez groupe en "rw-" puis relancez.
Pour aller plus loin
Tapez ces commandes vous-même. Créez un dossier factures dans boutique. Créez-y trois fichiers vides en une seule commande : touch accepte plusieurs noms.
Comptez-les ensuite avec un seul tube, et écrivez le résultat dans boutique/total.txt avec >. Dites ce que cat boutique/total.txt va afficher avant de le lancer.