Pourquoi les outils aiment-ils cp
et rm
traitent-ils les répertoires séparément des fichiers normaux? Ils exigent tous deux que l'utilisateur spécifie explicitement qu'elle souhaite un comportement récursif, sinon ils ne traiteront pas du tout des répertoires.
Ma première interaction (il y a quelque temps) avec les ordinateurs était sur un environnement Windows / GUI / pointer-cliquer / glisser-déposer, il semblait toujours naturel que ces opérations se comportent de la même manière, quelle que soit la cible.
Ce comportement me frustre particulièrement lorsque je donne des commandes avec des caractères génériques. Que faire si je veux supprimer tout dans un répertoire ( *
) à l'exception des sous-répertoires non vides ?
Je peux seulement imaginer qu'il s'agit d'une sorte de fonctionnalité de sécurité pour empêcher l'utilisateur de se tirer une balle dans le pied, mais cela contredit ma compréhension de quelques principes Unix:
- Unix ne protège généralement pas l'utilisateur d'elle-même. Il a toujours supposé que l'utilisateur savait ce qu'elle faisait.
- Pour Unix, tout est un fichier. Un répertoire n'est-il pas simplement un autre fichier? Pourquoi sont-ils traités différemment?
Mes questions:
- Ce comportement découle-t-il d'une limitation technique ou s'agit-il d'un choix délibéré?
Et dans le cas de ce dernier,
- existe-t-il des récits historiques des raisons qui ont motivé ce choix?
rm
au moins, si vous voulez ignorer la différence entre les fichiers et les répertoires, vous pouvez mettre dans votre~/.bashrc
fichier:alias rm='rm -r'
.