rm la récursivité ne fonctionne que vers le bas correct?
rm -r x ysupprimera xet yet tout ce qui s'y trouve (s'il s'agit de répertoires), mais pas leurs parents ou quoi que ce soit en dehors d'eux.
En cours d'exécution: sudo rm -R *.QTFSsupprimera tous les fichiers * .QTFS du répertoire actuel et ses enfants, correct?
Non. Il supprimera tous les fichiers nommés *.QTFS, tous les fichiers récursivement dans les répertoires appelés *.QTFSet ces répertoires eux-mêmes. Si vous souhaitez cet autre comportement de suppression, utilisez find -delete.
le répertoire actuel affiché par ls -lhacontient également .et des ..liens pour l'absence d'un meilleur mot, alors pourquoi la récursivité ne suit-elle pas ces liens vers le haut dans l'arborescence des répertoires? Y a-t-il une limite artificielle à l'application rm, ou .et ce ..ne sont pas des choses réelles?
C'est une limite artificielle de rm.
Ce n'est pas vraiment artificiel, c'est la seule façon dont cela pourrait fonctionner. Si rmles ..liens parents étaient suivis , chacun rm -rsupprimerait tous les fichiers du système, en suivant tous les ..liens jusqu'au bout /. rmvoit les entrées ..et .dans chaque répertoire lorsqu'il répertorie le contenu et les ignore explicitement pour cette raison.
Vous pouvez l'essayer vous-même, en fait. Exécutez rm -r .et la plupart des rmimplémentations refuseront d'agir, signalant explicitement une erreur:
$ rm -r .
rm: refusing to remove ‘.’ or ‘..’ directory: skipping ‘.’
(ce message vient de GNUrm ; d'autres sont similaires). Lorsqu'il rencontre ces entrées implicitement, plutôt que comme arguments explicites, il les ignore simplement et continue. Ce comportement est requis par POSIX . Dans GNU rmet dans de nombreux BSD, il est fourni automatiquement par la fts_readfamille de fonctions de traversée de hiérarchie.
ou .et ..ne sont pas de vraies choses?
.et ..sont généralement de véritables entrées de répertoire, bien que cela soit spécifique au système de fichiers. Ils seront presque toujours présentés comme s'ils étaient de véritables entrées pour tout le code utilisateur, indépendamment. De nombreux logiciels (et pas seulement rm) mettent en évidence leur comportement afin d'attraper ou d'empêcher une récursion incontrôlée ou indésirable.