कमांड लाइन क्लिपबोर्ड एक्सेस


10

मैं अपने कुछ कार्यों को अधिक कुशल बनाने के लिए एक कमांड लाइन टूल बना रहा हूं। मुझे क्लिपबोर्ड पर सामग्री लिखने में सक्षम होने की आवश्यकता है, लेकिन किसी कारण से यह मेरे लिए काम नहीं कर रहा है।

मैंने दोनों को स्थापित करने की कोशिश की है xclipऔर xselदोनों में समान व्यवहार है: वे क्लिपबोर्ड को ठीक से पढ़ / लिख सकते हैं, लेकिन मैं इसे मुख्य उबंटू जीयूआई से एक्सेस नहीं कर सकता।

मैंने इसे टर्मिनल में भी आजमाया है ...

echo "hello" | xclip

फिर अगर Ctrl+ Shift+ V, मुझे मेरी मूल क्लिपबोर्ड प्रविष्टि मिलती है, "हैलो" नहीं। लेकिन, अगर मैं सामग्री को हड़पने की कोशिश करता हूं, तो xclipयह ठीक काम करता है।

मुख्य लक्ष्य सामग्री को फ़ायरफ़ॉक्स या जो भी अन्य जीयूआई-आधारित कार्यक्रम मैं उपयोग कर रहा हूं, में पेस्ट करने योग्य है।

जवाबों:


16

खैर, एक्स में कुछ अलग क्लिपबोर्ड हैं :) xclipडिफ़ॉल्ट रूप से एक कॉपी टेक्स्ट "चयन बफर" है - आमतौर पर आप बस अपने माउस के साथ कुछ पाठ का चयन करते हैं और फिर इसे मध्य माउस बटन के साथ पेस्ट कर सकते हैं। यह बफर उस से अलग है जिसमें से आप Ctrl-Shift-V से पेस्ट कर सकते हैं।

प्रयत्न

echo "hello" | xclip -selection clipboard

और देखें

man xclip

Xclip के बारे में अधिक जानकारी के लिए


2
FYI करें, को भी छोटा किया जा सकता है xclip -sel clip। मैं व्यक्तिगत रूप से हर समय उस का उपयोग करता हूं
सर्गी कोलोडाज़नी

भगवान ऐसा क्यों भ्रमित है, एक क्लिपबोर्ड पर्याप्त क्यों नहीं था, देखेंman xclip -selection specify which X selection to use, options are "primary" to use XA_PRIMARY (default), "secondary" for XA_SECONDARY or "clipboard" for XA_CLIPBOARD
mxmlnkn

ऐसा लगता है कि लगातार कार्रवाई "अपने माउस के साथ कुछ पाठ का चयन करना" है। क्या कीबोर्ड के साथ एक ही कार्रवाई करना संभव है?
निलोन

3

इसे स्वयं के लिए आसान बनाने के लिए मैंने मैक ओएस एक्स में और xclipकी कार्यक्षमता की नकल करने के लिए एक उपनाम बनाया।pbcopypbpaste

sudo apt-get install xclip -y

फिर ~/.bashrcउपनाम जोड़ने के लिए अपना संपादन करें :

nano ~/.bashrc

इन नई पंक्तियों को जोड़ें (आप उन्हें फ़ाइल के अंत में रख सकते हैं):

alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'

सहेजें और बाहर निकलें, फिर एक नया शेल खोलें या source ~/.bashrcएलियंस का उपयोग करने के लिए चलाएं ।

मेरे ब्लॉग पोस्ट में आगे का विवरण है।


2

मैं विंडोमेकर से उपयोगिताओं wxcopy और wxpaste का उपयोग करता था, लेकिन हाल के लिनक्स संस्करणों (या एक्स संस्करणों) ने उन्हें तोड़ दिया है - मुझे संदेह है कि सुरक्षा कड़ी कर दी गई है और उन्हें मैच के लिए अपडेट नहीं किया गया है। उदाहरण के लिए आप ऐसा कर सकते हैं:

echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste

उत्पादन प्राप्त करने के लिए। (यह एक विवादित उदाहरण है, क्योंकि आपको अंतिम wxpaste के बिना एक ही चीज़ मिलेगी, लेकिन मुझे लगता है कि यह आपको जो कुछ भी प्राप्त हो सकता है उसका स्वाद देता है।)

हालांकि, आप "xcb" पैकेज का उपयोग करके एक ही प्रभाव प्राप्त कर सकते हैं, जो अविश्वसनीय रूप से हल्का है और 8 क्लिपबोर्ड का एक छोटा (संक्षेप) दृश्य प्रदर्शन भी प्रदान करता है।

