मैं बैश में कई लाइन कमांड में पिछली लाइनों को कैसे संपादित करूं?


24

एक कमांड में प्रवेश करते समय जो बैश में कई लाइनों को फैलाता है, मैं पिछली लाइनों को कैसे संपादित करूं? मैं गनोम टर्मिनल का उपयोग कर एक लिनक्स मिंट (लिसा) उपयोगकर्ता हूं।

उदाहरण के लिए, मान लें कि मैं टाइप करता हूं:

$ echo "foo bar
> baz
>

और फिर जब मैं कमांड की तीसरी लाइन टाइप करने वाला होता हूं, तो अचानक मुझे एहसास होता है कि मुझे "फू" और "बार" अलग लाइनों पर चाहिए। मैं "foo" और "bar" के बीच अपने कर्सर को कैसे रिपीट करूंगा ताकि मैं एंटर दबाकर उन्हें अलग-अलग लाइनों पर रख सकूं?

(यह आसान नहीं है जैसा आप सोच सकते हैं। ऊपर तीर काम नहीं करता है, न ही Ctrl-P। तो कृपया, पोस्ट करने से पहले इसे आज़माएं! धन्यवाद!)


स्वीकृत उत्तर कहता है कि कोई समाधान नहीं है, लेकिन है। नीचे
cdosborn

जवाबों:


16

यह, दुर्भाग्य से, bashटर्मिनल तक नहीं है। आपके विकल्प हैं:

  1. न्यूक्लियर के बजाय अर्धविरामों का उपयोग करें, हालांकि तब भी आप एक समय में स्क्रीन लाइन को स्थानांतरित नहीं कर सकते हैं, लेकिन वर्ण या शब्द गति कमांड का उपयोग करना चाहिए। (अजीब तरह से, zshकम से कम आपको इतिहास को संपादित करते समय एक कंपाउंड कमांड के भीतर ले जाने की अनुमति देता है, केवल वर्तमान कमांड के भीतर नहीं ।) कभी-कभी fc(जो आपको पिछले कमांड के साथ आपके संपादक में शामिल करता है) कंपाउंड कमांड को संभालने का सबसे आसान तरीका है।

  2. यदि आप बैश का उपयोग कर रहे हैं, तो निम्न कुंजी संयोजन का उपयोग करें:

    ctrl x e

    यह आपके पाठ संपादक का उपयोग करने पर आपके द्वारा काम कर रहे कमांड को खोल देगा। फ़ाइल सहेजें और छोड़ें। (मुझे शेल हैटर की प्रस्तुति पर कमांड मिली ।) Zsh उपयोगकर्ताओं के पास यह विकल्प है


1
बैश मैन पेज बताता है कि किस संपादक का उपयोग कैसे किया जाए: एडिट-एंड-एग्जीक्यूट-कमांड (C-xC-e) - वर्तमान कमांड लाइन पर एडिटर को इनवाइट करें, और शेल कमांड के रूप में परिणाम निष्पादित करें। बैश उस क्रम में $ VISUAL, $ EDITOR, और संपादक के रूप में emacs का प्रयास करता है।
मैथ्यू

संपादक को खोले बिना, एक समाधान है।
cdosborn

तकनीकी रूप से इसकी बैश तक नहीं है - लेकिन "रीडलाइन" लाइब्रेरी के लिए जो बैश इनपुट प्राप्त करने के लिए उपयोग करती है।
क्रिश्चियन हरेंज

11

बहु-पंक्ति सही होने तक समाधान कभी दर्ज नहीं करना है, बस टाइप करें: CtrlvCtrlj जब आप अगली पंक्ति में जाना चाहते हैं। Metabएक शब्द वापस जाने के लिए।

समाधान

@ रिसी के जवाब का श्रेय


4

मजेदार रूप से पर्याप्त, Ctrl+Cवह है जो आप ढूंढ रहे हैं।

जब तुम पर हो

$ echo "foo bar
> baz
>

बस प्रेस Ctrl+C(संपादित कमांड लाइन निलंबित हो जाएगी) और प्रेस Up(पिछले-इतिहास)। आपका संकेत होगा: (अनुपस्थिति पर ध्यान दें)

$ echo "foo bar
baz

अब आप Left Rightलाइन जंप के माध्यम से भी घूम सकते हैं ।

केवल एक क्वर्की है, दूसरी पंक्ति को जोड़ने के लिए आपको अंतिम वर्ण पर होना चाहिए, इसलिए मौजूदा लाइनों को संपादित करने के लिए चारों ओर घूमें ( Ctrl+Aएक साथ शुरू करें ) एक प्रेस को दबाएं Enter यदि वह पर्याप्त है या गोटो एंड ( Ctrl+E) के साथ अधिक लाइनें जोड़ने के लिए Enter। एक और दोष यह है कि Ctrl+_(पूर्ववत) केवल पिछले से परिवर्तनों को पुनर्स्थापित करता हैCtrl+C


-2

आदेशों को कॉपी करें और उन्हें नोटपैड में पेस्ट करें फिर वहां से प्रारूपित करें। उसके बाद आप अपने कमांड को वापस टर्मिनल पर कॉपी कर सकते हैं।

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