कमांड के लिए: / usr / bin / sh -c "ls 1`" (1 के बाद का बैकक्वाइट)।
इसे सफलतापूर्वक कैसे चलाने के लिए? "` 'काम नहीं करने से पहले एक बैकस्लैश जोड़ना `एक विशेष वर्ण है जैसा हम जानते हैं, और मैंने इसके आसपास एक बोली के साथ भी प्रयास किया (/ usr / bin / sh -c" ls 1'` '"), लेकिन वह भी काम नहीं करता है।
त्रुटि हमेशा होती है:
% / usr / bin / sh -c "ls 1 \`" बेमेल `
आपको बैकटीक से बचने की ज़रूरत है, लेकिन बैकस्लैश से बचें:
$ touch1 \ '$ / bin / sh -c "ls 1 \\\ `` 1`
इसका कारण "दो बार" से बचना है क्योंकि आप इस कमांड को एक पर्यावरण (जैसे कि खोल स्क्रिप्ट) में डाल रहे हैं जो कि डबल-उद्धृत स्ट्रिंग की व्याख्या करता है एक बार।
आप दोहरे उद्धरणों से भी बच सकते हैं, और इस प्रकार पहली व्याख्या से बचें:
$ / bin / sh -c 'ls 1 \ `'1`
फ़ाइल नाम किसी चर में संग्रहीत करने का दूसरा तरीका है, और उस मान का उपयोग करें:
$ export F =' 1` $ $ printenv F 1` $ / bin / Sh -c 'ls $ F' # नोट कि / बिन / श $ एफ की व्याख्या करता है, मेरा वर्तमान शेल 1` नहीं
और आखिरकार, आपने कुछ गोले पर काम करने की कोशिश की है (मैं बाश का उपयोग कर रहा हूं , जैसा कि ऊपर दिए गए उदाहरणों के लिए), सिर्फ अपने खोल के साथ नहीं:
$ / bin / sh -c "ls 1 '\' '1` $ csh # csh दर्ज करें, अगली पंक्ति निष्पादित हो जाती है उस वातावरण में% / bin / sh -c "ls 1 '\`' 'बेजोड़'
मैं दृढ़ता से सुझाव देता हूं कि आप ऐसे फाइलनामों में से बचें।
No comments:
Post a Comment