बैश स्क्रिप्ट में क्लिपबोर्ड से / के लिए पाइप


945

क्या बैश में क्लिपबोर्ड से / के लिए पाइप करना संभव है?

चाहे वह डिवाइस के हैंडल से / सहायक अनुप्रयोग का उपयोग कर रहा हो, मुझे कुछ भी नहीं मिल रहा है।

उदाहरण के लिए, यदि /dev/clipहम क्लिपबोर्ड से जुड़ने वाला एक उपकरण था जो हम कर सकते थे:

cat /dev/clip        # Dump the contents of the clipboard
cat foo > /dev/clip  # Dump the contents of "foo" into the clipboard

3
मैं :%y+विम का उपयोग कर रहा हूं , जो कि "+" रजिस्टर (एक्स PRIMARYक्लिपबोर्ड) में सभी पंक्तियों के लिए "यंक (कॉपी)" के लिए विम-स्पीक है । %यदि आप विशिष्ट होना चाहते हैं तो आप एक सीमा से बदल सकते हैं। लेकिन तीन कैविएट हैं: 1. अब, आपको कॉपी करने से पहले किसी भी टेक्स्ट को फाइल में सेव करना होगा। यह xclipउत्तर में उल्लिखित कमांड के विपरीत है। 2. यदि आप पहले से ही नहीं जानते कि कैसे विम करना है, तो यह थकाऊ हो सकता है। 3. आप केवल ऐसा कर सकते हैं यदि विम को संकलित करते समय एक निश्चित सुविधा सक्षम हो। यदि आप GVim स्थापित करते हैं, तो इसे GUI और टर्मिनल उदाहरण दोनों में डिफ़ॉल्ट रूप से सक्षम किया जाना चाहिए।
ब्रैडेन बेस्ट

1
@BradenBest आपको उत्तर के रूप में इसे रखना चाहिए। मैं NIX वातावरण में हूं और इंस्टॉल करने में असमर्थ था xclip। आपके उत्तर ने एक आकर्षण की तरह काम किया।
हांकाका

@ हंसका ठीक है, मैंने एक जवाब पोस्ट किया । मुझे बताओ तुम क्या सोचते हो।
ब्रैडेन बेस्ट

@ ब्रैडेनबेस्ट इसका बहुत व्यापक उत्तर है। मुझे सिर्फ :%y+एक ही पसंद है लेकिन ठीक है, आपने सभी आधारों को कवर कर लिया है! अच्छा था।
हैन्का

एक अन्य विकल्प: थोड़ा पर्ल स्क्रिप्ट का उपयोग करना: किसी भी स्थापना की आवश्यकता नहीं है। देखें नीचे मेरा उत्तर
वॉन सीपीसी

जवाबों:


861

वहाँ क्लिपबोर्ड का एक धन है जिसके साथ आप निपट सकते हैं। मुझे उम्मीद है कि आप शायद एक लिनक्स उपयोगकर्ता हैं जो एक्स विंडोज प्राथमिक क्लिपबोर्ड में सामान डालना चाहते हैं। आमतौर पर, आप जिस क्लिपबोर्ड पर बात करना चाहते हैं, उसकी एक उपयोगिता होती है जिससे आप उससे बात कर सकते हैं।

X के मामले में, वहाँ xclip(और अन्य) हैं। xclip -selection cक्लिपबोर्ड कि साथ काम करता है को डेटा भेजेंगे Ctrl + C, Ctrl + Vसबसे अनुप्रयोगों में।

यदि आप Mac OS X पर हैं, तो वहाँ हैं pbcopy

यदि आप लिनक्स टर्मिनल मोड (कोई एक्स) में हैं तो स्क्रीनgpm या स्क्रीन पर देखें जिसमें क्लिपबोर्ड है। screenआदेश का प्रयास करें readreg

विंडोज 10+ या साइबरविन के तहत, का उपयोग करें /dev/clipboardया clip



24
विंडोज पर, /dev/clipboardभी Msys / MinGW बैश के गोले के लिए काम करता है
मिहाई Rotaru

71
ध्यान दें कि xclip -selection cक्लिपबोर्ड पर डेटा भेजेगा जो ^ C, ^ V के साथ सबसे अधिक अनुप्रयोगों में काम करता है
Klaas van Schelven

31
नए विंडोज़ संस्करणों पर आप बस clipइस तरह का उपयोग कर सकते हैं :dir | clip
मैप

11
यह दुखद है कि GNU / Linux के पास ऐसा कोई उपकरण नहीं है /dev/clipboard, और बलपूर्वक या तो gpm को स्थापित करने के लिए मजबूर करता है जो कम से कम कुबंटु में डिफ़ॉल्ट रूप से गायब है (मुझे सबसे अधिक अन्य विकृतियों में भी लगता है)
Hi-Angel

282

