كيف أقوم بتغيير ذاتي إلى المسار الحقيقي للدليل المتماثل؟
سؤال
إليك سؤال أولي *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;
}