Shell आर्ग्युमेंट एस्केपर
किसी भी स्ट्रिंग को POSIX sh/Bash/Zsh (सिंगल कोट्स), Bash ANSI-C $'…' या PowerShell के लिए सुरक्षित रूप से कोट करें, या कोट किए शेल शब्दों को उनके मानों में पार्स करें।
19 अक्षर · 19 बाइट्स (UTF-8)
0 अक्षर · 0 बाइट्स (UTF-8)
पूरी तरह आपके ब्राउज़र में चलता है। आपका डेटा कभी अपलोड नहीं होता।
Shell एस्केप क्या है?
किसी भी टेक्स्ट को एक शेल आर्ग्युमेंट में बदलता है जिसे शेल बिना बदलाव के आगे देता है, quotes, $, backtick, स्पेस और newline सहित। यह POSIX शेल, Bash/Zsh ANSI-C कोटिंग और PowerShell का समर्थन करता है, और कोट किए शब्दों को वापस पार्स भी कर सकता है।
Shell एस्केप का उपयोग कैसे करें
- एस्केप करें या अनएस्केप करें चुनें।
- शेल चुनें: POSIX sh/Bash/Zsh, Bash/Zsh ANSI-C या PowerShell।
- चाहें तो हर पंक्ति एक अलग आर्ग्युमेंट है या हमेशा कोट्स लगाएँ चुनें।
- मान को इनपुट में पेस्ट करें और आउटपुट से कोट किया हुआ आर्ग्युमेंट कॉपी करें।
उदाहरण
It's $HOME
'It'\''s $HOME'
Shell एस्केप का उपयोग कब करें
जब ऐसे कमांड बना रहे हों जिनमें फ़ाइल नाम, पासवर्ड या उपयोगकर्ता इनपुट हो, जैसे स्क्रिप्ट, SSH कमांड, CI कॉन्फ़िग या दस्तावेज़ में, तब इसका उपयोग करें। Windows cmd.exe समर्थित नहीं है क्योंकि उसमें ऐसी कोटिंग नहीं है जो हर इनपुट के लिए सुरक्षित हो। प्रोग्राम में शेल स्ट्रिंग बनाने की बजाय आर्ग्युमेंट ऐरे (जैसे execFile, subprocess.run([...])) देना बेहतर है।
Shell एस्केप कैसे काम करता है
POSIX मोड टेक्स्ट को सिंगल कोट्स में लपेटता है, जिनके अंदर कुछ भी विशेष नहीं होता, और हर ' को '\'' के रूप में लिखता है (कोट बंद, एस्केप किया कोट, फिर खोलें), यही तरीक़ा Python के shlex.quote का है। सिर्फ़ A–Z a–z 0–9 _ @ % + = : , . / - से बने सरल शब्द बिना कोट के छोड़े जाते हैं, जब तक आप कोट्स न माँगें। ANSI-C मोड \n, \t, \' और \xHH एस्केप के साथ $'…' बनाता है, जिससे कंट्रोल अक्षर दिखाई देते हैं। PowerShell मोड सिंगल कोट्स इस्तेमाल करता है और हर सिंगल कोट को दोगुना करता है (typographic ‘ ’ सहित)। अनएस्केप मोड शब्दों को वैसे पार्स करता है जैसे शेल करता है (quotes, बैकस्लैश, $'…'), बिना कोई विस्तार (expansion) किए।
सामान्य उपयोग मामले
- स्पेस या quotes वाला फ़ाइल नाम किसी कमांड को देना
-
curlकमांड में JSON पेलोड एम्बेड करना -
ssh host "command"के आर्ग्युमेंट कोट करना - समझना कि जटिल कोट की गई कमांड लाइन असल में क्या पास करती है
सुरक्षा नोट
सही कोटिंग कमांड इंजेक्शन तभी रोकती है जब कोट किया मान एक आर्ग्युमेंट के रूप में इस्तेमाल हो; यह असुरक्षित कमांड को सुरक्षित नहीं बनाती।
अक्सर पूछे जाने वाले प्रश्न
सीधे डबल कोट्स क्यों नहीं इस्तेमाल करते?
डबल कोट्स के अंदर शेल अब भी $VAR, backtick और \ का विस्तार करता है। सिंगल कोट्स सारा विस्तार बंद कर देते हैं, इसलिए वे किसी भी टेक्स्ट के लिए सुरक्षित हैं।
'\'' का क्या मतलब है?
यह सिंगल-कोट वाला हिस्सा समाप्त करता है, एक एस्केप किया हुआ शाब्दिक कोट जोड़ता है, और नया सिंगल-कोट वाला हिस्सा शुरू करता है। शेल टुकड़ों को जोड़कर एक आर्ग्युमेंट बना देता है।
क्या Windows cmd.exe समर्थित है?
नहीं। cmd.exe में ऐसी कोटिंग नहीं है जो हर संदर्भ में % और ^ जैसे अक्षरों की भरोसेमंद सुरक्षा करे। PowerShell मोड इस्तेमाल करें या शेल से बचें।