सुनिश्चित करें कि आप उपयोग कर रहे हैं alias xclip="xclip -selection c" अन्यथा आप इसे अलग स्थान पर वापस पेस्ट करने के लिए Ctrl+ vका उपयोग नहीं कर सकते ।

echo test | xclip    

Ctrl+v === test


1
कोई उस कमांड तर्क के बिना इसे चिपकाने के बारे में कैसे जाएगा ?
योना

15
xclip -selection clipboard -o
डग

32
चूँकि मैं ऑक्स और लिनक्स के बीच आगे और पीछे जाता हूं, मेरे पास अपने डॉटफाइल्स में निम्नलिखित हैं। alias pbcopy="xclip -selection c" alias pbpaste="xclip -selection clipboard -o" उम्मीद है की वो मदद करदे।
डग

15
@ApockofFork, xclipनहीं है, एक नई पंक्ति जोड़ने echoहै। कोशिश करो printf test | xclip -i -selection clipboard। ( printfजब तक आप नहीं लिखते तब तक एक नई पंक्ति नहीं जोड़ते हैं 'test\n'।)
डेविड एक्स

7
या के echo -nबजाय का उपयोग करें printf
क्रिश्चियन पिसेट

182

इंस्टॉल

# You can install xclip using `apt-get`
apt-get install xclip

# or `pacman`
pacman -S xclip

# or `dnf`
dnf install xclip

आप के लिए उपयोग नहीं है, तो apt-getऔर न ही pacman, और न ही dnfसूत्रों पर उपलब्ध हैं sourceforge

सेट अप

दे घुमा के

में ~/.bash_aliases, जोड़ें:

alias setclip="xclip -selection c"
alias getclip="xclip -selection c -o"

. ~/.bash_aliasesअपने प्रोफ़ाइल का उपयोग करके या अपना नया कॉन्फ़िगरेशन लोड करना न भूलें ।

मछली

में ~/.config/fish/config.fish, जोड़ें:

abbr setclip "xclip -selection c"
abbr getclip "xclip -selection c -o"

लागू करने के लिए परिवर्तनों के लिए अपने टर्मिनल को पुनरारंभ करके अपनी मछली की आवृत्ति को फिर से शुरू करने के लिए मत भूलना।

प्रयोग

अब आप उपयोग कर सकते हैं setclipऔर getclip, जैसे:

$ echo foo | setclip
$ getclip
foo

3
अन्य सभी
डिस्ट्रोस के

+1 सबसे अच्छा समाधान! आर्क में, sudo pacman -S xclip। लेकिन ध्यान दें कि .bashrcसबसे अच्छी जगह नहीं है। मैं उचित bashrc, bash_aliases और .profile फ़ाइलों और कैसे bash प्रत्येक को हैंडल करता हूं, पर पढ़े जाने वाले एंड्यूसर की सलाह देता हूं। टिप: इसे इसके बजाय .bash_aliases में डालें।
eduncan911

1
धन्यवाद @ eduncan911! :) ने pacmanपैकेज मैनेजर का उपयोग करने का विकल्प जोड़ा और .bashrcप्रस्ताव को हटा दिया । मुझे पता .bash_aliasesहै कि अधिक अनुकूलित है, लेकिन अंतिम परिणाम समान है ( .bashrcबस आवश्यकता है .bash_aliasesअगर यह मौजूद है)। यदि लोग एक गन्दा सिस्टम चाहते हैं, तो उन्हें एक होने दें। :)
tleb

@EladTabak हैप्पी ने मदद की।
tleb

1
@ जज आप सही हैं। अंत में मेरे .bashrcस्रोत .bash_aliases। ;) मैं इस वर्ष सम्मेलन, कि आर्क भर में 100% संगत बनी हुई है, Ubuntu / डेबियन का पालन करें, रास्पबेरी वेरिएंट, MacOS / OSX और Windows बैश: stefaanlippens.net/my_bashrc_aliases_profile_and_other_stuff कि सम्मेलन के साथ, मैं मशीनों के सभी भर में ठीक उसी dotfiles का उपयोग मैंने छुआ। यह काफी अच्छा है: github.com/eduncan911/dotfiles
eduncan911

143

MacOS में बिल्ट इन pbcopyऔर pbpasteकमांड का उपयोग करते हैं ।

उदाहरण के लिए, यदि आप चलाने

cat ~/.bashrc | pbcopy

~/.bashrcफ़ाइल की सामग्री Cmd+ vशॉर्टकट के साथ चिपकाने के लिए उपलब्ध होगी ।



25

xsel Debian / Ubuntu / टकसाल पर

# append to clipboard:
cat 'the file with content' | xsel -ib

# or type in the happy face :) and ...
echo 'the happy face :) and content' | xsel -ib

# show clipboard
xsel -b

# Get more info:
man xsel

इंस्टॉल

sudo apt-get install xsel

