एक सामान्य के रूप में एक विशेष चरित्र का उपयोग कैसे करें?


13

कई प्रश्न जैसे कि 'डबल-कोट चार (") कैसे टाइप करें?" पूछा जा रहा है, और हम अपने समुदाय को एक ही जवाब के साथ अव्यवस्थित नहीं करना चाहते हैं (टाइप करें जैसे \"कि यह 'एस में संलग्न नहीं है , "यदि 'एस में संलग्न है ।) तो, सवाल यहाँ है।

आप सामान्य लोगों की तरह टर्मिनल में विशेष वर्ण टाइप नहीं कर सकते, जैसे यह कमांड विफल हो जाएगा:

echo Updates (11)

तो, टर्मिनल में इन वर्णों को कैसे टाइप करें जैसे कि वे सामान्य थे?

!#$^&*?[](){}<>~;'"\|<space><tab><newline>

कोई यूनिक्स शेल नहीं है जो मुझे पता है कि गाड़ी-वापसी कहां विशेष है। =, @और %कुछ संदर्भों में कुछ गोले में विशेष हैं।
स्टीफन चेजलस

@ StéphaneChazelas उम्म ... कैरिज रिटर्न ( ^M) लाइन फीड ( ^J) की तरह मेरे लिए (Ubuntu 14.04, sh) कार्य करता है।
इकोन जूल

नहीं, आपका टर्मिनल ड्राइवर इनपुट पर बदल ^Mजाता है ^J, लेकिन ^Mशेल के लिए विशेष नहीं है और इसे उद्धृत करने की आवश्यकता नहीं है। टाइप करें echo ^V^M | hdऔर आप 0d कैरेक्टर देखेंगे (और 0a इको द्वारा एप्लाइड)।
स्टीफन चेजलस

@ स्टीफनचैलेजस उम्म ... मुझे नहीं पता कि क्या hdहै, शायद xxdएक हेक्स दर्शक के रूप में बेहतर है।
18

जो भी। यदि आपके पास नहीं है, तो POSIX od -tx1या sed -n lविम xxd का उपयोग करें hd। कुछ प्रणालियों में भी है cat -vteयाcat -A
स्टीफन चेज़लस

जवाबों:


27

यह बहुत शेल पर निर्भर करता है। विवरण के लिए अपने शेल मैनुअल की जाँच करें।

यह भी ध्यान दें कि कुछ वर्ण केवल कुछ संदर्भों में विशेष हैं। उदाहरण के लिए, अधिकांश गोले में, *और ?केवल सूची संदर्भों में, POSIX या csh- जैसे गोले में ~विशेष हैं, केवल एक शब्द की शुरुआत में या जैसे कुछ वर्णों का अनुसरण करने में विशेष है :। के लिए एक ही =में zsh। कुछ गोले में, [केवल तभी विशेष होता है जब (कुछ प्रतिबंधों के साथ) a ]

जैसे कुछ गोले में bashया yash, रिक्त टोकन के रूप में विशेष वर्ण भी लोकेल के साथ भिन्न होते हैं।

उद्धरण संचालक (उन वर्णों के विशेष अर्थ को हटाने के लिए) भी गोले के बीच बहुत भिन्न होते हैं।

बॉर्न-जैसे गोले

