91

これはかなり初歩的な *nix の質問です。

次のシンボリックリンクの作成を考えると:

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

...私のホームディレクトリ/home/jvf/から、 myprojectシンボリックリンクを入力すると、pwd /home/jfv/myproject/が得られます。ここで、シンボリック リンク先のディレクトリの親ディレクトリに入りたいと思いますが、cd ..コマンドでは、ホーム ディレクトリ/home/jfv/にしか戻りません。とにかく、私が入力したシンボリックリンクトレイルをエスケープし、代わりにmyprojectディレクトリの実際のパスに等しい pwd を持つことはありますか? つまり、pwd を/home/jfv/myproject/から/usr/local/projects/myproject/に変更しますか?

ありがとう :)

4

3 に答える 3

152

-P(物理)フラグを使用するだけです:

pwd -P

cd -P ..
于 2010-02-19T20:05:58.393 に答える
9

以下のようにすればOKです。

1) まず、シンボリックリンクをたどります:

[jfv@localhost ~]$ cd myproject

2) 次のコマンドを実行します。

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

3) これで、自分の場所を確認でき、物理ディレクトリにいることがわかります

[jfv@localhost myproject]$ pwd

出力は次のようになります。

/usr/local/projects/myproject

これで、行うことはすべてローカルになり、シンボリック リンクではなくなります。

于 2012-06-01T15:25:27.157 に答える
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;
}
于 2010-02-19T20:19:10.417 に答える