यह कैसे अलग है echo "foo" | xclip -selection c?
लेओ लेपोल्ड हर्ट्ज़ o

इस प्रश्न के उत्तर उबंटू पर कुछ उत्तर हैं , लेकिन मुख्य रूप से xselऔर xclipहर तरह से समतुल्य हैं सिवाय इसके कि xclipनाम से फाइलें पढ़ / लिख सकते हैं, लेकिन xselयदि आप किसी फ़ाइल का उपयोग करना चाहते हैं तो शेल पुनर्निर्देशन की आवश्यकता है।
कॉलिन डी बेनेट

xselस्क्रिप्ट से अच्छी तरह से काम कर रहा है, जबकि xclip केवल प्रॉम्प्ट से काम कर रहा है। यकीन नहीं है कि क्यों।
एनवीआरएम

16

वाह, मैं विश्वास नहीं कर सकता कि इस प्रश्न के कितने उत्तर हैं। मैं नहीं कह सकता कि मैंने उन सभी की कोशिश की है, लेकिन मैंने शीर्ष 3 या 4 की कोशिश की है और उनमें से कोई भी मेरे लिए काम नहीं करता है। मेरे लिए जो काम किया गया वह एक उत्तर था जो डॉग नामक एक उपयोगकर्ता द्वारा लिखी गई टिप्पणी में स्थित था। चूंकि मुझे यह इतना उपयोगी लगा, इसलिए मैंने एक उत्तर में आराम करने का फैसला किया।

xcopy उपयोगिता स्थापित करें और आप टर्मिनल, इनपुट में हैं जब:

प्रतिलिपि

Thing_you_want_to_copy|xclip -selection c

पेस्ट करें

myvariable=$(xclip -selection clipboard -o)

मैंने जवाबों की एक बहुत पर ध्यान दिया pbpaste और pbcopy की सिफारिश की। यदि आप उन उपयोगिताओं में हैं, लेकिन किसी कारण से वे आपके रेपो पर उपलब्ध नहीं हैं, तो आप हमेशा xcopy कमांड के लिए एक उपनाम बना सकते हैं और उन्हें pbpaste और pbcopy कह सकते हैं।

alias pbcopy="xclip -selection c" 
alias pbpaste="xclip -selection clipboard -o" 

तो यह इस तरह दिखेगा:

Thing_you_want_to_copy|pbcopy
myvariable=$(pbpaste)

महान, आपका अन्य भाग मैकओएस से काफी मेल खाता है।
मेदो मफिन्स

15

2018 का जवाब

क्लिपबोर्ड-क्ली का उपयोग करें । यह मैकओएस, विंडोज, लिनक्स, ओपनबीएसडी, फ्रीबीएसडी और एंड्रॉइड के साथ बिना किसी वास्तविक मुद्दे के काम करता है।

इसे स्थापित करें:

npm install -g clipboard-cli

तब आप कर सकते हैं

echo foo | clipboard

यदि आप चाहते हैं, आप कर सकते हैं उर्फ करने के लिए cbअपने में निम्नलिखित रख कर .bashrc, .bash_profileया .zshrc:

alias cb=clipboard


2
क्या आप सुनिश्चित हैं कि यह एक सुरक्षित npmपैकेज है?
जॉनी

3
@Stas, मुझे उम्मीद है कि, यह सबसे प्रचलित नोड योगदानकर्ता सिंदोरसोरस ( github.com/sindresorhus ) द्वारा बनाया गया है । वह एवा परीक्षण पुस्तकालय, एक्स लाइनर, योमन और अनगिनत अन्य परियोजनाओं के लिए जिम्मेदार है। वह इस तरह अनगिनत छोटे पुस्तकालयों के लिए भी जिम्मेदार है, जो सामूहिक रूप से इंटरनेट पर लगभग हर जेएस-उपयोग करने वाली वेबसाइट पर अपना कोड डालते हैं। यह कहना कि वह समझौता नहीं किया जा सकता है; बस इतना है कि उसकी रेपो और उसकी खुद की प्रतिष्ठा पर आंखों की मात्रा इसे सबसे यादृच्छिक एनपीएम रेपो की तुलना में बहुत कम संभावना बनाती है।
इवान कॉनराड

ठंडा! उबंटू GNU / Linux पर काम करना जहाँ xclip काम नहीं कर रहा है।
केविन बुक्स

14

लिनक्स के लिए विंडोज सबसिस्टम पर आप क्लिपबोर्ड पर copy.exe के साथ कॉपी कर सकते हैं।

cat file | clip.exe

|पाइप कमांड का उपयोग करने के लिए ध्यान रखें । और >कमांड नहीं , क्योंकि वह काम नहीं करेगा।


11

