मैं अपने क्लिपबोर्ड में एक कमांड के आउटपुट को कैसे पाइप कर सकता हूं और टर्मिनल का उपयोग करते समय इसे वापस पेस्ट कर सकता हूं? उदाहरण के लिए:
cat file | clipboard
apt install xclip
औरcat file | xclip -sel clip
मैं अपने क्लिपबोर्ड में एक कमांड के आउटपुट को कैसे पाइप कर सकता हूं और टर्मिनल का उपयोग करते समय इसे वापस पेस्ट कर सकता हूं? उदाहरण के लिए:
cat file | clipboard
apt install xclip
औरcat file | xclip -sel clip
जवाबों:
मैं हमेशा ऐसा करना चाहता था और इसे करने का एक अच्छा और आसान तरीका मिला। मैंने पूरी प्रक्रिया को सिर्फ इसलिए लिखा है जब किसी और को इसकी आवश्यकता हो।
सबसे पहले एक 16 kB प्रोग्राम स्थापित करें xclip
:
sudo apt-get install xclip
तब आप आउटपुट को xclip
क्लिपबोर्ड में कॉपी करने के लिए पाइप कर सकते हैं :
cat file | xclip
आपके द्वारा कॉपी किए गए पाठ को पेस्ट करने के लिए, आप उपयोग करेंगे:
xclip -o
जीवन को सरल बनाने के लिए, आप अपने .bashrc फ़ाइल में एक उपनाम सेट कर सकते हैं जैसा मैंने किया था:
alias "c=xclip"
alias "v=xclip -o"
यह कैसे उपयोगी है देखने के लिए, कल्पना मैं एक नया टर्मिनल विंडो में मेरे वर्तमान पथ खोलना चाहते हैं (वहाँ की तरह यह कर के अन्य तरीकों हो सकता है Ctrl+ Tकुछ सिस्टम पर है, लेकिन यह सिर्फ समझाने के उद्देश्य से है):
Terminal 1:
pwd | c
Terminal 2:
cd `v`
` `
चारों ओर ध्यान दें v
। यह v
पहले एक कमांड के रूप में निष्पादित होता है और फिर इसे cd
उपयोग करने के लिए इन-प्लेस पर प्रतिस्थापित करता है ।
केवल X
क्लिपबोर्ड पर सामग्री की प्रतिलिपि बनाएँ
cat file | xclip
यदि आप किसी X
एप्लिकेशन के अलावा कहीं और पेस्ट करना चाहते हैं , तो यह प्रयास करें:
cat file | xclip -selection clipboard
alias "cs=xclip -selection clipboard"
और alias "vs=xclip -o -selection clipboard"
सिस्टम क्लिपबोर्ड से नकल / चिपकाने को आसान बनाने के लिए
ओएस एक्स पर, उपयोग करें pbcopy
; pbpaste
विपरीत दिशा में जाता है।
pbcopy < .ssh/id_rsa.pub
pbcopy < git merge-base master some-branch
git merge-base master some-branch | pbcopy
मैंने Linux / OSX / Cygwin के लिए एक उपकरण बनाया है जो इन अन्यों के समान है लेकिन थोड़ा अनोखा है। मैं इसे फोन करता हूं cb
और यह इस गिथब गैस्ट में पाया जा सकता है ।
उस जिस्ट में मैं दिखाता हूं कि लिनक्स, मैकओएस और साइगविन का उपयोग करके कमांडलाइन के माध्यम से कॉपी और पेस्ट कैसे किया जाता है।
_copy(){
cat | xclip -selection clipboard
}
_paste(){
xclip -selection clipboard -o
}
_copy(){
cat | pbcopy
}
_paste(){
pbpaste
}
_copy(){
cat > /dev/clipboard
}
_paste(){
cat /dev/clipboard
}
नोट: मैं मूल रूप से बॉब Enohp के जवाब में अपनी टिप्पणी में इसका उल्लेख करना चाहता हूं । लेकिन तब मुझे महसूस हुआ कि मुझे अपने गेस में एक README जोड़ना चाहिए। चूंकि जिस्ट संपादक एक मार्कडाउन पूर्वावलोकन की पेशकश नहीं करता है, इसलिए मैंने उत्तर बॉक्स का उपयोग यहां किया था और कॉपी करने के बाद / इसे अपने जीआईएसटी पेस्ट करने के बाद सोचा, "मैं भी जवाब प्रस्तुत कर सकता हूं।"
इस स्क्रिप्ट को बाद में tee
देखा गया है (देखें man tee
)।
यह आपकी सामान्य कॉपी और पेस्ट कमांड की तरह है, लेकिन जब आप इसे चेनेबल बनाना चाहते हैं तो एकीकृत और समझ में आता है
$ date | cb
# clipboard contains: Tue Jan 24 23:00:00 EST 2017
# clipboard retained from the previous block
$ cb
Tue Jan 24 23:00:00 EST 2017
$ cb | cat
Tue Jan 24 23:00:00 EST 2017
$ cb > foo
$ cat foo
Tue Jan 24 23:00:00 EST 2017
$ date | cb | tee updates.log
Tue Jan 24 23:11:11 EST 2017
$ cat updates.log
Tue Jan 24 23:11:11 EST 2017
# clipboard contains: Tue Jan 24 23:11:11 EST 2017
(कालानुक्रमिक रूप से यह अंत में इसे प्रदर्शित करने के लिए समझ में आया)
# clipboard retained from the previous block
$ cb < foo
$ cb
Tue Jan 24 23:00:00 EST 2017
# note the minutes and seconds changed from 11 back to 00
मैंने यह छोटी सी स्क्रिप्ट लिखी थी जो कॉपी / पेस्ट कमांड से अनुमान लगाने का काम करती है।
स्क्रिप्ट का लिनक्स संस्करण आपके सिस्टम में पहले से इंस्टॉल किए जा रहे एक्लिप्स पर निर्भर करता है। स्क्रिप्ट को क्लिपबोर्ड कहा जाता है।
#!/bin/bash
# Linux version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard # Pipe someapp's output into clipboard
# clipboard | someapp # Pipe clipboard's content into someapp
#
if command -v xclip 1>/dev/null; then
if [[ -p /dev/stdin ]] ; then
# stdin is a pipe
# stdin -> clipboard
xclip -i -selection clipboard
else
# stdin is not a pipe
# clipboard -> stdout
xclip -o -selection clipboard
fi
else
echo "Remember to install xclip"
fi
स्क्रिप्ट का OS X संस्करण pbcopy और pbpaste पर निर्भर करता है जो सभी Mac पर पूर्वस्थापित हैं।
#!/bin/bash
# OS X version
# Use this script to pipe in/out of the clipboard
#
# Usage: someapp | clipboard # Pipe someapp's output into clipboard
# clipboard | someapp # Pipe clipboard's content into someapp
#
if [[ -p /dev/stdin ]] ; then
# stdin is a pipe
# stdin -> clipboard
pbcopy
else
# stdin is not a pipe
# clipboard -> stdout
pbpaste
fi
स्क्रिप्ट का उपयोग करना बहुत सरल है क्योंकि आप बस clipboard
इन दो उदाहरणों में दिखाए गए अनुसार पाइप को अंदर या बाहर करते हैं।
$ cat file | clipboard
$ clipboard | less
pbcopy
और pbpaste
लिनक्स पर इसलिए यह लिनक्स और ओएस एक्स दोनों के लिए काम करता है।
~/.scripts/clipboard
* यह निष्पादन योग्य बनाने chmod +x ~/.scripts/clipboard
* ऐड: बैश के लिए export PATH=$PATH:~/.scripts
के अंत तक ~/.bashrc
मछली के लिए: * ऐड set PATH ~/.scripts $PATH
करने के लिए ~/.config/fish/fish.config
फ़ाइल या फ़ोल्डर का किसी भी पहले से ही सिर्फ उन्हें बनाने के मौजूद नहीं हैं तो।
clipboard(){ ... }
और यह .bashrc में पेस्ट
date | cb | tee -a updates.log
। यह date
कमांड आउटपुट को क्लिपबोर्ड पर भेजता है और इसे tee -a
कमांड के पास भेजता है जो इसे एक फाइल में जोड़ देता है और इसे पास करता है stdout
। लेकिन यह " क्लिपबोर्ड पर लीक-प्रूफ टी " जैसा है क्योंकि अगर आप बस करते date | cb
हैं तो आपको कोई आउटपुट नहीं मिलता है। और अंत में यह cb > file.txt
gist.github.com/RichardBronosky/…
xclip -i -selection clipboard
को संशोधित करकेxargs echo -n | xclip -i -selection clipboard
इसे अपने में जोड़ें ~/.bashrc
:
# Now `cclip' copies and `clipp' pastes'
alias cclip='xclip -selection clipboard'
alias clipp='xclip -selection clipboard -o'
अब क्लिप पी पेस्ट और सी क्लिप कॉपी - लेकिन आप भी कर सकते हैं fancier सामान:
clipp | sed 's/^/ /' | cclip
↑ आपके क्लिपबोर्ड को इंडेंट करता है; ढेर अतिप्रवाह के { }बटन के बिना साइटों के लिए अच्छा है
आप इसे चलाकर इसे जोड़ सकते हैं:
printf "\nalias clipp=\'xclip -selection c -o\'\n" >> ~/.bashrc
printf "\nalias cclip=\'xclip -selection c -i\'\n" >> ~/.bashrc
मैं अपने क्लिपबोर्ड प्रबंधक xsel
से पार्सिटरी का उपयोग कर रहा हूं और अंतिम प्रतिबद्ध संदेश को कॉपी करने के git
लिए (किसी कारण से xclip
काम नहीं करता है):
$ git log -1 --pretty=%B | xsel -i -b
बाहरी उपकरणों का उपयोग किए बिना, यदि आप सर्वर दृश्य SSH से जुड़ रहे हैं, तो यह अपेक्षाकृत आसान कमांड है:
विंडोज 7 + कमांड प्रॉम्प्ट से:
ssh user@server cat /etc/passwd | clip
यह रिमोट फ़ाइल की सामग्री को आपके स्थानीय क्लिपबोर्ड में डाल देगा।
(कमांड को कुंजी के लिए पेजेंट चलाने की आवश्यकता होती है, या यह आपसे पासवर्ड मांगेगा।)
मैंने एक छोटा सा उपकरण बनाया जो समान कार्यक्षमता प्रदान करता है, बिना xclip या xsel का उपयोग किए। stdout
को क्लिपबोर्ड पर कॉपी किया जाता है और फिर से टर्मिनल में चिपकाया जा सकता है। देख:
https://sourceforge.net/projects/commandlinecopypaste/
ध्यान दें, कि इस टूल को X-session की आवश्यकता नहीं है। क्लिपबोर्ड को बस टर्मिनल के भीतर इस्तेमाल किया जा सकता है और Ctrl+Vअन्य एक्स-विंडो में मध्य-माउस-क्लिक द्वारा चिपकाया नहीं जा सकता है ।
पिछली पोस्टों के आधार पर, मैं निम्नलिखित लाइट-वेट उर्फ समाधान के साथ समाप्त हुआ, जिसे इसमें जोड़ा जा सकता है .bashrc
:
if [ -n "$(type -P xclip)" ]
then
alias xclip='xclip -selection clipboard'
alias clipboard='if [ -p /dev/stdin ]; then xclip -in; fi; xclip -out'
fi
उदाहरण:
# Copy
$ date | clipboard
Sat Dec 29 14:12:57 PST 2018
# Paste
$ date
Sat Dec 29 14:12:57 PST 2018
# Chain
$ date | clipboard | wc
1 6 29
मैं एक छीन नीचे केडीई पृष्ठभूमि से आते हैं और करने के लिए पहुँच नहीं है xclip
, xsel
या अन्य फैंसी सामान। मेरे पास मामलों को बदतर बनाने के लिए एक TCSH Konsole है।
आवश्यक वस्तुएँ: qdbus
klipper
xargs
bash
एक बैश निष्पादन योग्य बनाएँ foo.sh
।
#!/bin/bash
qdbus org.kde.klipper /klipper setClipboardContents "$1" > /dev/null
ध्यान दें: यह bash होने की जरूरत है क्योंकि TCSH मल्टी-लाइन तर्कों का समर्थन नहीं करता है।
एक TCSH उर्फ द्वारा पीछा किया .cshrc
।
alias clipboard xargs -0 /path/to/foo
स्पष्टीकरण:
xargs -0
पाइप एक ही तर्क में अटक जाते हैं। इस तर्क को bash निष्पादन योग्य के लिए दिया जाता है जो "क्लिपबोर्ड पर प्रतिलिपि" का klipper
उपयोग करने के लिए अनुरोध भेजता है qdbus
। करने के लिए पाइप /dev/null
न्यू लाइन चरित्र द्वारा दिया मुद्रित नहीं है qdbus
कंसोल के लिए।
उदाहरण उपयोग:
ls | clipboard
यह वर्तमान फ़ोल्डर की सामग्री को क्लिपबोर्ड में कॉपी करता है।
नोट: केवल एक पाइप के रूप में काम करता है। यदि आपको किसी तर्क की प्रतिलिपि बनाने की आवश्यकता है, तो सीधे निष्पादन योग्य बैश का उपयोग करें ।
वायलैंड xcopy पर काम करने के लिए प्रतीत नहीं होता है, इसके बजाय wl-क्लिपबोर्ड का उपयोग करें। जैसे फ़ेडोरा पर
sudo dnf install wl-clipboard
tree | wl-copy
wl-paste > file
अपने विंडोज़ सिस्टम पर इंस्टॉल किए गए बैश का उपयोग करने वालों के लिए (लिनक्स (डब्लूएसएल) के लिए विंडोज सबसिस्टम के रूप में जाना जाता है), प्रयास करके एक्लिप्स एक त्रुटि देगा:
Error: Can't open display: (null)
इसके बजाय, याद रखें कि लिनक्स सबसिस्टम का उपयोग विंडोज़ के निष्पादन योग्य तक है। यह क्लिप की तरह उपयोग करना संभव है
echo hello | clip.exe
जो आपको पेस्ट कमांड (ctrl-v) का उपयोग करने की अनुमति देता है।
बस एक किनारे मामले को कवर करने के लिए :) और क्योंकि सवाल शीर्षक पूछता है (कम से कम अब) कैसे एक कमांड के आउटपुट को सीधे क्लिपबोर्ड पर कॉपी किया जाए।
पहले से ही कई बार मुझे कमांड के आउटपुट को कॉपी करने के लिए उपयोगी लगता है क्योंकि इसे पहले ही निष्पादित किया गया था और मैं फिर से कमांड निष्पादित नहीं करना चाहता या नहीं कर सकता।
इस परिदृश्य के लिए, हम या तो gdm या समान माउस उपयोगिता का उपयोग कर सकते हैं और माउस का उपयोग कर सकते हैं। apt-get install gdm
और फिर या तो राइट क्लिक करें या टर्मिनल में कॉपी और पेस्ट के लिए Cntrl + Shift + c और Cntrl + Shift + v संयोजन
या, जो मेरे लिए पसंदीदा तरीका है (चूंकि माउस एक फलक के अंदर ठीक से चयन नहीं कर सकता है जब आपके पास एक से अधिक पैन हैं और आपको एक से अधिक लाइन चुनने की आवश्यकता है), tmux का उपयोग करके हम मानक का उपयोग करके tmux बफर में कॉपी कर सकते हैं [, स्थान, चयन करने के लिए कदम, दर्ज करें या आप कोड के एक ब्लॉक का चयन कर सकते हैं। यह भी विशेष रूप से तब उपयोगी है जब आप tmux जैसे cli मल्टीप्लेक्सर की गलियों में से एक के अंदर हों और आपको पाठ का एक गुच्छा चुनने की आवश्यकता हो, लेकिन पंक्ति संख्याएँ नहीं (मेरा vim सेटअप रेंडर लाइन संख्याएँ)
इसके बाद आप कमांड का उपयोग कर सकते हैं:
tmux save- बफर - | xclip- आई
आप निश्चित रूप से इसे पसंद करते हैं या tmux कॉन्फ़िगरेशन फ़ाइल में सीधे बाँध सकते हैं
यह केवल आपको इस किनारे के मामले को कवर करने के लिए एक वैचारिक जवाब देने के लिए है जब आदेश को फिर से निष्पादित करना संभव नहीं है। यदि आपको अधिक विशिष्ट कोड उदाहरणों की आवश्यकता है, तो मुझे बताएं
चियर्स