बॉर्न-जैसे गोले के लिए एक सारांश (वह गोले हैं जिन्हें sh80 के दशक के बाद से किसी सिस्टम या किसी अन्य पर कॉल करने के लिए जाना जाता है :

बॉर्न शेल

विशेष वर्ण:

  • "\'&|;()^`<>$, स्थान, न्यूलाइन और टैब सरल कमांड लाइनों में विशेष हैं जब उद्धृत नहीं किया जाता है।
  • #(शुरुआती संस्करण को छोड़कर) एक पंक्ति की शुरुआत में या एक अनछुए स्थान, टैब या के बाद विशेष है &|()^<>;`
  • {और }केवल विशेष हैं कि वे शेल कीवर्ड हैं (इसलिए केवल कमांड स्थिति में शब्द)।
  • *?[ग्लोबिंग ऑपरेटरों के रूप में विशेष हैं, इसलिए केवल सूची संदर्भों में। के मामले में [, यह [...]है कि ग्लोबिंग ऑपरेटर है, या तो [या ]केवल विशेष अर्थ निकालने के लिए उद्धृत किया जाना चाहिए।
  • =विशेष तब होता है जब संदर्भों में जहां इसे असाइनमेंट ऑपरेटर के रूप में माना जाता है। अर्थात्, एक साधारण आदेश में, सभी शब्दों के लिए जो एक तर्क का पालन नहीं करते हैं (बाद को छोड़कर set -k)।

संचालकों को उद्धृत करते हुए

  • \न्यूलाइन को छोड़कर सभी विशेष वर्णों को उद्धृत करता है ( अगली भौतिक लाइन पर \<newline>एक लंबी तार्किक रेखा को जारी रखने का एक तरीका है , ताकि अनुक्रम हटा दिया जाए)। ध्यान दें कि बैकटिक्स उनके भीतर अतिरिक्त जटिलता जोड़ते हैं, इसका उपयोग सबसे पहले क्लोजिंग बैकटिक से बचने और पार्सर की मदद करने के लिए किया जाता है। दोहरे उद्धरण चिह्नों के अंदर, केवल खुद से बचने के लिए इस्तेमाल किया जा सकता है , और ( यह अभी भी एक लाइन-निरंतरता है)। एक दस्तावेज़ के अंदर, सिवाय उसी के । यहाँ दस्तावेजों के अंदर पात्रों से बचने का एकमात्र तरीका है।\\"$`\<newline>"\
  • "..."डबल-कोट्स सभी वर्णों से बच जाते हैं लेकिन स्वयं \, $और `
  • '...' एकल उद्धरण सभी वर्णों से बच जाते हैं, लेकिन स्वयं।

POSIX गोले

POSIX गोले ज्यादातर बॉर्न शेल की तरह व्यवहार करते हैं, सिवाय इसके कि:

ksh

इसके अलावा POSIX की तरह:

  • {string}यदि स्ट्रिंग में एक unquoted ,(या ..कुछ मामलों में और कुछ संस्करणों के साथ) विशेष है।
  • ksh93 का एक अतिरिक्त विशेष उद्धृत ऑपरेटर है: $'...'जटिल नियमों के साथ। यही कारण है कि ऑपरेटर भी (कुछ रूपांतरों के साथ) पाया जाता है bash, zsh, mkshऔर FreeBSD और बिजीबॉक्स sh
  • ksh93इसमें एक $"..."उद्धृत ऑपरेटर भी है "..."जो इस तरह काम करता है सिवाय इसके कि स्ट्रिंग स्थानीयकरण के अधीन हो (कॉन्फ़िगर किया जा सकता है ताकि यह उपयोगकर्ता की भाषा में अनुवाद हो)। mkshमें अनदेखा करता $है $"..."

bash

पसंद करें ksh93लेकिन:

  • एकल-बाइट वर्ण स्थानों में, सभी रिक्त (स्थान के अनुसार) वर्णों को सीमांकक (जैसे स्थान या टैब) माना जाता है। वास्तव में, इसका मतलब है कि आपको सभी बाइट्स को 8 वें बिट सेट के साथ उद्धृत करना चाहिए, यदि वे कुछ स्थान में एक खाली चरित्र हो सकते हैं।
  • जब संवादात्मक उदाहरणों में csh इतिहास विस्तार सक्षम किया जाता है, !तो कुछ संदर्भों में विशेष होता है और दोहरे उद्धरण हमेशा इससे बचते नहीं हैं। और ^एक कमांड की शुरुआत में विशेष है।

zsh

पसंद करें ksh93लेकिन:

  • bashcsh इतिहास विस्तार के लिए के रूप में ही ध्यान दें
  • =किसी शब्द के पहले वर्ण ( =lsविस्तार में /bin/ls) के रूप में विशेष है ।
  • {और }कमांड समूह को तब खोल और बंद कर सकते हैं जब सीमांकित नहीं किया जाता है (जैसा {echo text}कि बॉर्न की तरह काम करता है { echo text;})।
  • [अकेले को छोड़कर , [अगर एक के साथ बंद नहीं है तो भी उद्धृत करने की आवश्यकता है ]
  • extendedglobसक्षम विकल्प के साथ #, ^और ~ग्लोबिंग ऑपरेटर हैं।
  • bracecclविकल्प के साथ , {non-empty-string}विशेष है।
  • $"..." समर्थित नहीं है।
  • एक विशेष क्विक के रूप में, एक शब्द के शुरू में (यहां तक ​​कि उद्धृत या विस्तारित) का ?पालन ​​करते समय विशेष नहीं है %( %?nameनौकरी विनिर्देशन की अनुमति देने के लिए )
  • एक rcquotesविकल्प (डिफ़ॉल्ट रूप से सक्षम नहीं) एक एकल उद्धरण को ''ला के अंदर के रूप में एकल उद्धरण दर्ज करने की अनुमति देता है rc(नीचे देखें)।

yash

जैसे POSIX, सिवाय इसके कि।

  • सभी रिक्त वर्णों को सीमांकक माना जाता है।
  • brace-expandविकल्प के साथ , zsh- शैली ब्रेस विस्तार लागू करता है।

सभी गोले के लिए, कुछ विशेष संदर्भ हैं जहां उद्धृत करना अलग तरीके से काम करता है। हम पहले से ही यहाँ दस्तावेजों और backticks का उल्लेख किया है, लेकिन वहाँ भी [[...]]है ksh और कुछ अन्य गोले, POSIX $((...)), caseconstructs ...

यह भी ध्यान दें कि विस्तार (डबल-कोट्स के साथ), या जब दस्तावेज़ डेलीमिटर पर लागू किया जाता है, तो उद्धरण के अन्य दुष्प्रभाव हो सकते हैं। यह आरक्षित शब्दों को भी निष्क्रिय कर देता है और उपनाम विस्तार को प्रभावित करता है।

सारांश

!#$^&*?[(){}<>~;'"`\|=8-बिट सेट के साथ बॉर्न-जैसे गोले, एसपीसी, टैब, NEWLINE और कुछ बाइट्स विशेष रूप से (कम से कम कुछ संदर्भों में) हो सकते हैं।

विशेष अर्थ को हटाने के लिए इसलिए उन्हें शाब्दिक रूप से व्यवहार किया जाता है, आप उद्धरण का उपयोग करते हैं।

उपयोग:

  • '...' हर चरित्र का विशेष अर्थ निकालने के लिए:

    printf '%s\n' '\/\/ Those $quoted$ strings are passed literally as
    single arguments (without the enclosing quotes) to `printf`'
  • \ केवल एक वर्ण का विशेष अर्थ निकालने के लिए:

    printf '<%s>\n' foo bar\ baz #comment

    ऊपर, केवल एक \से पहले के अंतरिक्ष चरित्र को शाब्दिक रूप से पारित किया जाता है printf। अन्य लोगों को शेल द्वारा टोकन डेलिमिटर के रूप में माना जाता है।

  • का उपयोग "..."वर्ण, जबकि अभी भी पैरामीटर विस्तार की इजाजत दी उद्धृत करने के लिए ( $var, $#, ${foo#bar}...), गणित विस्तार ( $((1+1))भी $[1+1]कुछ गोले में) और आदेश प्रतिस्थापन ( $(...)या पुराने प्रपत्र `...`। वास्तव में, ज्यादातर समय, आप अंदर उन विस्तार रखना चाहते हैं किसी भी मामले में दोहरे उद्धरण चिह्नों । आप उपयोग कर सकते हैं \के भीतर "..."(लेकिन केवल उन) अक्षर हैं जो अभी भी विशेष कर रहे हैं के विशेष अर्थ निकालने के लिए।
  • यदि स्ट्रिंग 'चरित्र, आप अभी भी उपयोग कर सकते हैं '...'आराम के लिए और अन्य के हवाले से तंत्र कि बोली कर सकते हैं का उपयोग करें 'की तरह "'"या \'या (जहां उपलब्ध हो) $'\'':

    echo 'This is "tricky", isn'\''t it?'
  • $(...)कमांड प्रतिस्थापन के आधुनिक रूप का उपयोग करें । केवल `...`बॉर्न शेल के साथ संगतता के लिए पुराने का उपयोग करें , जो कि बहुत पुरानी प्रणाली के लिए है, और केवल चर असाइनमेंट में, जैसे कि उपयोग न करें:

    echo "`echo "foo bar"`"

    जो बॉश शेल या एटी एंड टी के संस्करणों के साथ काम नहीं करेगा। या:

    echo "`echo \"foo bar\"`"

    जो बॉर्न और एटी एंड टी के साथ काम करेगा, लेकिन इसके साथ नहीं yash, लेकिन उपयोग करें:

    var=`echo "foo bar"`; echo "$var"

    जो सभी के साथ काम करेगा।

    दोहरे उद्धरण चिह्नों के साथ उन्हें चित्रित करना भी असंभव है, इसलिए फिर से, चर का उपयोग करें। विशेष बैकलैश प्रसंस्करण से भी सावधान रहें:

    var=`printf '%s\n' '\\'`

    विल केवल एक बैकस्लैश अंदर की दुकान $var, (के लिए बैकस्लैश प्रसंस्करण की एक अतिरिक्त स्तर है वहाँ क्योंकि \, `, और $(और भी "जब में छोड़कर उद्धृत yash)) बैकटिक भीतर तो आप या तो जरूरत

    var=`printf '%s\n' '\\\\'`

    या

    var=`printf '%s\n' '\\\'

    बजाय।

Csh परिवार

csh और tcsh में काफी अलग सिंटैक्स होता है, हालांकि बॉर्न शेल के साथ अभी भी बहुत कुछ है क्योंकि वे एक समान विरासत साझा करते हैं।

विशेष वर्ण:

  • "\'&|;()^`<>$, स्थान, न्यूलाइन और टैब हर जगह विशेष हैं जब उद्धृत नहीं किया गया है।
  • #(csh वह शेल होता है जिसे #टिप्पणी नेता के रूप में पेश किया जाता है) एक स्क्रिप्ट की शुरुआत में या एक अनछुए स्थान, टैब या न्यूलाइन का अनुसरण करने के लिए विशेष है।
  • *?[ ग्लोबिंग ऑपरेटरों के रूप में विशेष हैं ताकि सूची संदर्भों में
  • {non-empty-string} विशेष है (csh वह शेल है जिसने ब्रेस विस्तार पेश किया है)।
  • !और ^इतिहास विस्तार (फिर से, एक csh आविष्कार) के हिस्से के रूप में विशेष हैं, और उद्धृत नियम विशेष हैं।
  • ~ (टिल्ड विस्तार भी एक csh आविष्कार) कुछ संदर्भों में विशेष है।

संचालकों को उद्धृत करते हुए

वे बॉर्न शेल के समान हैं, लेकिन व्यवहार भिन्न होता है। tcsh वाक्य-विन्यास की दृष्टि से csh की तरह व्यवहार करता है, आप पाएंगे कि csh के कई संस्करणों में गंदे कीड़े हैं। Tsh का नवीनतम संस्करण प्राप्त करें, csh का लगभग कार्यशील संस्करण प्राप्त करने के लिए।

  • \न्यूलाइन (बॉर्न शेल के लिए समान) को छोड़कर एक एकल चरित्र से बच जाता है। यह एकमात्र उद्धृत ऑपरेटर है जो बच सकता है !\<newline>यह नहीं बचता है, लेकिन इसे एक कमांड विभाजक से टोकन विभाजक में बदल देता है (जैसे अंतरिक्ष)
  • "..."ही है, को छोड़कर सभी पात्रों निकल जाता है $, `, न्यू लाइन और !। बॉर्न शेल के विपरीत, आप \बचने के लिए $और `अंदर का उपयोग नहीं कर सकते हैं "...", लेकिन आप \भागने !या न्यूलाइन (लेकिन खुद को छोड़कर नहीं जब किसी !न्यूलाइन से पहले ) का उपयोग कर सकते हैं । एक शाब्दिक !है "\!"और एक शाब्दिक \!है "\\!"
  • '...' खुद को छोड़कर सभी पात्रों से बचता है, !और न्यूलाइन। दोहरे उद्धरण चिह्नों की तरह, !और बैकलाइन के साथ न्यूलाइन से बच सकते हैं।
  • कमांड प्रतिस्थापन केवल `...`सिंटैक्स के माध्यम से होता है और इसे शायद ही मज़बूती से उपयोग किया जा सकता है।
  • चर प्रतिस्थापन भी बहुत बुरी तरह से डिजाइन और त्रुटि प्रवण है। एक $var:qऑपरेटर अधिक विश्वसनीय कोड लिखने में मदद करता है जिसमें चर शामिल होते हैं।

सारांश

अगर आप कर सकते हैं तो csh से दूर रहें। यदि आप उपयोग नहीं कर सकते हैं:

  • अधिकांश पात्रों को उद्धृत करने के लिए एकल उद्धरण। !और newline अभी भी एक की जरूरत है \
  • \ अधिकांश पात्रों से बच सकते हैं
  • "..."इसके भीतर कुछ विस्तार की अनुमति दे सकते हैं, लेकिन यह बहुत छोटी बात है कि अगर वे newline और / या बैकस्लैश वर्णों को एम्बेड करते हैं, तो सबसे अच्छा केवल एकल उद्धरण का उपयोग कर सकते हैं और $var:qचर विस्तार के लिए। यदि आप किसी सरणी के तत्वों को मज़बूती से जोड़ना चाहते हैं तो आपको लूप का उपयोग करने की आवश्यकता होगी।

rc परिवार

rcहै plan9खोल और उसके वंश की तरह esऔर akangaयूनिक्स और यूनिक्स पसंद में पोर्ट किया गया है। यह एक बहुत क्लीनर और बेहतर वाक्यविन्यास के साथ एक खोल है और अगर हम पिछड़े संगतता के लिए बोर्न जैसे गोले के साथ फंस नहीं थे, तो हर कोई इसका उपयोग करेगा।

rc/akanga

विशेष वर्ण

  • #;&|^$=`'{}()<>, जब उद्धृत नहीं किया जाता है तो SPC, TAB और NEWLINE हमेशा विशेष होते हैं।
  • *?[ ग्लोबिंग ऑपरेटर हैं।

कोट करने वाला संचालक

'...'केवल उद्धृत ऑपरेटर है। एक कोष्ठक के रूप में एकल उद्धरण के 'साथ लिखा ''है:

 echo 'it''s so simple isn''t it?'

es

esके आधार पर एक प्रायोगिक खोल के रूप में देखा जा सकता है rc

हालांकि इसमें कुछ अंतर हैं। इस क्यू / ए के लिए ब्याज की एक \यह भी एक उद्धृत ऑपरेटर है (जो न्यूलाइन को छोड़कर सभी विशेष वर्णों को उद्धृत करता है) और बैकस्लैश के \nलिए न्यूलाइन की तरह भागने के क्रम का परिचय देने के लिए भी इस्तेमाल किया जा सकता है \b...

मछली

मछली एक रिश्तेदार नवागंतुक है (लगभग 2005), मुख्य रूप से इंटरैक्टिव उपयोग के लिए अभिप्रेत है और अन्य गोले से काफी अलग सिंटैक्स भी है।

विशेष वर्ण

  • "'\()$%{}^<>;&|हमेशा विशेष जब उद्धृत नहीं किया जाता है (ध्यान दें %(विस्तार के लिए) अन्य गोले से एक महत्वपूर्ण अंतर के रूप में, और `विशेष नहीं है)
  • # (टिप्पणी) विशेष जब निर्विवाद स्थान, टैब, न्यूलाइन या का पालन कर रहा हो ;&|^<>
  • *?(लेकिन नहीं [...]) ग्लोबिंग ऑपरेटर

संचालकों को उद्धृत करते हुए

  • \न्यू लाइन को छोड़कर एक भी विशेष वर्ण उद्धरण है, लेकिन सावधान रहना यह भी एक सी एस्केप अनुक्रम (के रूप में दोगुना हो जाता है \n, \b...) परिचयकर्ता। IOW, \nएक उद्धृत नहीं nबल्कि एक नई पंक्ति है।
  • "..."सब कुछ लेकिन खुद को, $और उन लोगों से बचने के लिए बैकस्लैश और बैकस्लैश का उपयोग किया जा सकता है। \<newline>एक लाइन निरंतरता (हटाया) अंदर है "..."
  • '...'सब कुछ लेकिन खुद को और \, और आप उन से बचने के लिए बैकस्लैश का उपयोग कर सकते हैं।

मैंने सभी संदर्भों में केवल विशेष को शामिल किया है (ताकि cवही काम करे \c, जो STDERR पर cआउटपुट नहीं करता है c: command not found, आदि) और मैं shयहाँ बात कर रहा हूँ । यह भी याद रखें कि यह एक "क्लीन-अप" सवाल है, अर्थात यह ऐसे सभी पात्रों को कवर करने के लिए है, इसलिए 19+ प्रश्न नहीं पूछे जाएंगे। सवाल एक घटना के लिए पोस्ट किया गया था कि ऐसे विभिन्न पात्रों के लिए अलग-अलग प्रश्न पूछे जाते हैं, हम निश्चित रूप से यहां सफाई करना चाहते हैं!
EKons

ठीक है, ?[ग्लोबिंग ऑपरेटर हैं, लेकिन सभी संदर्भों में विशेष नहीं है, लेकिन *ऐसा लगता है, क्योंकि वर्तमान निर्देशिका की सामग्री echo *बुरी तरह से echoबच जाती है (कुछ भी बचने नहीं)। echo ?एक शाब्दिक गूँज ?और एक शाब्दिक echo [गूँज [। इसके अलावा, ]एक निराशाजनक अवरोधक भी है।
EKons

1
@ ΥριΈνσταντόποςλο as, *एक ग्लोब के रूप में सभी गैर-छिपी हुई फ़ाइलों को, ?गैर-छिपी एकल-वर्ण फ़ाइलों को, [a-z]उन फ़ाइलों को विस्तारित करता है, जिनका नाम एक और z और इतने पर के बीच एक एकल वर्ण है। जब वे ?शेल के आधार पर किसी भी फ़ाइल (जैसे आपके मामले में ) से मेल नहीं खाते हैं , तो आपको एक नो-मैच त्रुटि मिलती है या पैटर्न अपने आप फैल जाता है। किसी भी मामले में, यहां तक ​​कि शेल पर जहां वे खुद को विस्तारित करते हैं, उन्हें उस मामले में उद्धृत करने की आवश्यकता होती है जब वे किसी फ़ाइल से मेल खा सकते हैं
स्टीफन चेज़लस

लेकिन, एक ग्लोब के रूप में नहीं, *अभी भी कुछ करने के लिए फैलता है।
EKons

@ ΥριΈνσταντόποςλο is, *की तरह है ?, अगर यह मेल नहीं खाता है ( *अकेले के मामले के लिए , कि जब मौजूदा निर्देशिका में केवल छिपी हुई फ़ाइलें हैं, तो उसके लिए a*कोई फ़ाइल नहीं है जिसका नाम a... से शुरू होता है ), यह या तो फैलता है खुद (सबसे बॉर्न की तरह गोले), या एक नहीं मैचों की त्रुटि (जन्म देती है csh, tcsh, fish, (चेतावनी) zsh, bash -O failglob, (या कुछ गोले या यदि nullglob विकल्प के साथ कुछ भी नहीं करने के लिए फैलता है, जल्दी यूनिक्स गोले) वहाँ एक और पद्धति है फैलता है कि csh, tsh, zsh -o cshnullglob, प्रारंभिक यूनिक्स गोले) में कुछ।
स्टीफन क्लाजस

4

1. बच

इन सभी वर्णों के साथ बच जाएं \, जैसे कि (यह newlines / कैरिज रिटर्न पर काम नहीं करता है):

$ echo Use a \"\\\" symbol to escape characters.
Use a "\" symbol to escape characters.

2. डबल-कोट

संपूर्ण पाठ को "इस तरह से संलग्न करें:

$ var=variables;echo "Enclose text in \"s. You can also use $var in them. `echo Surprise!!!`"
Enclose text in "s. You can also use variables in them. Surprise!!!

3. एकल-भाव

डबल-उद्धरण के रूप में भी, लेकिन कोई विशेष टोकन नहीं है।

$ proof=proveit;echo 'This should not read "proveit": $proof'
This should not read "proveit": $proof

1
आप fishशेल के व्यवहार का वर्णन कर रहे हैं , न कि बॉर्न की तरह के गोले, जहां एकल उद्धरण हर चरित्र को उद्धृत करता है (बैकस्लैश विशेष नहीं है '...')। ध्यान दें कि fish, %एक विशेष चरित्र भी है।
स्टीफन चेजालस

@ स्टीफनचेज़ेलस मुझे नहीं पता कि कैसे fishकाम करता है, लेकिन मेरा अनुभव यह है कि, में sh, echo '\\'गूँज \ और echo '\''गूँज '
इकोन्स

1
echo '\\'आउटपुट \ _ क्योंकि आपके echoएएनएसआई सी एस्केप अनुक्रम (कुछ echoकार्यान्वयन उस के echo -e '\\'लिए आवश्यक हैं) का विस्तार करता है। printf '%s\n' '\\'आउटपुट \\।
स्टीफन चेज़लस

ध्यान दें कि shएक विशेष शेल की पहचान नहीं होती है, बहुत सारे अलग-अलग और अक्सर असंगत शेल कहलाते हैं sh
स्टीफन चेजलस

@ स्टीफनचैलेजेलस ओह ठीक है, मैं इसे अब बदल दूंगा। वैसे, \'एकल-उद्धृत वर्ण अनुक्रम के अंदर एक विशेष टोकन है?
इकोन जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.