Est-il possible de renommer le répertoire de travail courant depuis un shell (Bash dans mon cas particulier)? Si jessaie de le faire de manière simple, je me retrouve avec une erreur:
nathan@nathan-desktop:/tmp/test$ mv . test2 mv: cannot move ‘.’ to ‘test2’: Device or resource busy
Y a-t-il une autre façon de faire cela sans changer le répertoire actuel? Je me rends compte que je peux facilement accomplir cela en passant dans le répertoire parent, mais je suis curieux de savoir si cela est nécessaire. Après tout, si je renomme le répertoire à partir dun autre shell, je peux toujours créer des fichiers dans le shell dorigine par la suite.
Réponse
Oui, mais vous devez vous référer au répertoire par son nom, pas en utilisant le .
. Vous pouvez utiliser un chemin relatif, il doit simplement se terminer par autre chose que .
ou ..
:
/tmp/test$ mv ../test ../test2 /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
Vous pouvez utiliser un chemin absolu:
/tmp/test$ cd -P . /tmp/test2$ mv "$PWD" "${PWD%/*}/test3" /tmp/test2$
De même, rmdir .
ne fonctionnera » jamais, mais rmdir "$PWD"
le fait.
Commentaires
- Parfait … exactement la réponse que jespérais.
- Le problème fondamental est que vous ' nêtes pas autorisé à supprimer ou renommer le ". " et .. " names.
Réponse
Comme dans la réponse @Gilles mais en utilisant extension daccolade par souci de concision:
mv ../{test,test2}
Réponse
Et cela dépend de la façon dont vous définissez «changer le répertoire actuel ”.
/tmp/test$ (cd .. && mv test test2) /tmp/test$ pwd /tmp/test /tmp/test$ pwd -P /tmp/test2
génère un sous-shell et change le répertoire actuel dans le sous-shell, mais laisse votre shell principal là où il se trouvait.