यहां क्लिपबोर्ड पढ़ने के लिए बैश स्क्रिप्ट का उपयोग करने के लिए तैयार है जो कई प्लेटफार्मों पर काम करता है। यदि आप कार्यक्षमता जोड़ते हैं, तो कृपया यहां स्क्रिप्ट संपादित करें (जैसे अधिक प्लेटफ़ॉर्म)।

#!/bin/bash
# WF 2013-10-04
# multi platform clipboard read access
# supports
#   Mac OS X
#   git shell / Cygwin (Windows)
#   Linux (e.g. Ubuntu)

#
# display an error
#
error() {
  echo "error: $1" 1>&2
  exit 1
}

#
# getClipboard
#
function getClipboard() {
 os=`uname`
      case $os in 
        # git bash  (Windows)
        MINGW32_NT-6.1)
          cat /dev/clipboard;;
        # Mac OS X
        Darwin*)
          pbpaste;;  
        # Linux 
        Linux*)
          # works only for X clipboard - a check that X is running might be due
          xclip -o;;
        *)
          error "unsupported os $os";;
      esac
}

tmp=/tmp/clipboard$$
getClipboard >$tmp
cat $tmp
# comment out for debugging
rm $tmp

ब्रूह, यह वास्तव में काम करता है क्यों यह जवाब नहीं है?
255.tar.xz

9

विंडोज (Cygwin के साथ) पर कोशिश cat /dev/clipboardया echo "foo" > /dev/clipboardरूप में उल्लेख किया है इस लेख।


1
जैसा कि उपयोगकर्ता @maep ने एक अलग टिप्पणी में उल्लेख किया है, विंडोज के नए संस्करण (मैं केवल Win10 के लिए पुष्टि कर सकता हूं) बस पाइप कर सकता हूं clip। मैं msysgit 1.9.5 का उपयोग कर रहा हूं और यह काम कर रहा है।
शॉन एर्क्वाट

echo "foo" > /dev/clipboard(नहीं एक \ r \ n \ N बात लेकिन पूरी तरह से चला गया है) पूरी तरह से नई-पंक्तियों को नष्ट करने लगता है
user1529413

9

केवल मैक के लिए:

echo "Hello World" | pbcopy
pbpaste

ये स्थित हैं /usr/bin/pbcopyऔर /usr/bin/pbpaste


8

लिनक्स में अलग-अलग क्लिपबोर्ड हैं; एक्स सर्वर में एक है, विंडो मैनेजर में एक और हो सकता है, आदि कोई मानक उपकरण नहीं है।

ओह, हाँ, CLI पर, स्क्रीन प्रोग्राम का अपना क्लिपबोर्ड है, साथ ही कुछ अन्य एप्लिकेशन जैसे Emacs और vi भी करते हैं

X में, आप xclip का उपयोग कर सकते हैं ।

आप इस धागे को अन्य संभावित उत्तरों के लिए देख सकते हैं: http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2004-07/0919.html


2
ऐसा लगता है कि बनाने / देव / क्लिप किसी के लिए एक अच्छी परियोजना होगी।
TED

2
मैं कई क्लिपबोर्ड से पूरी तरह से वाकिफ हूं। यह मेरे प्रश्न का उत्तर देने के लिए और अधिक कठिन कैसे बनाता है?
मोइनुद्दीन

यह समझ में आता है कि अगर क्लिपबोर्ड को मानकीकृत किया जाता है, तो शायद आपको चोट नहीं लगेगी यदि आप / dev / clip1, / ​​dev / clip2 का उपयोग कर सकते हैं .. / dev / क्लिप <n> उन्हें एक्सेस करने के लिए, एकमात्र मुद्दा यह है कि वे उपयोगकर्ता विशिष्ट हैं और डिवाइस सिस्टम-वाइड हैं। लेकिन अगर आप एक कर्नेल डिवाइस ड्राइवर बनाते हैं जो एक्सेस किए गए यूआईडी के अनुसार मास्क करता है, तो इसे अपेक्षित रूप से काम करना चाहिए।

5

विंडोज में क्लिपबोर्ड पर कॉपी और पेस्ट करें (साइगविन):

देख:

$ clip.exe -?

CLIP
Description:
    Redirects output of command line tools to the Windows clipboard.
    This text output can then be pasted into other programs.
Parameter List:
/?                  Displays this help message.
Examples:
DIR | CLIP          Places a copy of the current directory
                        listing into the Windows clipboard.
CLIP < README.TXT   Places a copy of the text from readme.txt
                        on to the Windows clipboard.

इसके अलावा getclip (इसे Shift+ के बजाय इस्तेमाल किया जा सकता है Ins!) और putclip (echo oaeuoa | putclip.exe इसे क्लिप में डालने के लिए) मौजूद हैं।


4

यह एक साधारण पायथन लिपि है जो आपको केवल वही चाहिए जो:

#!/usr/bin/python

import sys

# Clipboard storage
clipboard_file = '/tmp/clipboard.tmp'

