2012-05-21 22 views
6

पर ऑक्टल नोटेशन वाले फ़ाइल नामों को निर्दिष्ट करने के लिए फ़ाइल नामों में गैर-ASCII वर्णों के लिए, गिट उन्हें ऑक्टल नोटेशन में आउटपुट करेगा। उदाहरण के लिए:गिट: कमांड लाइन

> git ls-files 
"\337.txt" 

इस तरह के एक बाइट क्रम एक कानूनी एन्कोडिंग (कमांड लाइन के वर्तमान एन्कोडिंग के लिए) का प्रतिनिधित्व नहीं करता है, मैं नहीं कमांड लाइन पर इसी स्ट्रिंग दर्ज करने में सक्षम हूँ। मैं अभी भी इन फ़ाइलों पर गिट कमांड का आह्वान कैसे कर सकता हूं? जाहिर है, स्ट्रिंग जो git ls-files द्वारा प्रदर्शित किया जाता है का उपयोग कर काम नहीं करता:

> git rm "\337.txt" 
fatal: pathspec '337.txt' did not match any files 

विंडोज पर परीक्षण किया गया, msysgit 1.7.10 (Git संस्करण 1.7.10.msysgit.1)

+0

देखें [गिट को कंसोल विंडो में यूटीएफ -8 एन्कोडेड पथनामों को सही तरीके से प्रदर्शित करने के लिए कैसे करें?] (Https://stackoverflow.com/questions/22827239/how-to-make-git-properly-display-utf-8 -encoded-pathnames-इन-द-कंसोल-विंडो)। 'गिट कॉन्फ़िगरेशन --global core.quotepath ऑफ –

उत्तर

9

बैश में साथ, आप कर सकते हैं उद्देश्य इस तरह के लिए printf का उपयोग करें:

$ echo `printf "\337.txt"` 
▒.txt 

$ git rm `printf "\337.txt"` # this would pass the awkward filename to git 

समस्या यह है, जाहिर है, कि खोल अष्टाधारी एस्केपिंग प्रदर्शन नहीं करता, न तो Git करता है। लेकिन printf करता है।


इसके अलावा, echo -e अष्टाधारी एस्केपिंग कर सकते हैं:

$ echo -e '\0337.txt' 
▒.txt 

लेकिन उस उपयोग थोड़ा निराश, आप printf जहां आप कर सकते हैं पसंद करते हैं चाहिए।

+0

मैं गिट कमांड के साथ संयोजन में इसका उपयोग कैसे करूं? अगर मैं msysgit स्थापित किया है तो क्या होगा? – mstrap

+0

@mstrap मुझे उम्मीद है कि msys एक 'printf' उपयोगिता प्रदान करता है, क्योंकि यह एक मानक पॉज़िक्स है। आपको यह उपलब्ध करना चाहिए कि यह आपके लिए उपलब्ध है या नहीं। संपादन भी देखें। – ulidtko

+1

प्रिंटफ-संस्करण पूरी तरह से msysgit के बैश के भीतर से काम करता है। धन्यवाद! – mstrap