tilde=\~${PWD#~}
मुझे लगता है कि आप क्या चाहते हैं?
टिल्ड के बारे में क्या साफ है जब इसे एक पैटर्न के रूप में विस्तारित किया जाता है तो इसे उद्धृत करने की आवश्यकता नहीं होती है। $HOME
बिना उद्धरण के उसी तरह का उपयोग अप्रत्याशित परिणामों को प्रस्तुत करेगा क्योंकि इसका कोई भी घटक वर्ण पैटर्न वर्ण हो सकता है, और इसलिए यह हमेशा अपेक्षित परिणाम प्रस्तुत नहीं कर सकता है।
लेकिन टिल्ड विस्तार हमेशा अनुमान होता है जैसे कि यह एक उद्धृत विस्तार का परिणाम था, और इसलिए इसके परिणाम अनुमानित हैं। ऐसा लगता है कि व्यावहारिक रूप से प्रत्येक शेल को मैंने अपने case
पैटर्न और पैरामीटर पैटर्न दोनों के लिए उल्लेखनीय अपवादों के साथ ksh93
और दोनों mksh
कारणों से परीक्षण किया है - जिनमें से कोई भी उस क्षमता में टिल्ड के उद्धृत पहलू का सम्मान नहीं करता है।
इसके बारे में एक और साफ बात यह है कि आप $HOME
किसी भी डायरेक्टरी को एक ही अंदाज में संभालने के लिए फिर से परिभाषित कर सकते हैं । उदाहरण के लिए:
cd ~
HOME=/some/prefix/I/would/like/to/trim
#or, perhaps more usefully, some scripted means of arriving at same
tilde=\~${OLDPWD#~}
HOME=$PWD
यहाँ एक और उदाहरण है:
set 1 2 3 4 5 \~
cd ~; cd -; HOME= IFS=/
for d do shift
HOME=${*#~/}/$d
set ~ "$d" $HOME
done; cd -; HOME=$PWD
printf %s\\n "$@"
5/4/3/2/1/2/3/4/5/~/1/2/3/4/5/~
~
5
4
3
2
1
2
3
4
5
~
1
2
3
4
5
~