Renommer le directory actuel à partir d'un shell – possible?

Est-il possible de renommer le directory de travail actuel à partir d'un shell (Bash dans mon cas particulier)? Si j'essaie de faire cela de la manière la plus directe, 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 un autre moyen de le faire sans changer le directory actuel? Je réalise que je peux facilement accomplir cela en changeant le directory parent, mais je suis curieux si c'est nécessaire. Après tout, si je renommer le directory d'un autre shell, je peux encore créer des files dans le shell d'origine par la suite.

Oui, mais vous devez vous référer au directory par son nom, pas en utilisant le . notation. Vous pouvez utiliser un path 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 path absolu:

 /tmp/test$ cd -P . /tmp/test2$ mv "$PWD" "${PWD%/*}/test3" /tmp/test2$ 

De même, rmdir . ne marchera jamais, mais rmdir "$PWD" fait.

Et cela dépend de la façon dont vous définissez "changer le directory actuel".

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

engendre un sous-shell et change le directory courant dans le sous-shell, mais laisse votre shell primaire où il était.

Comme dans @Gilles répondre, mais en utilisant l' expansion orthèse pour la brièveté:

 mv ../{test,test2}