كيف أقوم بتغيير ذاتي إلى المسار الحقيقي للدليل المتماثل؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

إليك سؤال أولي *nix:

بالنظر إلى خلق Symlink التالي:

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

... من دليل منزلي /الصفحة الرئيسية/JVF/, ، دخول مشروعي Symlink يعطيني ذا ذو تاسع /home/jfv/myProject/. الآن ، أود إدخال الدليل الأصل للدليل الذي تراجعت عنه ، ولكن CD .. سيعيدني الأمر فقط إلى دليل منزلي /الصفحة الرئيسية/JFV/. هل هناك على أي حال للهروب من مسار Symlink الذي أدخلته ، وبدلاً من ذلك يكون لديك PWD يساوي المسار الفعلي لـ مشروعي الدليل. وهذا هو تغيير الأشخاص ذوي الإعاقة الخاصة بي من /home/jfv/myProject/ داخل /usr/محلي/مشاريع/myProject/?

شكرًا :)

هل كانت مفيدة؟

المحلول

فقط استخدم -P (مادي) العلم:

pwd -P

cd -P ..

نصائح أخرى

إذا قمت بما يلي ، فيجب أن تكون على ما يرام.

1) أولاً تتبع symlink الخاص بك:

[jfv@localhost ~]$ cd myproject

2) الآن تقوم بتنفيذ الأمر التالي:

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

3) الآن ، يمكنك التحقق من موقعك وسترى أنك على الدليل الفعلي

[jfv@localhost myproject]$ pwd

سيكون الإخراج كما يلي:

/usr/local/projects/myproject

الآن ، كل ما تفعله سيكون محليًا وليس على Symlink.

برمجيا ، ستفعل ذلك مع وظيفة مكتبة 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;
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top