क्या कभी-कभी कमांड निष्पादित करने के लिए टर्मिनल में कॉपी / पेस्ट का कारण बनता है?


24

जब आप टर्मिनल में कुछ कमांड पेस्ट करते हैं, तो यह कभी-कभी स्वचालित रूप से कमांड निष्पादित करेगा (जैसे कि "एंटर" कुंजी दबाया गया था), कभी-कभी नहीं।

मैं उम्र के लिए लिनक्स का उपयोग कर रहा हूं, कई विकृतियों पर विभिन्न कंसोलों में हजारों कमांड चिपकाए गए हैं, और मैं अभी भी यह बताने में असमर्थ हूं कि मैं जिस कमांड को पेस्ट करने वाला हूं वह स्वचालित रूप से निष्पादित किया जाएगा या नहीं।

क्या इस व्यवहार को ट्रिगर करता है?


5
यदि आप इस बारे में चिंता करने से बचना चाहते हैं { , तो चिपकाने से पहले (w / space) टाइप करें , फिर समाप्त हो जाएगा }। चिपकाया गया आदेशों के कामकाज पर इसका कोई प्रभाव नहीं पड़ता है, लेकिन शेल को तब तक निष्पादित करने से रोकता है जब तक आप ब्लॉक को बंद नहीं करते। यहाँ वर्णित [ gnu.org/software/bash/manual/html_node/Command-Grouping.html]
loa_in_

जवाबों:


37

यह पाठ में वापसी चरित्र है जिसे आप कॉपी कर रहे हैं जो स्वचालित निष्पादन को ट्रिगर कर रहा है।

आइए एक अलग उदाहरण लें, इन पंक्तियों को एक साथ कॉपी करें और अपने टर्मिनल में पेस्ट करें:

echo "Hello";
echo "World";

यदि आप अपने टर्मिनल में देखते हैं, तो आप यह नहीं देखेंगे:

$ echo "Hello";
echo "World";

आप इसे देखेंगे (यह कहते हुए एक पंक्ति भी हो सकती है World):

$ echo "Hello";
Hello
$ echo "World";

सभी इनपुट के चिपके रहने की प्रतीक्षा करने के बजाय, पहली पंक्ति निष्पादित होती है (और उसी कारण से, दूसरी पंक्ति ऐसा भी कर सकती है या नहीं भी कर सकती है)। ऐसा इसलिए है क्योंकि RETURNदो लाइनों के बीच एक चरित्र है।

जब आप ENTERअपने कीबोर्ड पर कुंजी दबाते हैं , तो आप जो भी कर रहे हैं वह ASCII मान के साथ वर्ण भेज रहा है 13। उस चरित्र को आपके टर्मिनल द्वारा तुरंत पता चला है, और यह जानता है कि आपके द्वारा अब तक टाइप किए गए कार्यों को निष्पादित करने के लिए इसके विशेष निर्देश हैं।

जब आपके कंप्यूटर पर संग्रहीत या आपकी स्क्रीन पर मुद्रित किया जाता है, तो RETURNवर्ण वर्णमाला, संख्या, या प्रतीक के किसी भी अन्य अक्षर की तरह होता है। इस चरित्र को बैकस्पेस के साथ हटाया जा सकता है, या किसी अन्य नियमित चरित्र की तरह क्लिपबोर्ड पर कॉपी किया जा सकता है।

अंतर केवल इतना है, जब आपका ब्राउज़र चरित्र को देखता है, यह जानता है कि दृश्यमान चरित्र को प्रिंट करने के बजाय , इसे अलग तरह से व्यवहार करना चाहिए, और पाठ के अगले सेट को अगली पंक्ति में स्थानांतरित करने के लिए विशेष निर्देश हैं। RETURNचरित्र और SPACEवर्ण (ascii 32), कुछ अन्य शायद ही कभी इस्तेमाल किया पात्रों के साथ साथ, के रूप में इस कारण के लिए "गैर मुद्रण वर्ण" जाना जाता है।