if(sys.stdin.isatty()): # Should write clipboard contents out to stdout
    with open(clipboard_file, 'r') as c:
        sys.stdout.write(c.read())
elif(sys.stdout.isatty()): # Should save stdin to clipboard
    with open(clipboard_file, 'w') as c:
        c.write(sys.stdin.read())

इसे अपने पथ में कहीं निष्पादन योग्य के रूप में सहेजें (मैंने इसे सहेजा है /usr/local/bin/clip। आप अपने क्लिपबोर्ड पर सहेजे जाने के लिए सामान में पाइप कर सकते हैं ...

echo "Hello World" | clip

और आप अपने क्लिपबोर्ड में कुछ अन्य कार्यक्रम के लिए पाइप कर सकते हैं ...

clip | cowsay
 _____________
< Hello World >
 -------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

इसे अपने आप चलाना केवल क्लिपबोर्ड में आउटपुट होगा।


यह तब काम करता है जब आप एकल कंप्यूटर पर होते हैं, लेकिन आपको कंप्यूटर के बीच चीजों को कॉपी करने की अनुमति नहीं देगा।
चार्ल्स प्लेजर

केवल 'इको स्ट्रै> टैम्पाइल' लगता है और cat tmpfileक्लिपबोर्ड ऑपरेशन नहीं। // के रूप में ही @horta जवाब।
युरेनचेन

यह क्लिपबोर्ड चर सेट करने के लिए प्रतीत नहीं होता है, इसलिए मैं सामग्री को अन्य एप्लिकेशन में पेस्ट नहीं कर सकता हूं - यह एक वास्तविक क्लिपबोर्ड नहीं है!
जेना

4

मुझे एक अच्छा संदर्भ मिला है: /unix/69111/

मेरे मामले में मैं क्लिपबोर्ड पर सामग्री पेस्ट करना चाहता हूं और यह भी देखना चाहता हूं कि वहां क्या चिपकाया गया है, इसलिए मैंने teeफाइल डिस्क्रिप्टर के साथ कमांड का भी उपयोग किया :

echo "just a test" | tee >(xclip -i -selection clipboard)

>()प्रक्रिया प्रतिस्थापन का एक रूप है। बैश प्रत्येक को एक फाइल डिस्क्रिप्टर के रास्ते से बदल देता है जो कोष्ठक के भीतर कार्यक्रम के मानक इनपुट से जुड़ा होता है।

teeआदेश "पाइप अपनी सामग्री" करने के लिए अपने आदेश आप की अनुमति के कांटे और मानक उत्पादन "stdout" पर परिणाम देख

आप क्लिपबोर्ड पर लिखने और प्राप्त करने के लिए उपनाम भी बना सकते हैं, जिससे आप "pbcopy" और "pbpaste" का उपयोग कर सकते हैं जैसे कि आप मैक पर जहां। मेरे मामले में, जैसा कि मैं zsh का उपयोग करता हूं, मेरे पास अपनी एलियास फाइल पर यह है:

(( $+commands[xclip] )) && {
    alias pbpaste='xclip -i -selection clipboard -o'
    alias pbcopy='xclip -selection clipboard'
}

(( $+command[name] ))zsh परीक्षण में आदेश "नाम" आपके सिस्टम पर स्थापित किया गया है, तो दोनों उपनाम के साथ बांटा जाता है {}&&एक द्विआधारी है और, अगर एक तो ख है, इसलिए यदि आप xclip है तो उपनाम सेट हो जाएगा।

echo "another test" | tee >(pbcopy)

अपनी क्लिपबोर्ड सामग्री प्राप्त करने के लिए बस टाइप करें:

pbpaste | "any-command-you-need-here"

4
  xsel -b

क्या एक्स विंडो के लिए काम करता है, और यह ज्यादातर पहले से ही स्थापित है। Xsel के मैन पेज में एक नज़र प्रयास के लायक है।


2

कुछ विंडोज प्रोग्राम जो मैंने सालों पहले लिखे थे। वे आपको क्लिपबोर्ड को डंप, पुश, एपेंड और प्रिंट करने की अनुमति देते हैं। यह इस तरह काम करता है:

dumpclip | perl -pe "s/monkey/chimp/g;" | pushclip

इसमें स्रोत कोड शामिल हैं: cmd_clip.zip


2

कुछ तरीके हैं। जिन तरीकों का उल्लेख किया गया है उनमें से कुछ में (मुझे लगता है) tmux, screen, vim, emacs, और shell शामिल हैं। मुझे एमएसीएस या स्क्रीन नहीं पता है, इसलिए मैं अन्य तीन पर जाऊंगा।

Tmux

जबकि X चयन नहीं है, tmux के माध्यम से एक कॉपी मोड सुलभ है prefix-[( डिफ़ॉल्ट रूप prefixसे Ctrl+ Bहै)। इस मोड के लिए उपयोग किया जाने वाला बफर अलग है और tmux के लिए अनन्य है, जो काफी संभावनाओं को खोलता है और इसे सही परिस्थितियों में एक्स चयनों की तुलना में अधिक बहुमुखी बनाता है।

इस मोड से बाहर निकलने के लिए, हिट करें q; नेविगेट करने के लिए, अपने vimया emacsबाइंडिंग (डिफ़ॉल्ट = विम) का उपयोग करें , इसलिए hjklआंदोलन के लिए, v/V/C-vचरित्र / रेखा / ब्लॉक चयन के लिए, आदि जब आपका चयन होता है, तो Enterकॉपी करने और मोड से बाहर निकलने के लिए हिट करें।

इस बफ़र से चिपकाने के लिए, उपयोग करें prefix-]

खोल

X11डिफ़ॉल्ट रूप से दो कार्यक्रमों के साथ आने की कोई भी स्थापना प्रतीत होती है: xclipऔर xsel(थोड़े की तरह यह भी दोनों के साथ कैसे आता है ) startxऔर xinit। अधिकांश अन्य उत्तर उल्लेख करते हैं xclip, और मैं वास्तव में xselइसकी संक्षिप्तता के लिए पसंद करता हूं, इसलिए मैं कवर करने जा रहा हूं xsel

से xsel (1x) :

इनपुट विकल्प

-ए, --प्पेंड

चयन के लिए मानक इनपुट जोड़ें। तात्पर्य मैं

-फ, --फॉल

मानक इनपुट के बढ़ने के साथ चयन करने की अपील करें। तात्पर्य मैं

-आई, -इनपुट

चयन में मानक इनपुट पढ़ें।

आउटपुट विकल्प

-ओ, --आउटपुट

मानक आउटपुट के लिए चयन लिखें।

कार्रवाई के विकल्प

-सी, - क्लियर

चयन साफ़ करें। सभी इनपुट विकल्पों को ओवरराइड करता है।

-ड, --डेलीट

अनुरोध करें कि वर्तमान चयन हटा दिया जाए। यह न केवल चयन को साफ करता है, बल्कि उस कार्यक्रम के लिए भी अनुरोध करता है जिसमें चयन यह रहता है कि चयनित सामग्री हटा दी जाए। सभी इनपुट विकल्पों को ओवरराइड करता है।

चयन के विकल्प

-पी, -प्रतिष्ठा

प्राथमिक चयन (डिफ़ॉल्ट) पर काम करते हैं।

-s, - सेकेंडरी

सेकंड के चयन पर काम करते हैं।

-बी, -क्लिपबोर्ड

CLIPBOARD चयन पर काम करते हैं।

और इसके बारे में आपको पता होना चाहिए। p(या कुछ भी नहीं) के लिए PRIMARY, sके लिए SECONDARY, bके लिए CLIPBOARD, oउत्पादन के लिए।

उदाहरण: कहते हैं कि मैं fooएक TTY से आउटपुट कॉपी करना चाहता हूं और इसे बग रिपोर्ट के लिए एक वेबपेज पर पेस्ट करना चाहता हूं । ऐसा करने के लिए, टीटीवाई / एक्स सत्र से / के लिए कॉपी करना आदर्श होगा। तो सवाल यह हो जाता है कि मैं TTY से क्लिपबोर्ड का उपयोग कैसे करूं?

इस उदाहरण के लिए, हम मान लेंगे कि X सत्र प्रदर्शन पर है :1

$ foo -v
Error: not a real TTY
details:
blah blah @ 0x0000000040abeaf4
blah blah @ 0x0000000040abeaf8
blah blah @ 0x0000000040abeafc
blah blah @ 0x0000000040abeb00
...
$ foo -v | DISPLAY=:1 xsel -b # copies it into clipboard of display :1

फिर मैं Ctrl-Vइसे हमेशा की तरह फॉर्म में डाल सकता हूं ।

अब कहते हैं कि समर्थन साइट पर कोई मुझे समस्या को ठीक करने के लिए चलाने की आज्ञा देता है। यह जटिल और लंबा है।

$ DISPLAY=:1 xsel -bo
sudo foo --update --clear-cache --source-list="http://foo-software.com/repository/foo/debian/ubuntu/xenial/164914519191464/sources.txt"
$ $(DISPLAY=:1 xsel -bo)
Password for braden:
UPDATING %%%%%%%%%%%%%%%%%%%%%%% 100.00%
Clearing cache...
Fetching sources...
Reticulating splines...
Watering trees...
Climbing mountains...
Looking advanced...
Done.
$ foo
Thank you for your order. A pizza should arrive at your house in the next 20 minutes. Your total is $6.99

पिज्जा ऑर्डरिंग कमांड लाइन के उत्पादक उपयोग की तरह लगता है।

...आगे बढ़ते रहना।

शक्ति

यदि इसके साथ संकलित किया गया है +clipboard(यह महत्वपूर्ण है! अपनी जांच करें vim --version), विम को एक्स PRIMARYऔर CLIPBOARDचयन तक पहुंच होनी चाहिए । दो चयन क्रमशः *और +रजिस्टरों से सुलभ हैं, और आपके अवकाश से किसी अन्य रजिस्टर के समान लिखा और पढ़ा जा सकता है। उदाहरण के लिए:

:%y+    ; copy/yank (y) everything (%) into the CLIPBOARD selection (+)
"+p     ; select (") the CLIPBOARD selection (+) and paste/put it
ggVG"+y ; Alternative version of the first example

