TTY में कमांड कैसे पेस्ट करें?


20

मेरे पास कुछ नहीं बल्कि लंबे समय के कमांड और फाइल पथ हैं, जिन्हें मैंने क्लिपबोर्ड पर कॉपी किया है और एक TTY में निष्पादित करने की आवश्यकता है, हालांकि फ़ाइल पथ बहुत लंबे समय से पूर्वधारणा करने के लिए हैं और मैं उन्हें बस में पेस्ट करना चाहूंगा $(इससे पहले कि मैं आदेशों को फिर से लिख सकूं उनके बाद), क्या ऐसा करने का कोई तरीका है?

इसलिए मैं एक कमांड निष्पादित करना चाहता हूं और इसे अगली पंक्ति पर शुरू करना चाहता हूं $ताकि क्लिपबोर्ड पर कॉपी किए गए पाठ को इस तरह से रखा जाए:

$ specialCommandToPasteText
$ pastedText

मैं गनोम 3.20 के साथ उबंटू GNOME 16.04 चला रहा हूं।


3
टेक्स्ट एडिटर में कमांड को बैश स्क्रिप्ट में पेस्ट करें, फिर TTY से स्क्रिप्ट निष्पादित करें?
निक वेनबर्ग

@NickWeinberg: वास्तव में एक विकल्प नहीं है, यह सब CLI में है और मेरे द्वारा चलाए जा रहे कार्यक्रमों में केवल कॉपी की क्षमता है।

2
आप किस प्रोग्राम (प्रोग्राम्स) से उन्हें कॉपी कर रहे हैं?
निक वेनबर्ग

क्या आप gpmवीटी में माउस का समर्थन प्रदान करने के लिए उपयोग कर रहे हैं , जैसा कि पिछले प्रश्न के अपने उत्तर में सुझाया गया है ?
स्टीलड्राइवर

1
एक संभावित समाधान tmux या स्क्रीन
निक वेनबर्ग

जवाबों:


28

यह सरल है, लेकिन आपको एक अतिरिक्त टूल की आवश्यकता है।

  1. पैकेज को स्थापित करें xselजो क्लिपबोर्ड तक पहुंचने के लिए एक आसान कमांड प्रदान करता है:

    sudo apt-get install xsel
    
  2. जानें कि $DISPLAYआपका डेस्कटॉप कौन सा उपयोग कर रहा है। आमतौर पर यह होना चाहिए :0, लेकिन आप अपने GUI डेस्कटॉप पर एक टर्मिनल एमुलेटर में इस कमांड को चलाकर इसकी जांच कर सकते हैं:

    echo $DISPLAY
    

    मैं मान लूंगा :0कि यदि यह अलग है , तो आउटपुट को अपने वास्तविक आउटपुट के साथ निम्न कमांड में बदल दें।

  3. TTY, जैसे कि Ctrl+ का उपयोग करके आप जिस कमांड को निष्पादित करना चाहते हैं, उसे कॉपी करें C

  4. TTY आप उपयोग करना चाहते हैं, जैसे TTY1 करने के लिए उपयोग करने के लिए स्विच Ctrl+ Alt+ F1
    अपना उपयोगकर्ता नाम और पासवर्ड टाइप करके प्रवेश करें।

  5. वह पूर्ण कमांड दर्ज करें जिसे आप चलाना चाहते हैं, लेकिन उस भाग को बदलें जिसे आप क्लिपबोर्ड से सम्मिलित करना चाहते हैं $(DISPLAY=:0 xsel -ob)

    उदाहरण के लिए यदि आपने स्थापित करने के लिए संकुल की एक बड़ी सूची की प्रतिलिपि बनाई है, तो आप इसे TTY में टाइप कर सकते हैं:

    sudo apt-get update && sudo apt-get install $(DISPLAY=:0 xsel -ob)
    

    क्लिपबोर्ड स्निपेट आवश्यक रूप से आपके कमांड के अंत में नहीं है, हालांकि, यह कहीं भी दिखाई दे सकता है।


चीजों को और सरल बनाने के लिए, आइए इसे अभी भी DISPLAY=:0 xsel -obएक स्क्रिप्ट के लिए थोड़ा जटिल बनाएं। मैं इसे नाम दूंगा PASTE(क्योंकि pasteपहले से ही लिया गया है), लेकिन आप इसे अलग तरह से भी कह सकते हैं।

