संपादित करें: यह /programming/998626/meaning-of-tilde-in-linux-bash-not-home-directory/ का एक डुप्लिकेट है । मेरे पास इस प्रश्न को डुप्लिकेट के रूप में बंद करने की प्रतिष्ठा नहीं है।
मैं ~होम डाइरेक्टरी में इसका उल्लेख नहीं कर रहा हूँ , बल्कि यह है:
$ ls ~foo/bar
/some/mount/point/foo/bar
हालाँकि अगर मैं इसे एक अलग माउंट पॉइंट के साथ आज़माता हूँ, जैसे:
$ mount | ag "/dev "
devfs on /dev (devfs, local, nobrowse)
$ ls /dev/stdin
/dev/stdin
$ ls ~stdin
zsh: no such user or named directory: stdin .
# bash has a similar error message:
ls: ~stdin: No such file or directory
~इस संदर्भ में क्या कहा जाता है? यह कैसे काम करता है?
संपादित करें: नीचे दी गई कुछ टिप्पणियों के आधार पर अधिक जानकारी:
- मैं यह प्रमाणित कर सकता हूं कि
fooमेरे सिस्टम पर कोई उपयोगकर्ता नाम नहीं है। - स्वत: पूर्ण होने का प्रयास करते समय
ls -lah ~सभी विकल्प नहीं दिखाए जाते हैं।cd ~quxजब मैंquxस्वत: पूर्ण नहीं दिखाता , तो मैं सक्षम हूं । फिरquxसे मेरे सिस्टम में एक उपयोगकर्ता नहीं है। - अगर यह मायने रखता है
/some/mount/pointकि एक नेटवर्क शेयर है। - सभी विवरण कुछ नामित पथ नामावली, पथ नाम विस्तार की एक Z शेल सुविधा का सुझाव देते हैं, लेकिन यह बाश में भी काम करता है, जो जाहिरा तौर पर जेड शेल के नामित पथ जैसी चीजों का समर्थन नहीं करता है।
/some/mount/pointनिश्चित रूप से मेरे घर निर्देशिका नहीं है। cd ~करने के लिए मुझे ले जाता है /Users/$username/--which मैचों$HOME
zshनामित निर्देशिकाओं को इंगित करने के लिए टिल्ड का उपयोग करना भी प्रतीत होता है।
bash -c "ls ~foo/bar") - जिसमें डायरेक्ट्रीज़ का नाम नहीं है। इसके अलावा, अगर मैं निरीक्षण करता हूं, तो मैं envकिसी भी नामित निर्देशिका को नहीं देखता हूं। मैं मैक ओएस पर हूं और मुझे लगता है कि यह ओएस एक्स के लिए विशिष्ट कुछ विशेषता है।
~foo। वास्तविक स्ट्रिंग लें (उदाहरण नहीं foo) और करें grep "actual username" /etc/passwd। bash मैनुअल के अनुसार ~textकेवल संभव लॉगिन उपयोगकर्ता नाम के लिए काम करना चाहिए (जरूरी नहीं कि यह वास्तव में लॉग इन करने में सक्षम है ~lp, उदाहरण के लिए, सिस्टम उपयोगकर्ताओं के मामले में )। मेरे सभी परीक्षणों में, उपयोगकर्ता नाम होने के ~stringसाथ मेल खाती है string।
~fooउपयोगकर्ता की होम डायरेक्टरी हैfoo। यदि उपयोगकर्ता निर्दिष्ट नहीं है, तो वर्तमान उपयोगकर्ता डिफ़ॉल्ट है।