Renommer le répertoire courant à partir d'un shell - possible?


24

Est-il possible de renommer le répertoire de travail actuel à partir d'un shell (Bash dans mon cas particulier)? Si j'essaie 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

Existe-t-il une autre façon de procéder sans changer le répertoire actuel? Je me rends compte que je peux facilement accomplir cela en passant au répertoire parent, mais je suis curieux de savoir si cela est nécessaire. Après tout, si je renomme le répertoire à partir d'un autre shell, je peux toujours créer des fichiers dans le shell d'origine par la suite.

Réponses:


41

Oui, mais vous devez vous référer au répertoire par son nom, pas en utilisant la .notation. Vous pouvez utiliser un chemin relatif, il doit juste 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"fonctionne.


Parfait ... exactement la réponse que j'espérais.
Nathan Osman

5
Le problème de base est que vous n'êtes pas autorisé à supprimer ou renommer le "" spécial. et les noms "..".
Barmar


1

Et cela dépend de la façon dont vous définissez «changer le répertoire courant».

/tmp/test$ (cd .. && mv test test2)
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2

génère un sous-shell et modifie le répertoire actuel dans le sous-shell, mais laisse votre shell principal où il était.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.