¿Cómo cambio mi pwd para el camino real de un directorio de enlace simbólico?
Pregunta
He aquí una pregunta * nix bastante elemental:
Dada la siguiente creación de enlaces simbólicos:
ln -s /usr/local/projects/myproject/ myproject
... desde mi directorio / home / JVF / , que entra en el miproyecto enlace simbólico me da una PWD <> / home / jfv / miproyecto / . Ahora, me gustaría entrar en el directorio padre del directorio que he enlazado simbólicamente a, pero el cd .. comando sólo me va a traer de vuelta a mi directorio / home / jfv / . ¿Hay alguna forma de escapar de la pista de enlace simbólico que he introducido, y en lugar de tener una discapacidad igual a la trayectoria real de la directorio miproyecto. Es decir, el cambio de mi pwd de / home / jfv / miproyecto / en / usr / proyectos / local / miproyecto /
Gracias:)
Solución
uso Sólo -P
bandera (física):
pwd -P
cd -P ..
Otros consejos
Si hace lo siguiente que debe estar bien.
1) En primer lugar, seguir su enlace simbólico:
[jfv@localhost ~]$ cd myproject
2) Ahora se ejecute el siguiente comando:
[jfv@localhost myproject]$ cd -P ./
3) Ahora, se puede comprobar su ubicación y verá que está en el directorio físico
[jfv@localhost myproject]$ pwd
La salida será como sigue:
/usr/local/projects/myproject
Ahora, todo lo que haga será local y no en el enlace simbólico.
Mediante programación, haría 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;
}