Come faccio a cambiare la mia pwd per il vero percorso di una directory link simbolico?

StackOverflow https://stackoverflow.com/questions/2299157

  •  21-09-2019
  •  | 
  •  

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:)

È stato utile?

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;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top