यदि विम की आपकी प्रतिलिपि सीधे X चयनों तक पहुंच का समर्थन नहीं करती है, हालांकि, यह दुनिया का अंत नहीं है। आप xselतकनीक का उपयोग कर सकते हैं जैसा कि पिछले भाग में बताया गया है।

:r ! xsel -bo ; read  (r) from the stdout of (!) `xsel -bo`
:w ! xsel -b  ; write (w) to the stdin of    (!) `xsel -b`

कुछ प्रमुख कॉम्बो को बांधें और आपको अच्छा होना चाहिए।


निश्चित रूप से हमेशा DISPLAY=एक गैर-एक्स पर्यावरण से एक्स एप्लिकेशन को कॉल करते समय उपयोग करना याद रखें । एक्स ऐप्स को DISPLAYपर्यावरण चर की जरूरत है कि कौन सा सर्वर (या कई सत्रों को संभालने वाले सिर्फ एक सर्वर है?) से बात कर रहे हैं। प्रयास करें DISPLAY=:1 firefox(या जो भी अपने प्रदर्शन आईडी हो सकता है, मेरा अभी भी है :1) उदाहरण के लिए, एक TTY से।
ब्रैडेन बेस्ट

मेरे लिए मेरे वातावरण में चुनाव :%y+VIM में था ।
हांकासा

