2008-09-26 15 views
10

ठीक है, मुझे यकीन है कि यह आसान है लेकिन यह मुझे पागल कर रहा है। मैं हाल ही में एक कार्यक्रम पर काम करने गया था जहां मुझे थोड़ी देर में वापस कदम उठाना पड़ा और रेडहाट 9 का उपयोग करना पड़ा। जब मैं मानक एक्सटेर से कॉर्नशेल (केएसएच) चलाने वाली कमांड लाइन पर टाइप कर रहा हूं, और मैं अंत के अंत तक पहुंच गया एक नई लाइन के चारों ओर पाठ लपेटने के बजाय स्क्रीन को दाईं ओर स्लाइड करें (मेरे आदेश के बाईं ओर काटकर)। यह मेरे लिए चीजों को मुश्किल बनाता है क्योंकि मैं सीधे कमांड लाइन से पिछली कमांड से कॉपी और पेस्ट नहीं कर सकता। मुझे इतिहास देखना है और वहां से आदेश पेस्ट करना है। यदि आप सोच रहे हैं, तो मैं बहुत कमांड-लाइन अजीब स्क्रिप्ट करता हूं जो लाइन को काफी लंबा होने का कारण बनती हैं।कॉर्नशेल (केश) रैपरराउंड

क्या मैं टाइपिंग कमांड के दाईं ओर दृश्यता को स्थानांतरित करने के बजाय कमांड लाइन को लपेटने का कोई तरीका है?

मैंने भाग्य के बिना मैन पेज विकल्पों के माध्यम से डाला है।

मैं चल रहा हूँ:

  • XFree86 4.2.99.903 (174)
  • KSH 5.2.14।

धन्यवाद।

+0

कृपया हमें बताएं कि क्या आपको वह जवाब मिला है जो आपको चाहिए था। – tzot

उत्तर

2

यदि संभव हो, \ जोड़कर कई पंक्तियों को आदेश नीचे तोड़ने की कोशिश अर्थात्:

 
$ mycommand -a foo \ 
    -f bar \ 
    -c dif 
0

मैं रैप करने के लिए मजबूर कर रहा खोल का एक तरीका के बारे में पता नहीं है, लेकिन मैं तुम्हें क्यों पूछना होगा लंबे समय तक लाइनें लिख रहे हैं। अजीब स्क्रिप्ट के साथ, मैं बस स्क्रिप्ट को सिंगल कोट्स में लपेटता हूं, और फिर लाइनों को तोड़ देता हूं जहां मैं चाहता हूं। यदि आपको स्क्रिप्ट में सिंगल कोट्स की आवश्यकता होती है तो यह केवल मुश्किल हो जाता है - और यदि आपको सिंगल और डबल कोट्स दोनों की आवश्यकता होती है तो डायबोलिकल। असल में, नियम काफी सरल है: संपूर्ण स्क्रिप्ट को लपेटने के लिए सिंगल कोट्स का उपयोग करें, और जब आप स्क्रिप्ट में एक ही उद्धरण चाहते हैं, तो '\'' लिखें। पहला उद्धरण पिछले एकल-उद्धृत स्ट्रिंग को समाप्त करता है; बैकस्लैश-सिंगल कोट एक सिंगल कोट उत्पन्न करता है; और अंतिम एकल उद्धरण एक नई एकल उद्धृत स्ट्रिंग शुरू करता है। अगर आपको उन पात्रों को एक eval या कुछ समान के लिए भागने की जरूरत है तो यह वास्तव में बालों वाली हो जाता है।

दूसरा सवाल यह है कि - एक संपादक में क्यों लॉन्च नहीं किया जाता है। चूंकि मैं एक मरने वाला कठिन अखरोट हूं (ठीक है - मैं 20 से अधिक वर्षों से वीआई का उपयोग कर रहा हूं, इसलिए विकल्पों के मुकाबले मेरे लिए यह आसान है), मेरे पास कॉर्न शेल सेट vi मोड (सेट-वी vi) है, और जो भी मैंने टाइप किया है उस पर संपादक को लॉन्च करने के लिए एस्केप-वी कर सकते हैं।

6

क्या आपने man ksh किया था?

आप set -o multiline करना चाहते हैं। man ksh से

अंश:

बहु:

निर्मित संपादकों लाइनों है कि स्क्रीन की चौड़ाई अधिक अवधि की हों स्क्रीन पर कई पंक्तियों का प्रयोग करेंगे। यह सभी टर्मिनलों के लिए काम नहीं कर सकता है।

+0

पुटी के लिए काम करता है - और यह मुझे मानसिक चला रहा था! – Anonymouslemming

0

यह एक व्यावहारिक जवाब की तरह है, लेकिन जब वह मेरे लिए एक मुद्दा है मैं आमतौर पर की तरह कुछ कार्य करें:

strings ~/.history | grep COMMAND 

या

strings ~/.history | tail 

(इतिहास फ़ाइल एक है इसमें बाइनरी डेटा का थोड़ा सा, इसलिए 'तार')

4

eval $ (आकार बदलें) मुझे करना चाहिए टी।

+0

ऐसा लगता है कि जब भी आप टर्मिनल विंडो आकार (पुटी) बदलते हैं तो यह चलाना आवश्यक है। क्या ऐसा करने का कोई गतिशील तरीका है? – Kit

0

सरल जवाब है:

$ set -o multiline 

ksh 5.12 से पहले, ksh NetBSD 6.1 के साथ भेज दिया की तरह, इस विकल्प भी नहीं है।

$ set +o emacs 

यह पूरी तरह featuers का एक बहुत बंद हो जाती है, टैब-पूरा होने या 'ऊपर-तीर' कुंजी के उपयोग के रोल करने की तरह: आप वर्तमान इंटरएक्टिव इनपुट लाइन संपादन मोड, है जो आम तौर पर emacs बंद करने के लिए होगा पिछले आदेश वापस।

यदि आप किसी भी तरह emacs मोड में उपयोग करने का निर्णय लेते हैं, तो याद रखें^लाइन की शुरुआत ("होम" कुंजी काम नहीं करेगा) और^ई अंत तक जाती है।