Cambiar el nombre del directorio actual desde un shell: ¿es posible?


24

¿Es posible cambiar el nombre del directorio de trabajo actual desde un shell (Bash en mi caso particular)? Si intento hacer esto de manera directa, termino con un error:

nathan@nathan-desktop:/tmp/test$ mv . test2
mv: cannot move ‘.’ to ‘test2’: Device or resource busy

¿Hay alguna otra manera de hacer esto sin cambiar el directorio actual? Me doy cuenta de que puedo lograr esto fácilmente al cambiar al directorio principal, pero tengo curiosidad si esto es necesario. Después de todo, si cambio el nombre del directorio desde otro shell, aún puedo crear archivos en el shell original después.

Respuestas:


41

Sí, pero debe referirse al directorio por su nombre, no utilizando la .notación. Puede usar una ruta relativa, solo tiene que terminar con algo diferente .o ..:

/tmp/test$ mv ../test ../test2
/tmp/test$ pwd
/tmp/test
/tmp/test$ pwd -P
/tmp/test2

Puedes usar una ruta absoluta:

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

Del mismo modo, rmdir .nunca funcionará, pero lo rmdir "$PWD"hace.


Perfecto ... exactamente la respuesta que esperaba.
Nathan Osman

55
El problema básico es que no está permitido eliminar o cambiar el nombre del "" especial. y ".." nombres.
Barmar


1

Y depende de cómo se defina "cambiar el directorio actual".

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

genera una subshell y cambia el directorio actual en la subshell, pero deja su shell principal donde estaba.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.