2

इस थ्रेड से, एक विकल्प है जिसे किसी भी gclip/ xclip/ xselथर्ड-पार्टी सॉफ़्टवेयर को स्थापित करने की आवश्यकता नहीं है ।

एक पर्ल स्क्रिप्ट (चूंकि पर्ल आमतौर पर हमेशा स्थापित होता है)

use Win32::Clipboard;
print Win32::Clipboard::GetText();

मैं इसका उपयोग कैसे करूंगा? PATH में स्क्रिप्ट सहेजें और इसमें पाइप करें? मैं शेयरिंग लिंक कॉपी करने के लिए ड्रॉपबॉक्स क्लि रैपर लिखने की कोशिश कर रहा हूं, इसलिए मुझे केवल टेक्स्ट को हैंडल करने की आवश्यकता है।
जेना


2

pbcopy OSX में बनाया गया है:

.Bash_profile की सामग्री की प्रतिलिपि बनाना:

cat ~/.bash_profile | pbcopy

1

MacOS में, उपयोग करें pbpaste

उदाहरण के लिए:

क्लिपबोर्ड को अपडेट करें

pbpaste  | ruby -ne ' puts "\|" + $_.split( )[1..4].join("\|") ' | pbcopy

1

यदि आप मेरे जैसे हैं और बिना किसी रूट विशेषाधिकार के लिनक्स सर्वर पर चलते हैं और कोई भी एक्सपीएल या जीपीएम नहीं है, तो आप केवल एक अस्थायी फ़ाइल का उपयोग करके इस समस्या को हल कर सकते हैं। उदाहरण के लिए:

$ echo "Hello, World!" > ~/clip
$ echo `cat ~/clip`
Hello, World!

मैं यह नहीं देखता कि इसमें मूल विशेषाधिकारों की कमी कैसे है।
ब्रैडेन बेस्ट

3
@BradenBest रूट विशेषाधिकारों की कमी का मतलब है कि मैं चीजों को स्थापित नहीं कर सका।
होर्ता

लेकिन आप क्या स्थापित करेंगे? एक्स? एक सर्वर पर? जब तक आप कुछ अजीब एक्स अग्रेषण सेवा की मेजबानी नहीं कर रहे हैं, मैं यह नहीं देख सकता कि आप ऐसा क्यों करना चाहते हैं।
ब्रैडेन बेस्ट

@BradenBest निश्चित नहीं है। जो भी कार्यक्रम या सेवा मुझे कॉपी पेस्ट करने की अनुमति देगा।
होर्ता