स्क्रिप्ट फ़ाइल को ऐसे स्थान पर बनाने के लिए जहां हर उपयोगकर्ता इसे पूरा पथ निर्दिष्ट करने के लिए चला सकता है (मैं इसके लिए सलाह /usr/local/binदेता हूं ) और इसे निष्पादन योग्य बनाने के लिए, बस उन दो आदेशों को चलाएं:

( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | sudo tee /usr/local/bin/PASTE
sudo chmod +x /usr/local/bin/PASTE

अब आप बस $(PASTE)अपने डेस्कटॉप से ​​क्लिपबोर्ड सामग्री सम्मिलित करने के लिए TTY पर अपने आदेशों में एम्बेड कर सकते हैं ।


2
धन्यवाद! इससे मुझे बहुत अधिक चीजों के साथ मदद मिलेगी जो मैंने मूल रूप से पूछी थी! :)

1
आप DISPLAY=:0 xsel -obबैश उर्फ ​​या छोटी स्क्रिप्ट को कहीं भी स्टोर कर सकते हैं (इसे नाम दें PASTE) और केवल एक संक्षिप्त रूप $(PASTE)का उपयोग करें जैसे कि आपके कमांड में क्लिपबोर्ड सामग्री का उपयोग करना ।
बाइट कमांडर

बहुत अच्छा दृष्टिकोण
सर्गी कोलोडियाज़नी

21

व्यक्तिगत रूप से, मैं केवल पाठ फ़ाइलों का उपयोग करता हूं:

  1. अपने डेस्कटॉप वातावरण में, एक टर्मिनल खोलें और

    echo "whatever long text you have copied" > file
    
  2. ट्टी को ड्रॉप करें और

    $(cat file)
    

2
यह जानकर अच्छा लगता है। मैंने वास्तव में नहीं सोचा था कि इस तरह के रूप में एक साधारण आदेश इतनी अच्छी तरह से काम करेगा। कभी-कभी मन बहुत जटिल लगता है। धन्यवाद! =)
टेरेंस

1
मैं सिर्फ some-command 'Shift + Insert (पेस्ट करने के लिए) का उपयोग करता हूं । 'वापसी। सिंगल या डबल कोट्स के अंदर चिपकाने से पहले किसी भी समस्या को ठीक करने के लिए उसे संपादित करने से पहले कमांड को चलाने से चिपकाने वाले टेक्स्ट में नईलाइन्स को रोकता है। IDK यह आपको एक फाइल में पाठ डालने के लिए क्या लाभ देता है। बैश में बहुत शक्तिशाली लाइन-एडिटिंग कीस्ट्रोक्स होते हैं, जैसे शब्दों के द्वारा स्थानांतरित करने के लिए ctrl-left या ctrl-right तीर। पीछे के शब्दों को हटाने के लिए ऑल-बैकस्पेस। ऑल्ट-डी आगे के शब्दों, आदि को हटाने के लिए
पीटर कॉर्ड्स

ओह, मुझे अभी पता चला है कि ओपी का मतलब एक टेक्स्ट कंसोल वीटी है जब वह TTY कहता है। किसी को वास्तव में प्रश्न को संपादित करना चाहिए, क्योंकि प्रत्येक टर्मिनल जिस पर आप एक शेल चला सकते हैं, एक ट्टी है, जिसमें xterm जैसे कार्यक्रमों द्वारा नियंत्रित छद्म-टर्मिनल शामिल हैं।
पीटर कॉर्ड्स

@PeterCordes हाँ, लेकिन शब्द "ट्टी" अक्सर होता है, अगर गलत तरीके से, वर्चुअल कंसोल को संदर्भित करने के लिए उपयोग किया जाता है।
टेर्डन

4

कमांड मोड में vimचिपकाने और चलाने के उपयोग में ऊपर सूचीबद्ध नहीं किया गया एक और संभावित समाधान :!unix_command:

  1. क्लिपबोर्ड पर कमांड और पथ को कॉपी करें
  2. खोलें vim, कमांड मोड पर जाएं Esc, प्रॉम्प्ट दर्ज करें:
  3. एक धमाके को टाइप करें ! और फिर Ctrl+ Shift+ Vकमांड जिसे आपने पहले प्रॉम्प्ट में कॉपी किया था और निष्पादित करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.