मैं अपने pwd को एक सिम्लिंकड डायरेक्टरी के वास्तविक पथ में कैसे बदलूं?


83

यहाँ एक प्राथमिक तत्व है * निक्स प्रश्न:

निम्नलिखित सिम्लिंक निर्माण को देखते हुए:

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

... मेरी होम डायरेक्टरी / होम / jvf / से , myproject सिमलिंक में प्रवेश करने से मुझे pwd / home / jfv / myproject / मिलता है । अब, मैं उस निर्देशिका के मूल निर्देशिका में प्रवेश करना चाहूंगा जिसे मैंने सहानुभूति दी है, लेकिन सीडी .. कमांड मुझे केवल मेरे होम निर्देशिका / होम / jfv / पर वापस लाएगा । वहाँ वैसे भी है कि मैं प्रवेश किया है सिम्लिंक निशान से बचने के लिए, और इसके बजाय myproject निर्देशिका के वास्तविक पथ के बराबर एक pwd है । अर्थात्, मेरे pwd को / home / jfv / myproject / से / usr / स्थानीय / परियोजनाओं / mybject / में बदलना ?

धन्यवाद :)

जवाबों:



8

यदि आप निम्नलिखित करते हैं तो आपको ठीक होना चाहिए।

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 Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.