Komut Satırı Panoya Erişim


10

Bazı görevlerimi daha verimli hale getirmek için bir komut satırı aracı oluşturuyorum. Panoya içerik yazabilmem gerekiyor, ancak bazı nedenlerden dolayı benim için çalışmıyor.

Her ikisini de yüklemeyi denedim xclipve xselher ikisi de aynı davranışa sahipler: Panodaki paraya okuma / yazma yapabilirler, ancak ana Ubuntu GUI'den erişemiyorum.

Ben de terminalde denedim ...

echo "hello" | xclip

Sonra Ctrl+ Shift+ V, "Merhaba" değil, orijinal Pano giriş olsun. Ancak, içeriği almak istersem xclip, iyi çalışıyor.

Ana hedef, içeriği Firefox'a veya kullandığım diğer GUI tabanlı programlara yapıştırılabilir hale getirmektir.

Yanıtlar:


16

Pekala, X'te birkaç farklı pano var :) Biri xclipvarsayılan olarak metni kopyalar "seçim tamponu" dur - genellikle sadece farenizle bazı metinleri seçip orta fare düğmesine yapıştırabilirsiniz. Bu tampon, Ctrl-Shift-V ile yapıştırabileceğiniz tampondan ayrıdır.

Deneyin

echo "hello" | xclip -selection clipboard

ayrıca, bkz.

man xclip

xclip hakkında daha fazla bilgi için


2
Bilginize, ayrıca kısaltılabilir xclip -sel clip. Şahsen bunu her zaman kullanıyorum
Sergiy Kolodyazhnyy

Tanrım neden bu kadar kafa karıştırıcı, neden bir pano yeterli değildi, bkz.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

Görünüşe göre, sık yapılan işlem "farenizle bir miktar metin seçmek" tir. Klavye ile aynı işlem yapılabilir mi?
nilon

3

Kendimi kolaylaştırmak için Mac OS X'in ve Mac OS X'in xclipişlevselliğini taklit etmek için bir takma ad oluşturdum .pbcopypbpaste

sudo apt-get install xclip -y

Ardından ~/.bashrctakma ad eklemek için

nano ~/.bashrc

Bu yeni satırları ekleyin (bunları dosyanın sonuna koyabilirsiniz):

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

Kaydedin ve çıkın, sonra yeni bir kabuk açın veya source ~/.bashrctakma adları kullanmak için çalıştırın .

Blog yayınım daha fazla ayrıntı içeriyor.


2

Pencere yapımcısından wxcopy ve wxpaste yardımcı programlarını kullanıyordum, ancak son Linux sürümleri (veya X sürümleri) onları kırmış gibi görünüyor - Güvenliğin sıkıldığından ve eşleşecek şekilde güncellenmediğinden şüpheleniyorum. Örneğin;

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

FRED çıktısını almak için. (Bu, nihai wxpaste olmadan aynı şeyi elde edeceğiniz için bu bir örnek, ancak bence elde edebileceğinizin lezzetini veriyor.)

Ancak, aynı efekti, inanılmaz derecede hafif olan ve aynı zamanda 8 panonun küçük (özetlenmiş) görsel görüntüsünü sağlayan "xcb" paketini kullanarak da elde edebilirsiniz.

Ben wxcopy / wxpaste benim zevkime biraz daha hoş hale getirmek için yıllar önce wcopy / wpaste bir çift kabuk komut dosyaları yazdım. Onları wxcopy / wxpaste veya xcb ile çalışacak şekilde güncelledim. Bu onları olması gerekenden biraz daha karmaşık hale getirir, ancak onları buraya yapıştırırım - umarım bu forum için çok uzun değildirler.

İşte kopya:

#!/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

Ve işte wpaste:

#!/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

Eğer ilgilenen varsa, ben de scriptler için man sayfaları yazdım - ama muhtemelen wcopy.1x ve wpaste.1x googling onları bulabilirsiniz (hala geçerli).


Yanıtları, sayfalara köprüler eklemek için düzenleyebilirsiniz. (Yeni bir AU kullanıcısı olsanız bile en fazla 2 bağlantı ekleyebilmelisiniz.)
Eliah Kagan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.