मैं पथ के साथ काम करने की कोशिश कर रहा हूं और घर निर्देशिका को बाल्ड में टिल्ड के साथ प्रतिस्थापित कर रहा हूं, मैं उम्मीद करता हूं कि इसे आवश्यकतानुसार छोटे बाहरी कार्यक्रमों के साथ किया जाए। बस बैश के साथ ऐसा करने का कोई तरीका है। मुझेक्या बिल्डर में tilde के साथ घर निर्देशिका को बदलने का कोई अच्छा तरीका है?
${PWD/#$HOME/\~}
लेकिन यह बिल्कुल सही नहीं है। यह जरूरत है परिवर्तित करने के लिए:
/home/alice to ~
/home/alice/ to ~/
/home/alice/herp to ~/herp
/home/alicederp to /home/alicederp
ब्याज की एक नोट के रूप में, यहाँ कैसे बैश स्रोत यह जब परिवर्तित करता है \w value in the prompt:
/* Return a pretty pathname. If the first part of the pathname is
the same as $HOME, then replace that with `~'. */
char *
polite_directory_format (name)
char *name;
{
char *home;
int l;
home = get_string_value ("HOME");
l = home ? strlen (home) : 0;
if (l > 1 && strncmp (home, name, l) == 0 && (!name[l] || name[l] == '/'))
{
strncpy (tdir + 1, name + l, sizeof(tdir) - 2);
tdir[0] = '~';
tdir[sizeof(tdir) - 1] = '\0';
return (tdir);
}
else
return (name);
}
यह बैश नहीं है अधिक सी कोड की तरह। लेकिन लगभग कोई संदर्भ के साथ एक स्ट्रिंग को प्रतिस्थापित करना त्रुटि प्रवण है। आप वाकई इस तरह आगे बढ़ना चाहते हैं? – pizza
क्षमा करें अगर यह स्पष्ट नहीं था। सी कोड एक उदाहरण है कि इसे कैसे करें। यह कैसे बैश खुद करता है। सी में लिखे गए एक प्रोग्राम होने के नाते बैश। अब मैं बैश भाषा में ऐसा करना चाहता हूं। – Jake
क्या आप हमें बता सकते हैं कि यह अभी क्या आउटपुट करता है? – birryree