कभी-कभी जब आप किसी वेबसाइट से टेक्स्ट कॉपी करते हैं, तो केवल टेक्स्ट को कॉपी करना मुश्किल होता है और अंत में रिटर्न नहीं (और अक्सर पेज पर स्टाइल द्वारा इसे और अधिक कठिन बना दिया जाता है)।


प्रयोग का समय!

नीचे आपको दो कमांड मिलेंगे, जो समस्या का वर्णन करेंगे, और यह कि आप "अभ्यास" कर सकते हैं। अपने कर्सर को ठीक पहले शुरू करें echoऔर तब तक खींचें जब तक कि तीर से पहले हाइलाइट सही न हो जाए:

echo "Wait for my signal...";<- End cursor here right after the semicolon

और अब दूसरी कमांड का प्रयास करें। अपने कर्सर को ठीक पहले शुरू करें echoऔर तब तक नीचे खींचें जब तक कि कर्सर दूसरी लाइन पर न हो, लेकिन <-तीर के ठीक सामने है । इसे कॉपी करें, और फिर इसे अपने टर्मिनल में पेस्ट करें:

echo 'Go go go!';
<- End cursor here right before the arrow

आपके ब्राउज़र के आधार पर, यह भी दिखाई नहीं दे सकता है कि आपके द्वारा चयनित पाठ दो पंक्तियों में चला गया है। लेकिन जब आप इसे टर्मिनल में पेस्ट करते हैं, तो आप पाएंगे कि यह लाइन निष्पादित करता है, क्योंकि यह RETURNकॉपी किए गए पाठ में एक चरित्र पाया ।


5
जटिलता को कम करने के लिए, मैंने यह उल्लेख करते हुए पूरी तरह से अनदेखा किया कि विंडोज रिटर्न के लिए दो अलग-अलग कुंजियों का उपयोग करता है। बस पता है कि यह एक दैनिक संकट है और संघर्ष से हमें निपटना है।
IQAndreas 10

अंतरिक्ष एक मुद्रण वर्ण है
mikeserv

1
शायद। हालांकि, जब मैं फ़ायरफ़ॉक्स से एक शेल में एक पेस्ट का परीक्षण करता हूं (स्टिकी सेट "कच्चे" के साथ), तो लाइनें नए सिरे से समाप्त होती हैं - गाड़ी वापसी नहीं।
थॉमस डिक्की

1
आपको अगली पंक्ति में जाने की आवश्यकता नहीं है, यदि आप अर्धविराम को पर्याप्त मात्रा में (2-3 वर्ण) अतीत का चयन करते हैं और स्थानांतरित करते हैं, तो यह पूरी पंक्ति का चयन करेगा, जिसका अर्थ है कि आपने खुद को एक नई पंक्ति पकड़ा है।

@ThomasDickey आप विंडोज या यूनिक्स-आधारित प्रणाली पर हैं?
IQAndreas

10

जब आप पाठ का चयन करते हैं, यदि आप एक पंक्ति के अंत में (अदृश्य) न्यूलाइन को शामिल करने के लिए होते हैं, तो यह पेस्ट किए गए पाठ में होगा। मुझे पता है कि सभी टर्मिनल एमुलेटर भर में सुसंगत है। नईलाइन वह करती है जिसे आप "मान्य" कह रहे हैं।

कुछ प्रणालियों पर (जैसे कि आईबीएम 3270 जैसे तुल्यकालिक टर्मिनलों का उपयोग करने वाले), Enterकुंजी होस्ट के सभी परिवर्तनों को कॉपी करके स्क्रीन को "मान्य" करेगी।


2

अन्य उत्तरों ने सवाल का अच्छी तरह से उत्तर दिया है, लेकिन मुझे लगा कि मैं गलती से इसे रोकने के लिए एक समाधान साझा करूंगा यदि आप विंडोज पर PuTTY का उपयोग कर रहे हैं - /server/731022/prevent-accidental देखें -अनुशासन-के-आदेश-में-लाइनक्स-अगर-चिपकाने-पाठ-युक्त- विवरण के लिए एक


2

क्या इस व्यवहार को ट्रिगर करता है?

नईलाइन चरित्र।

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