मैंने सालों पहले शेल स्क्रिप्ट की एक जोड़ी wcopy / wpaste लिखी थी, ताकि wxcopy / wxpaste मेरे स्वाद के लिए थोड़ा और सुखद हो। मैंने उन्हें आज रात को wxcopy / wxpaste या xcb के साथ काम करने के लिए अपडेट किया। इससे उन्हें थोड़ा और अधिक जटिल हो जाता है, जैसा कि उन्हें होने की आवश्यकता है, लेकिन मैं उन्हें यहां चिपकाऊंगा - उम्मीद है कि वे इस मंच के लिए बहुत लंबे समय तक नहीं हैं।

यहाँ wcopy है:

#!/bin/sh
#
# Provide some enhancements to the wxcopy command, which copies standard input
# to an X11 clipboard text buffer.
#
# Allow copying from stdin to any of the cutbuffers.  Note that they are
# indexed counting from 0.
#
# Author: Luke Kendall
#

if [ `uname -s` = "Darwin" ]
then
    WXCOPY=pbcopy
    WXPASTE=pbpaste
else
    WXCOPY=wxcopy
    WXPASTE=wxpaste
    BUFSPEC="-cutbuffer"
    xcb -p 0 > /tmp/wc$$
    if echo "fred$$" | wxcopy -cutbuffer 0 && [ `wxpaste` = "fred$$" ]
    then
        : # Great, they're actually working.  Not common on modern Linuxes.
        echo "working" > $HOME/.wcopyok
    else
        rm -f $HOME/.wcopyok
        WXCOPY="xcb -s"
        WXPASTE="xcb -p"
        BUFSPEC=
    fi
    xcb -s 0 < /tmp/wc$$
fi

unset WXARGS
if [ $# = 0 ]
then
    $WXCOPY ${WXCOPY_DEFS:-0}
else
    MYNAME=`basename $0`
    USAGE="usage: $MYNAME [ [0-9]... ] [$WXCOPY's args]"
    numlist=true
    for n
    do
        if $numlist && expr "x$n" : 'x[0-9][0-9]*$' > /dev/null
        then
            NUMARGS="$NUMARGS $n"
        else
            numlist=false
            if [ "x$n" = "x-h" ]
            then
                echo "$USAGE" >&2
                exit 0
            else
                WXARGS="$WXARGS $n"
            fi
        fi
    done
    set - $NUMARGS
    $WXCOPY $WXCOPY_DEFS $WXARGS $BUFSPEC $1
    ORIG="$1"
    shift
    for n
    do
        $WXPASTE $BUFSPEC $ORIG | $WXCOPY $WXCOPY_DEFS $WXARGS $BUFSPEC $n
    done
fi

और यहाँ का स्वाद है:

#!/bin/sh
#
# Provide some enhancements to the wxpaste command, which pastes from X11
# clipboard text buffers to standard output.
#
# Allow pasting to stdout from any of the cutbuffers.  Note that they are
# indexed counting from 0.
#
# Author: Luke Kendall
#

if [ `uname -s` = "Darwin" ]
then
    WXCOPY=pbcopy
    WXPASTE=pbpaste
else
    WXCOPY=wxcopy
    WXPASTE=wxpaste
    BUFSPEC="-cutbuffer"
    if [ -s $HOME/.wcopyok ]
    then
        : # Great, they're actually working.  Not common on modern Linuxes.
    else
        WXCOPY="xcb -s"
        WXPASTE="xcb -p"
        BUFSPEC=
    fi
fi

if [ $# = 0 ]
then
    $WXPASTE ${WXPASTE_DEFS:-0}
else
    MYNAME=`basename $0`
    USAGE="usage: $MYNAME [ [0-9]... ] [$WXPASTE's args]"
    for n
    do
        if expr "x$n" : 'x[0-9][0-9]*$' > /dev/null
        then
            NUMARGS="$NUMARGS $n"
        elif [ "x$n" = "x-h" ]
        then
            echo "$USAGE" >&2
            exit 0
        else
            WXARGS="$WXARGS $n"
        fi
    done
    set - $NUMARGS
    : echo "Num args: $#"
    for n
    do
        : echo "Doing: $WXPASTE $WXPASTE_DEFS $WXARGS $BUFSPEC $n"
        $WXPASTE $WXPASTE_DEFS $WXARGS $BUFSPEC $n
    done
fi

अगर किसी की दिलचस्पी है, तो मैंने स्क्रिप्ट के लिए मैन पेज भी लिखे हैं - लेकिन आप शायद उन्हें (वे अभी भी मान्य हैं) wcopy.1x और wpaste.1x द्वारा googling


आप हाइपरलिंक को मैनपेज़ में जोड़ने के लिए अपने उत्तर को संपादित कर सकते हैं। (आपको एक नया एयू उपयोगकर्ता होने पर भी 2 लिंक जोड़ने में सक्षम होना चाहिए।)
एलियाह कगन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.