मुझे टर्मिनल में कभी-कभी ">" के साथ बार-बार संकेत क्यों मिलता है?


19

ठीक है, जब मैं कुछ कमांड गलत तरीके से चलाता हूं, (गलत वर्तनी, आदि) टर्मिनल इसे आउटपुट करता है: >इसके बजाय computername:workingfolder username$, और जब मैं टाइप करता हूं तो यह इस तरह से जाता है:

>

>

>

अगर मैं 3 बार दबाया गया तो यह होगा।

जवाबों:


43

> डिफ़ॉल्ट निरंतरता है। क्या आप असंतुलित बोली के निशान था इससे पहले कि आप दर्ज किया है अगर आप देखेंगे क्या है।

एक उदाहरण के रूप में, कमांड लाइन पर कुछ enterकुंजियों के बाद एक एकल उद्धरण टाइप करें:

$ '
> 
> 
> 

निरंतरता के संकेत तब तक मिलेंगे जब तक आप या तो

  • (a) क्लोजिंग उद्धरण चिह्न के साथ कमांड को पूरा करें

    या

  • (b) इनपुट खत्म करने के लिए टाइप Ctrl+ D, जिस बिंदु पर शेल असंतुलित उद्धरणों के बारे में त्रुटि संदेश के साथ प्रतिक्रिया देगा,

    या

  • (c) टाइप Ctrl+ Cजो उस कमांड को निरस्त कर देगा जो आप दर्ज कर रहे थे।

यह कैसे उपयोगी है

कुछ समय बाद, आप एक स्ट्रिंग दर्ज करना चाह सकते हैं जिसमें एम्बेडेड नई लाइनें हों। आप निम्नानुसार कर सकते हैं:

$ paragraph='first line
> second line
> third line
> end'

अब, जब हम उस शेल चर को प्रदर्शित करते हैं, तो आप देख सकते हैं कि संकेत गायब हो गए हैं, लेकिन नए सिरे को बनाए रखा गया है:

$ echo "$paragraph"
first line
second line
third line
end

16

यदि आपके आदेश में एक अयोग्य उद्धरण है, तो यह होगा। वह कुछ इस तरह है:

$ echo "test here
>
>
...

आप उद्धरण को बंद करके ( "या ', या आपकी खुली बोली जो भी हो) उस मोड से बाहर निकल सकते हैं । यह एक ब्रेस-सीमांकित ब्लॉक, आंशिक रूप से पूर्ण for-doया while-doलूप या कुछ अन्य निर्माण भी हो सकता है। आप Ctrl-Cइस आदेश को रद्द करने के लिए भी दबा सकते हैं (फिर Upइसे संशोधित करने के लिए दबाएं )।

यह कभी-कभी एक स्पष्ट लापता उद्धरण के बिना हो सकता है जब पैरामीटर या इतिहास विस्तार होता है जहां आप उनसे उम्मीद नहीं करते थे।


>आपके है PS2( "माध्यमिक शीघ्र") मूल्य। आप बदल सकते हैं कि कुछ और आपको याद दिलाने के लिए कि क्या हुआ है:

PS2="Unclosed >"

आपके बजाय यह प्रत्येक पंक्ति के प्रारंभ में .bashrcप्रिंट करेगा Unclosed >


7

अन्य उत्तरों के अलावा, आपको \एक पंक्ति में अंतिम वर्ण के रूप में टाइप करने पर निरंतरता संकेत भी मिलता है ।


5
(मेरे लिए, यह आमतौर पर दुर्घटना से होता है, क्योंकि बैकस्लैश भयावह रूप से एंटर कुंजी के करीब है।)
श्री लिस्टर

मेरे कीबोर्ड पर नहीं , यह नहीं है।
टीआरजी

@TRiG का अर्थ है, आप अक्सर \ के बजाय दुर्घटना से # टाइप करते हैं? सही ...
श्री लिस्टर

7

जवाब बैश संदर्भ नियमावली में इस गूढ़ उल्लेख में निहित है :

5.1 बॉर्न शैल चर

[...]

  • PS1: प्राथमिक शीघ्र स्ट्रिंग। डिफ़ॉल्ट मान ' \s-\v\$' है। प्रिंटिंग प्रॉम्प्ट देखें , भागने के अनुक्रमों की पूरी सूची के लिए जो पहले PS1प्रदर्शित किए गए हैं।
  • PS2: माध्यमिक शीघ्र स्ट्रिंग। डिफ़ॉल्ट मान ' >' है।

इसके बाद :

6.3.3 इंटरएक्टिव शैल व्यवहार

  1. बैश PS1एक कमांड की पहली लाइन पढ़ने से पहले फैलता है और प्रदर्शित करता है, और PS2एक मल्टी-लाइन कमांड की दूसरी और बाद की लाइनों को पढ़ने से पहले फैलता है और प्रदर्शित करता है ।

इसलिए, >यदि आप दबाते हैं तो प्रॉम्प्ट दिखाई देता है Enterऔर बैश यह निर्धारित करता है कि कमांड अधूरी है। ऐसा इसलिए हो सकता है:

  • न्यूलाइन से पहले का चरित्र एक है \, जिसे लाइन निरंतरता के रूप में माना जाता है ।
  • आप एक अधूरी स्ट्रिंग (बेमेल उद्धरण या समाप्त नहीं की गई यहाँ-doc) या इस तरह के रूप में कुछ अन्य बेमेल सीमांकक, है $(), (), ``
  • आपने फ़ंक्शन परिभाषा, एक forलूप, whileलूप या ए शुरू किया है case

यदि आप अनजाने टाइपिंग त्रुटि के कारण द्वितीयक संकेत देख रहे हैं, ControlCतो प्राथमिक संकेत पर वापस जाएँ।


जब आप यहाँ-डॉक्टर में टाइप कर रहे हों, तब आपको द्वितीयक संकेत भी मिलता है। लेकिन दूसरों की तुलना में दुर्घटना से ऐसा होने की संभावना कम है।
बरमार

6

कमांड पूरा करने के लिए शेल आपको इंतजार कर रहा है। हो सकता है कि कहीं पर कोई गलत उद्धरण न हो या उसे लगे कि आप "लूप" शुरू कर रहे हैं और टाइपिंग खत्म करने के लिए उपयोगकर्ता का इंतजार कर रहे हैं

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