Як я можу змінити свій pwd на дійсний шлях до каталогів із посиланням на символи?


83

Ось досить елементарне запитання * nix:

Враховуючи таке створення символічного посилання:

ln -s /usr/local/projects/myproject/ myproject

... з мого домашнього каталогу / home / jvf / , введення символьного посилання myproject дає мені pwd / home / jfv / myproject / . Тепер я хотів би ввести батьківський каталог каталогу, до якого я посилався, але команда cd .. поверне мене лише до мого домашнього каталогу / home / jfv / . Чи є спосіб уникнути шляху символічного посилання, який я ввів, і замість цього мати pwd, рівний фактичному шляху до каталогу myproject . Тобто, зміна мого pwd з / home / jfv / myproject / на / usr / local / projects / myproject / ?

Дякую :)

Відповіді:


142

Просто використовуйте -P(фізичний) прапор:

pwd -P

cd -P ..

7

Якщо ви зробите наступне, у вас все буде в порядку.

1) Спочатку перейдіть за своїм посиланням:

[jfv@localhost ~]$ cd myproject

2) Тепер ви виконуєте таку команду:

[jfv@localhost myproject]$ cd -P ./

3) Тепер ви можете перевірити своє місцезнаходження, і ви побачите, що знаходитесь у фізичному каталозі

[jfv@localhost myproject]$ pwd

Вихід буде таким:

/usr/local/projects/myproject

Тепер все, що ви робите, буде локальним, а не на символічному посиланні.


3

Програмно це можна зробити за допомогою функції бібліотеки 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;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.