बैश टर्मिनल में इनपुट / नई लाइन कैसे शुरू करें?


11

मैंने देखा कि लूप्स के लिए कुछ सैंपल बैश उदाहरणों में कई लाइनों में फैले हुए हैं

for VARIABLE in file1 file2 file3
do
    command1 on $VARIABLE
    command2
    commandN
done

(जैसे यहाँ http://www.cyberciti.biz/faq/bash-for-loop/ ) मैं बैश टर्मिनल में एक नई पंक्ति कैसे दर्ज करूँ (मैं पोटीन का उपयोग करता हूँ)? जब मैं एक पंक्ति के अंत में एंटर दबाता हूं तो सिस्टम इसे निष्पादित करता है।


1
इसके अलावा, bashआप Ctrl + x + eएक संपादक में कमांड प्रॉम्प्ट की सामग्री को खोलने के लिए कीबोर्ड संयोजन का उपयोग कर सकते हैं जैसे कि विम जहां आप इस पर और अधिक आसानी से काम कर सकते हैं, जब आप काम कर लेते हैं तो आप संपादक से बाहर निकल सकते हैं और कमांड चलेगा।
SLM

संबंधित जवाब: unix.stackexchange.com/questions/232912/...
Kusalananda

जवाबों:


28

जब आप Enterके अंत में दबाते हैं:

for VARIABLE in file1 file2 file3

शेल कुछ भी निष्पादित नहीं कर सकता है क्योंकि forलूप समाप्त नहीं हुआ है। इसलिए इसके बजाय, यह एक अलग प्रॉम्प्ट, $PS2प्रॉम्प्ट (आम तौर पर >) को प्रिंट करेगा , जब तक कि आप समापन में प्रवेश नहीं करते done

हालाँकि, >प्रदर्शित होने के बाद , आप पहली पंक्ति को संपादित करने के लिए वापस नहीं जा सकते।

वैकल्पिक रूप से, टाइप करने के बजाय Enter, आप टाइप कर सकते हैं Ctrl-VCtrl-J। इस तरह, नई ^Jबफर चरित्र (उर्फ ) को वर्तमान बफर के बिना स्वीकार किए बिना दर्ज किया जाता है , और फिर आप उस पर पहली पंक्ति को संपादित करने के लिए वापस जा सकते हैं।

में zsh, आप भी दबा सकते हैं Alt-Enterया EscEnterमौजूदा बफर स्वीकार किए बगैर एक नई पंक्ति चरित्र डालने के लिए। समान व्यवहार प्राप्त करने के लिए bash, आप इसे अपने साथ जोड़ सकते हैं ~/.inputrc:

"\e\C-m": "\026\n"

( चरित्र \026होने के नाते ^V)।


Ctrl-Jशुरू करना, और Ctrl-Dखत्म करना, मेरे लिए अच्छा काम करना।
डकमास्ट्रो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.