मैं कुछ पाठ को एक टर्मिनल में पेस्ट करना चाहता हूं और एक संपादक का उपयोग किए बिना इसे एक फ़ाइल में सहेजना चाहता हूं, लेकिन सिर्फ 'बिल्ली'।
लेकिन पाठ में बहुत लंबी लाइनें या टैब "बिल्ली> 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
xclip -o > test.txt
है कि आपके लिए यह ट्रिक हो।