कैसे << << 'EOF' क्लिपबोर्ड से मनमाना पाठ डेटा


3

मैं कुछ पाठ को एक टर्मिनल में पेस्ट करना चाहता हूं और एक संपादक का उपयोग किए बिना इसे एक फ़ाइल में सहेजना चाहता हूं, लेकिन सिर्फ 'बिल्ली'।
लेकिन पाठ में बहुत लंबी लाइनें या टैब "बिल्ली> test.txt" या "cat << 'EOF'> test.txt" ("यहां दस्तावेज़") जैसे सरल आदेश के साथ ऐसा करना असंभव बनाते हैं।

"यहाँ दस्तावेज़" मोड में बैश में यदि पेस्ट किए गए पाठ डेटा में टैब होते हैं, तो वे स्वतः पूर्ण होते हैं।
यदि मैं '--noediting' के साथ बैश करना शुरू करता हूं, तो कुछ प्रणालियों पर चिपकाई गई रेखा की लंबाई 256 वर्णों तक सीमित होती है, बाकी चिपके हुए पाठ को छोड़ दिया जाता है।
अगर इसके बजाय मैं बिल्ली के इनपुट (बिना << 'EOF') के सीधे पेस्ट करता हूं, तो अधिकतम लाइन 256 भी है।

यदि मैं करता हूँ:

stty raw; cat >test.txt; stty sane

लाइन की लंबाई अब सीमित नहीं है, लेकिन बिल्ली के इनपुट के लिए ईओएफ भेजने का कोई तरीका नहीं है।
अगर मैं ईओएफ चार को सक्षम करता हूं:

stty raw icanon eof '^d'; cat >test.txt; stty sane

लंबी लाइनें खो जाती हैं।

इसके अलावा, अगर मैं इको को अक्षम नहीं करता हूं:

stty -echo

सोलारिस 10 और पुट्टी के संयोजन के कारण पाठ के बड़े ब्लॉक ~ 1500chars खो जाते हैं, कभी-कभी एक खाली फ़ाइल होती है।

सबसे करीबी मैं जो चाहता हूं, वह समय के साथ बिल्ली को मारना है:

( sleep 15; pkill cat ) & stty raw -echo; cat >test.txt; stty sane; echo done

या बश का उपयोग करने के लिए - कच्चे के साथ कटाई:

bash --noediting
stty raw -echo icrnl
cat <<'EOF' >test.txt; stty sane

3
क्या आप कृपया अपना प्रश्न अधिक स्पष्ट रूप से कह सकते हैं और आप क्या करने जा रहे हैं?
सिपाहीराड सालौर

1
कृपया नीचे न करें। यदि आप प्रश्न को नहीं समझते हैं, तो इसका मतलब है कि आप विशेषज्ञ नहीं हैं। आपका नकारात्मक वोट ऐसे लोगों को पीछे कर देता है जो जवाब दे सकते थे।
बेसिन

मैं आपकी प्रतिष्ठा को कम नहीं कर सकता, लेकिन कृपया अपना प्रश्न स्पष्ट रूप से कहें और अपनी पोस्ट को संपादित करें, धन्यवाद
सिपाहीरड सालौर

1
मुझे अभी भी यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं। मुझे लगता है कि आप अपने एक्स क्लिपबोर्ड से एक संपादक को खोलने के बिना एक फ़ाइल में पेस्ट करने की कोशिश कर रहे हैं। इसके अलावा, मुझे यकीन नहीं है कि आप एक स्क्रिप्ट योग्य या इंटरैक्टिव समाधान की तलाश कर रहे हैं। ऐसी अस्पष्ट बातें संभवतः आपके पतन का कारण हैं। मुझे लगता है कि आपके प्रश्न को समझने के बाद मुझे इस प्रश्न पर लाया है । हो सकता xclip -o > test.txtहै कि आपके लिए यह ट्रिक हो।
टिम

@ मैं सिटीजन एक्सपीरिएंस सर्वर पर विंडोज सत्र से पुट्टी के साथ सोलारिस से जुड़ रहा हूं, जिसमें मैं विंडोज 7 से एक्सपीएनए क्लाइंट के साथ जुड़ रहा हूं। मैं फ़ाइलों की प्रतिलिपि नहीं बना सकता, मेरे पास क्लिपबोर्ड है।
बेसिन

जवाबों:


1

यदि आप बैश का उपयोग कर रहे हैं, तो आप पेस्ट करने से पहले टैब-पूर्णता को अक्षम कर सकते हैं, फिर बाद में इसे bindकमांड का उपयोग करके पुन: प्रयोज्य करें

bind '\C-i:self-insert'
# paste away
bind '\C-i:complete'

यह अलौकिक है, लेकिन यह काम करता है।

मैन्युअल रूप से bash कमांड-लाइन पर टाइप करने पर आप पहले CTRL-V और फिर टैब दबाकर शाब्दिक टैब दर्ज कर सकते हैं। स्पष्ट रूप से आप ऐसा नहीं कर सकते हैं जब चिपकाने के लिए और मैं इस बात से काफी नाराज था कि मैंने अपने पसंदीदा टर्मिनल प्रोग्राम iTerm2 को "पेस्ट स्पेशल" कमांड के साथ पैच किया था जो CTRL-V, टैब अनुक्रम के माध्यम से शाब्दिक टैब भेजता है।

मैंने केवल आज रात ही इस पैच को लिखा और जमा किया है, इसलिए यदि आप iTerm2 का एक संस्करण चाहते हैं जो ऐसा करता है तो आपको Xcode का उपयोग करके GitHub में अपने कांटे से अपना संकलन करना होगा । उम्मीद है कि यह मुख्य एप्लिकेशन में विलीन हो जाएगा, अगर ऐसा होता है तो मैं इस उत्तर को अपडेट करूंगा। संपादित करें: मेरे द्वारा किए गए परिवर्तन अब iTerm2 की मुख्य शाखा में हैं। Edit -> Paste with Literal Tabs कमांड का उपयोग करें।

यदि आप किसी भिन्न OS या टर्मिनल प्रोग्राम का उपयोग कर रहे हैं, तो मैं उसके साथ मदद नहीं कर सकता।

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