linux - renombrar - ¿Cómo cambio mi pwd a la ruta real de un directorio enlazado?
renombrar archivos linux masivo (3)
Aquí hay una pregunta * nix bastante elemental:
Dada la siguiente creación de enlace simbólico:
ln -s /usr/local/projects/myproject/ myproject
... desde mi directorio principal / inicio / jvf / , al ingresar al enlace simbólico myproject me da un pwd / home / jfv / myproject / . Ahora, me gustaría ingresar al directorio padre del directorio al que he enlazado, pero el comando cd .. solo me llevará de regreso a mi directorio principal / home / jfv / . ¿Hay alguna forma de escapar de la ruta de enlace simbólico que he ingresado, y en su lugar tener una pwd igual a la ruta real del directorio myproject ? Es decir, cambiando mi pwd desde / home / jfv / myproject / en / usr / local / projects / myproject / ?
Gracias :)
Programáticamente, harías esto con la función de biblioteca getcwd:
#include <unistd.h>
#include <stdio.h>
int main(int argc, char **argv)
{
char buf[1024*1024L];
char *cwd;
cwd = getcwd(buf, sizeof buf);
if (cwd == NULL) {
perror("getcwd");
return 1;
}
printf("%s/n", cwd);
return 0;
}
Si haces lo siguiente, deberías estar bien.
1) Primero sigues tu enlace simbólico:
[jfv@localhost ~]$ cd myproject
2) Ahora ejecuta el siguiente comando:
[jfv@localhost myproject]$ cd -P ./
3) Ahora, puedes verificar tu ubicación y verás que estás en el directorio físico
[jfv@localhost myproject]$ pwd
El resultado será el siguiente:
/usr/local/projects/myproject
Ahora, todo lo que hagas será local y no en el enlace simbólico.
Solo use la bandera -P
(física):
pwd -P
cd -P ..