38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
---
|
|
title: Lundi 24 janvier 2022
|
|
---
|
|
|
|
|
|
[Core Team] Officier Azarov:drapeau_arc_en_ciel: Hier à 17 h 34
|
|
Salut ! Je suis un cours à la fac et je bute sur une question de shell assez basique.
|
|
Si quelqu'un·e peut m'éclairer, je suis preneuse !
|
|
L'énoncé :
|
|
Dupont a fait une erreur de frappe, il a saisie la commande mv a b/* au lieu de mv b/* a.
|
|
Que se passe-t-il si b est un répertoire contenant 3 sous-répertoires et aucun autre fichier ? Expliquez pourquoi cela se produit.
|
|
Dans mon terminal :
|
|
J'ai un répertoire a et un répertoire b, qui a lui-même 3 sous-répertoires : c, d et e. Soit visuellement :
|
|
a
|
|
b
|
|
c
|
|
d
|
|
e
|
|
Quand je tape mv a b/*, a est déplacé dans un des sous-répertoires de b (le dernier, selon l'ordre alphabétique). Les deux autres sous-répertoires de b sont déplacés dans ce sous-répertoire également. Soit visuellement :
|
|
b
|
|
e
|
|
a
|
|
c
|
|
d
|
|
Est-ce qu'une bonne âme aurait une idée de pourquoi ça arrive ? (et aussi, déjà, avez-vous les mêmes résultats chez vous ?) (interrogations existentielles, bonsoir)
|
|
|
|
|
|
Anh-Vu il y a 14 heures
|
|
hello, le comportement que tu observes est tout à fait normal et déterministe, heureusement ! dans ton shell b/* est remplacé par la liste des répertoires b/c b/d b/e avant d'appeler la commande mv . Aussi le dernier argument de mv est le répertoire de destination. Donc quand tu appelles
|
|
mv a b/*
|
|
le shell traduit en
|
|
mv a b/c b/d b/e
|
|
et mv comprend qu'il faut déplacer a b/c b/d dans b/e
|
|
Aussi le shell assure que le remplacement de b/* est dans l'ordre alphabétique des occurences trouvées (modifié)
|
|
|
|
|
|
En général, un bout de code est analysé à partir de la droite (c'est un raccourci que je prends). Par contre, c'est vrai qu'il faut savoir que b/* est une expression qui va être évalué... c'est pas forcement évidant :slightly_smiling_face: (et j'ajoute ceci parce que le shell est un langage de programmation comme un autre, à ceci prêt que l'on passe notre temps dans son interpréteur à écrire une instruction à la fois et rarement dans un fichier à écrire plusieurs ligne, contrairement aux autres langages :))
|