Come faccio a cambiare la mia pwd per il vero percorso di una directory link simbolico?
Domanda
Ecco una domanda piuttosto elementare * nix:
Dato il seguente link simbolico creazione:
ln -s /usr/local/projects/myproject/ myproject
... dalla mia home directory / home / JVF / , di entrare nel myproject link simbolico mi dà una PWD / home / JFV / myproject / . Ora, vorrei inserire la directory padre della directory che ho collegato simbolicamente, ma il cd .. comando solo mi riportano alla mia home directory / home / JFV / . Esiste un modo per sfuggire alla pista link simbolico che ho inserito, e invece hanno un uguale pwd per il percorso effettivo del myproject di directory. Cioè, cambiando il mio pwd da / home / JFV / myproject / in / usr / local / progetti / myproject /
Grazie:)
Soluzione
Basta usare -P
bandiera (fisica):
pwd -P
cd -P ..
Altri suggerimenti
Se la si segue dovrebbe essere OK.
1) Per prima cosa è seguire il vostro link simbolico:
[jfv@localhost ~]$ cd myproject
2) A questo punto si esegue il seguente comando:
[jfv@localhost myproject]$ cd -P ./
3) Ora, è possibile controllare la posizione e vedrete che siete sulla directory fisica
[jfv@localhost myproject]$ pwd
L'output sarà il seguente:
/usr/local/projects/myproject
Ora, tutto quello che fai sarà locale e non sul link simbolico.
a livello di programmazione, si dovrebbe farlo con la funzione di libreria 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;
}