Les jokers du shell
Les motifs *, ?, [abc], [a-z], [!abc] et les accolades, les fichiers cachés que * ignore, le fait que c'est le shell qui développe les motifs avant de lancer la commande, et le rôle des guillemets.
- 23 cartes
- 5 thèmes
- Gratuit
Le programme, thème par thème
Le poids de chaque thème suit celui que lui donne l'examen.
- Notions
- Questions
- Ranger et relier
- Mises en situation
- Comprendre
Quelques cartes du deck
Joker
*: de quoi s'agit-il ?Voir la réponse
Motif remplacé par tous les noms de fichiers existants qui correspondent, avec n'importe quelle suite de caractères (même vide) à sa place.
*.txtcorrespond àa.txtet àrapport final.txt, mais pas à.cache.txt: un nom qui commence par un point doit être écrit avec son point (.*).Un répertoire contient
photo1.jpg,photo2.jpg,photo9.jpg,photo10.jpgetphoto1.png. Que développephoto[1-9].jpg?photo1.jpg photo2.jpg photo9.jpgphoto1.jpg photo2.jpg photo9.jpg photo10.jpgphoto1.jpg photo2.jpg photo9.jpg photo1.pngphoto1.jpg photo10.jpg
Voir la réponse
photo1.jpg photo2.jpg photo9.jpgLa classe
[1-9]correspond à un seul caractère :photo10.jpgen a deux entrephotoet.jpg, etphoto1.pngn'a pas la bonne extension.Les jokers sont développés par le …, avant le lancement de la commande :
ls *.txtreçoit déjà la ….Voir la réponse
Les jokers sont développés par le shell, avant le lancement de la commande :
ls *.txtreçoit déjà la liste des noms.echo *.txtmontre ce que verrait n'importe quelle commande. La commande ne sait pas si l'utilisateur a tapé un joker ou les noms.Joker
?: de quoi s'agit-il ?Voir la réponse
Motif qui correspond à exactement un caractère, quel qu'il soit.
photo?.jpgattrapephoto1.jpgetphotoA.jpg, mais pasphoto10.jpg(deux caractères) niphoto.jpg(aucun).Dans un répertoire sans aucun .zip,
rm *.ziprépond « rm: cannot remove '*.zip': No such file or directory ». Que s'est-il passé ?- Aucun nom ne correspondait : bash a laissé
*.ziptel quel etrma cherché ce nom littéral - Le shell n'a pas le droit de développer les jokers dans ce répertoire
- Les fichiers .zip sont cachés, et
*ne les attrape donc jamais rmne comprend pas les jokers : il fautfind -namepour supprimer
Voir la réponse
Aucun nom ne correspondait : bash a laissé
*.ziptel quel etrma cherché ce nom littéralUn motif qui ne correspond à rien reste tel quel (comportement par défaut de bash). C'est donc
rmqui voit le nom*.zipet se plaint qu'il n'existe pas : un nom de fichier légitime (mais très rare) peut contenir une étoile.- Aucun nom ne correspondait : bash a laissé