एक मार्ग में "` "(उच्चारण कब्र / बैकटिक) से कैसे बच सकता है?


13

मैं "उच्चारण कब्र" चरित्र (नॉन-शिफ्ट टिल्ड, बैक-टिक, या सादे-पुराने उच्चारण, व्हावेवेउ ..) के साथ बार-बार इस्तेमाल की जाने वाली फ़ाइलों और फ़ोल्डरों को उपसर्ग करता हूं , क्योंकि इसे प्राप्त करना आसान है, और मुझे चलो चीजों को वर्णानुक्रम में क्रमबद्ध करें, जबकि मुझे शीर्ष पर कुछ आइटम दिखाने के लिए चुनें। यह अच्छी तरह से काम करता है, सिवाय जब मैं इन फाइलों को सीएलआई या एसएसएच / एससीपी के माध्यम से एक्सेस करने के लिए जाता हूं।

यदि मैं एक कमांड चलाने की कोशिश करता हूं, तो फ़ाइल को अनसैप्ड करके कॉल करना icks यह मुझे एक इंटरैक्टिव सत्र में किक करता है .. उदाहरण के लिए a

# scp -r dns.local:/`Downloads/CrazyRussianCars/ ~/
↩
>

फिर भी अगर मैं तार्किक समाधान की कोशिश करता हूं logical

# scp -r dns.local:/\`Downloads/CrazyRussianCars/ ~/
↩
bash: -c: line 0: unexpected EOF while looking for matching ``'
bash: -c: line 1: syntax error: unexpected end of file

मुझे पता है कि "नया" नियम export NOW=$(date)बनाम export NOW= 'तारीख' की तरह एक वाक्यविन्यास का उपयोग करना है (वास्तव में, मेरे पास एसई एमडी सिंटैक्स में उत्तरार्ध लिखने के लिए एक समय का एक भालू था ...) लेकिन यह ENVया किसी भी स्क्रिप्ट से संबंधित नहीं है । ..

नोट: यह है एक मैक ओएस एक्स पर्यावरण, लेकिन कहा कि, जीयूआई एक दिन के लिए दिन के आधार पर इस चरित्र के साथ काम कर एक समस्या थी कभी नहीं किया है, और आमतौर पर है, अगर वहाँ टर्मिनल, एप्पल में एक वाक्य रचना समस्या हो रहा है GUI में व्यवहार को अक्षम करने का एक बहुत अच्छा काम करता है ... निश्चित नहीं है कि क्या यह बग है, या यदि इस तरह के रास्तों से निपटने की तकनीक बस अस्पष्ट है .. लेकिन अभी तक, मैं एक खोजने में सक्षम नहीं रहा हूं रास्ता "से बचने के लिए" ?


सिर्फ एक चरित्र का उपयोग क्यों न करें, जिसे नंबर 1 की तरह भागने की आवश्यकता नहीं है?
जेम्सन

बैकटिक है - नेत्रहीन - कम विघटनकारी (मेरे लिए), और इसमें कम परिवादात्मक सामान होता है जब इसे सॉर्ट सीमांकक के रूप में पुन: शुद्ध करना होता है।
mralexgray

जवाबों:


10

आप जैड डेनियल द्वारा बताए गए 3 बैकस्लैश का उपयोग कर सकते हैं या आप इसे सिंगल कोट्स में लपेट सकते हैं (')और सिंगल बैकस्लैश का उपयोग कर सकते हैं ।

दोनों का उदाहरण नीचे दिया गया है।

$ touch dir/'`rik' 
$ ls -l dir
total 1865376
-rw-r--r--  1 rik  staff          0 Jul  1 09:51 `rik 
$ scp localhost:dir/\\\`rik ./ `rik         
100%    0     0.0KB/s   00:00     
$ scp localhost:dir/'\`rik' ./ `rik     
100%    0     0.0KB/s   00:00     
$

बहुत बढ़िया। मुझे लगता है कि मैं इस उत्तर को चुनूँगा क्योंकि इसे करने के दो तरीके होना अच्छा है। किसी भी तरह से आप इस तकनीक का उपयोग स्थानीय रूप से कर सकते हैं, केवल एक स्लैश का उपयोग कर सकते हैं, या स्लैश-एवर्स के लिए, कोई स्लाइड नहीं और समस्याग्रस्त फ़ाइल या निर्देशिका के आसपास एकल-उद्धरण तकनीक .. धन्यवाद!
मृलेक्षग्रे

5

तीन backslashes यह करना चाहिए:

jed@jed-osx:~$ ls -la \`foo
ls: `foo: No such file or directory
jed@jed-osx:~$ scp desk:\\\`foo .
`foo                                            100%    0     0.0KB/s   00:00    
jed@jed-osx:~$ ls -la \`foo
-rw-r--r--  1 jed  staff  0 Jul  1 09:45 `foo
jed@jed-osx:~$ rm \`foo

पहला बैकस्लैश बैकटिक से बच जाता है इसलिए इसे दूसरी तरफ भेज दिया जाता है, लेकिन दूसरा पक्ष त्रुटि को फेंक देता है क्योंकि यह बैकटिक्स को जोड़े में होने की उम्मीद कर रहा है। दूसरा बैकस्लैश पहले बैकस्लैश से बच जाता है, फिर आपको अतिरिक्त दो बैकस्लैश की आवश्यकता होती है, ताकि आप बची हुई बैकस्लैश को दूसरी तरफ भेज सकें।

EDIT: जैसा कि रिक ने उल्लेख किया है, आप इसे एकल उद्धरण के साथ भी कर सकते हैं। मैंने इस बारे में नहीं सोचा था क्योंकि आप इसे चर के साथ नहीं ले सकते (जब वे एकल उद्धरण में स्थानीय प्रणाली पर विस्तारित नहीं होंगे)।


3

सामान्यतया, कमांड लाइन की व्याख्या एक बार शेल द्वारा की जाती है। हालाँकि, ऐतिहासिक कारणों से, scp फ़ाइल नाम को दूरस्थ शेल तक भी भेजता है, इसलिए फ़ाइल नाम को दो बार शेल द्वारा व्याख्याित किया जाता है । यह वह भी है जो scp remote:'/path/prefix*' /path/local/काम जैसी चीजें बनाता है , दूरस्थ शेल का विस्तार हो रहा है /path/prefix*

दूसरे विस्तार से बचने का सबसे आसान तरीका है, sftp का उपयोग करना, जो रिमोट शेल का उपयोग नहीं करता है। यह अभी भी ग्लोब विस्तार करता है, लेकिन जब से आप इसे स्टड पर कमांड दे सकते हैं, आप अपने स्थानीय शेल विस्तार से पूरी तरह से बच सकते हैं।

इसके अलावा, आप @Jed Daniels और @Rik Schneider द्वारा दिए गए सहित सामान्य शेल उद्धरण तंत्र का उपयोग कर सकते हैं, लेकिन मैं यह समझाना चाहता था कि वास्तव में क्या हो रहा है और sftp का उल्लेख करें।

(आप अपने scp फ़ाइल नाम में सभी प्रकार के शेल फीचर्स का उपयोग कर सकते हैं, उदाहरण के scp server:\$HOME/file destलिए रिमोट शेल के विचार का उपयोग करेंगे $HOME, जबकि यदि आपने इसे निकाला है \, तो यह आपके स्थानीय शेल का उपयोग करेगा ।)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.