मैं टर्मिनल में मल्टी-लाइन बैश कोड कैसे पेस्ट करूं और इसे एक ही बार में चलाऊं?


104

मुझे टर्मिनल में एक मल्टी-लाइन बैश कोड पेस्ट करने की आवश्यकता है, लेकिन जब भी मैं करता हूं, प्रत्येक लाइन एक अलग कमांड के रूप में चला जाता है जैसे ही यह चिपकाया जाता है।

जवाबों:


107

\इसे कॉपी करने से पहले प्रत्येक पंक्ति के अंत में डालने का प्रयास करें ।


19
नोट: अनुगामी रिक्त स्थान इसे तोड़ देंगे!
मैक्स रीडर

55

मैं वास्तव में आश्चर्यचकित हूं कि यह उत्तर यहां प्रस्तुत नहीं किया गया है, मैं इस प्रश्न के समाधान की तलाश में था और मुझे लगता है कि यह सबसे आसान तरीका है, और अधिक लचीला / क्षमाशील ...

यदि आप किसी वेबसाइट / टेक्स्ट एडिटर / आदि से कई लाइनें चिपकाना चाहते हैं, तो इसकी परवाह किए बिना कि वह प्रति पंक्ति या फंक्शन या पूरी स्क्रिप्ट की परवाह किए बिना है ... बस एक के साथ शुरू करें (और एक और अंत के साथ )दर्ज करें, जैसे निम्नलिखित उदाहरण में:

अगर मैं निम्नलिखित बूँद था

function hello {
    echo Hello!
}
hello

आप एक टर्मिनल में बैश का उपयोग करके पेस्ट और सत्यापन कर सकते हैं:

  1. के साथ शुरू (

  2. अपने पाठ को पेस्ट करना, और Enter दबाएं (इसे सुंदर बनाने के लिए) ... या नहीं

  3. एक के साथ समाप्त करना )और एंटर दबाना

उदाहरण:

imac:~ home$ ( function hello {
>     echo Hello!
> }
> hello
> )
Hello!
imac:~ home$ 

>प्रत्येक पंक्ति के लिए पूर्व निर्धारित पाठ के साथ चिपकाया हुआ पाठ स्वचालित रूप से जारी रहता है । मैंने प्रति पंक्ति, फ़ंक्शंस और संपूर्ण स्क्रिप्ट के साथ कई लाइनों का परीक्षण किया है। आशा है कि यह दूसरों को कुछ समय बचाने में मदद करता है!


4
सबसे आसान तरीका आईएमओ
होबोकर

1
@ आसान चीजों के लिए टूलकिट जैसा कि आप वर्णित के रूप में काम करेंगे, लेकिन मैंने जो समाधान पेश किया है वह अधिक जटिल स्थितियों (लाइन ब्रेक, कई फ़ंक्शन, संपूर्ण स्क्रिप्ट, आदि) के लिए काम करेगा
ट्राइट्रीएगैन

1
यह उप-क्रम में पेस्ट किए गए आदेश चलाता है, इसलिए यह अक्सर वह नहीं करता है जो आप चाहते हैं। आप कोष्ठकों के बजाय ब्रेसिज़ का उपयोग इसे वर्तमान शेल में चलाने के लिए मजबूर कर सकते हैं; लेकिन वास्तव में, बस या तो नहीं करते। खोल सामना कर सकता है।
त्रिवेणी

33

यदि आप C-x C-eकमांड दबाते हैं जो आपके डिफ़ॉल्ट संपादक को परिभाषित करेगा जो परिभाषित किया गया है.bashrc , उसके बाद आप अपने संपादक की सभी शक्तिशाली विशेषताओं का उपयोग कर सकते हैं। जब आप सहेजते हैं और बाहर निकलते हैं, तो लाइनें आपके प्रवेश की प्रतीक्षा करेंगी।

यदि आप अपने संपादक को परिभाषित करना चाहते हैं, तो बस Ex के लिए लिखें। EDITOR=emacs -nwया के EDITOR=viअंदर~/.bashrc


2
तकनीक उपयोगी है, लेकिन ध्यान दें कि संपादक को तुल्यकालिक रूप से चलना चाहिए (जैसे emacsऔर viकरते हैं), और कमांड को सहेजने और बाहर निकालने पर तुरंत निष्पादित किया जाता है
mklement0

16

बैकस्लैश के अलावा, एक लाइन के साथ समाप्त होता है |या &&या|| है, यह अगली पंक्ति पर जारी रखा जाएगा।


13

लाइनों के चारों ओर कोष्ठक जोड़ें। उदाहरण:

$ (
sudo apt-get update
dokku apps
dokku ps:stop APP # repeat to shut down each running app
sudo apt-get install -qq -y dokku herokuish sshcommand plugn
dokku ps:rebuildall # rebuilds all applications
)

2
ध्यान दें, पैरेन्थेसिस की तरह (, ब्रेसिज़ {भी उपरोक्त उदाहरण में समान काम करेंगे
जिप्सी कोस्मोनॉट



4

टेक्स्ट फ़ाइल में कमांड की एक लंबी लाइन को रोकने के लिए, मैं अपनी कॉपी-पेस स्निपेट को इस तरह रखता हूं:

echo a;\
echo b;\
echo c


0

iTerm कई-लाइन कमांड को पूरी तरह से हैंडल करता है, यह कई-कमांड कमांड को एक कमांड के रूप में बचाता है, फिर हम Cmd+ Shift+ का उपयोग कर सकते हैं; इतिहास को नेविगेट करने के का ।

ITerm के साथ प्रभावी ढंग से काम करने में अधिक iTerm युक्तियां जांचें


-1

प्रयत्न

out=$(cat)

फिर अपनी लाइनें पेस्ट करें और Ctrl-D दबाएं (EOF वर्ण डालें)। Ctrl-D तक सभी इनपुट को बिल्ली के स्टडआउट पर पुनर्निर्देशित किया जाएगा।


इसे आज़माएँ $ out=$(cat) && eval "$out":। पिछली पंक्ति के बाद एंट्री मारा, फिर CTRL + D जैसा कि ऊपर बताया गया है।
मोहम्मद बन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.