1
ठीक है, यदि आप किसी भी X selections(जिसे "क्लिपबोर्ड" और xclip / xsel के किसी भी उल्लेख से निहित है) का उपयोग कर रहे हैं, तो आपको एक सक्रिय एक्स सत्र (और इस तरह एक एक्स सर्वर) की आवश्यकता है ताकि आप चयन को एक्सेस कर सकें पहले स्थान पर। यह देखने के लिए कि मेरा क्या मतलब है, DISPLAY="" xselअपने स्थानीय मशीन पर चलने का प्रयास करें। यह एक त्रुटि पर बाहर निकल जाएगा, सत्र को खोजने में असमर्थ होने ""और किसी भी एक्स चयन के साथ कोई बातचीत नहीं की जाएगी। इसीलिए मैंने शुरू में कहा था कि मैं यह नहीं देखता कि इसमें रूट विशेषाधिकार कैसे होता है: रूट या नो रूट, आपको सर्वर वातावरण में उपयोगी X चयन नहीं मिल सकता है।
ब्रैडेन बेस्ट




0

हालांकि> 1 साल बाद, मैं थोड़ा अलग समाधान साझा करता हूं। आशा है कि यह किसी के लिए उपयोगी है।

कल मैंने खुद को इस सवाल के साथ पाया: "विभिन्न उपयोगकर्ता सत्रों के बीच क्लिपबोर्ड को कैसे साझा किया जाए?" । जब सत्रों के बीच स्विच करना ctrlaltF7- ctrlaltF8वास्तव में, आप जो कॉपी करते हैं उसे पेस्ट नहीं कर सकते।

मैं निम्नलिखित त्वरित और गंदे समाधान के साथ आया , एक नामित पाइप पर आधारित। यह निश्चित रूप से काफी नंगे और कच्चे हैं, लेकिन मैंने इसे कार्यात्मक पाया:

user1@host:~$ mkfifo /tmp/sharedClip

फिर भेजने वाले टर्मिनल में

user1@host:~$ cat > /tmp/sharedClip

अंतिम, प्राप्त टर्मिनल में:

user2@host:~$ cat /tmp/sharedClip

अब, आप पहले टर्मिनल में कुछ भी टाइप या पेस्ट करते हैं, और (हिट करने के बाद return), यह तुरंत प्राप्त टर्मिनल में दिखाई देगा, जहाँ से आप कहीं भी फिर से कॉपी / पेस्ट कर सकते हैं।

बेशक यह user1 के क्लिपबोर्ड में उपलब्ध कराने के लिए केवल user1 के क्लिपबोर्ड से सामग्री को कड़ाई से नहीं लेता है, बल्कि इसके लिए अतिरिक्त जोड़ी पेस्ट और कॉपी क्लिक की आवश्यकता होती है।


बहुत आश्चर्य की बात नहीं है। दो अलग-अलग एक्स सर्वर = दो अलग-अलग चयन सेट। हालाँकि, आप एक स्क्रिप्ट सेट कर सकते हैं जो इनपुट / आउटपुट लेता है xsel/xclip। उदाहरण के लिए, एक छोर यह देखने के लिए सुनता है कि क्या चयन में से कोई भी बदल गया है, और फिर स्वचालित रूप से इसे दूसरी स्क्रिप्ट पर (नाम FIFO के माध्यम से) पाइप करता है, जो एक या अधिक पाइप को सुन रहा है, जो इसे अपने एक्स चयन में सम्मिलित करता है। पाठ की प्रतिलिपि बनाना इस प्रकार अन्य X सत्र के चयन में स्वचालित रूप से दिखाई देने वाले पाठ के परिणामस्वरूप होगा। और मत भूलना $DISPLAY
ब्रैडेन बेस्ट

0

रूबी ऑन्लाइनर ने मुझे अजगर के साथ प्रयास करने के लिए प्रेरित किया।

कहते हैं कि हम एक कमांड चाहते हैं जो 4 स्थानों के साथ क्लिपबोर्ड में मौजूद है। स्टैकओवरफ़्लो पर स्निपेट्स साझा करने के लिए बिल्कुल सही।

$ pbpaste | python -c "import sys
 for line in sys.stdin:
   print(f'    {line}')" | pbcopy

वह टाइपो नहीं है। पाइथन को लूप के लिए नया करने की जरूरत है। हम स्मृति में एक अतिरिक्त सरणी के निर्माण से बचने के लिए लाइनों को एक पास में बदलना चाहते हैं।

यदि आप अतिरिक्त सरणी के निर्माण का मन नहीं बनाते हैं:

$ pbpaste | python -c "import sys; print(''.join([f'    {l}' for l in sys.stdin]))" | pbcopy

लेकिन ईमानदारी से जाग इस अजगर के लिए बेहतर है। मैंने अपनी ~/.bashrcफ़ाइल में इस उपनाम को परिभाषित किया है

alias indent="pbpaste | awk '{print \"    \"\$0}' | pbcopy"

अब जब मैं indentजो कुछ भी अपने क्लिपबोर्ड में चलाता हूं, वह इंडेंटेड है।

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