Accesso agli Appunti dalla riga di comando


10

Sto creando uno strumento da riga di comando per rendere alcuni dei miei compiti più efficienti. Devo essere in grado di scrivere il contenuto negli appunti, ma per qualche ragione non funziona per me.

Ho provato a installare entrambi xclipe xsel, ma entrambi hanno lo stesso comportamento: possono leggere / scrivere negli appunti bene, ma non riesco ad accedervi dalla GUI principale di Ubuntu.

L'ho provato anche nel terminale ...

echo "hello" | xclip

Quindi se Ctrl+ Shift+ V, ottengo la voce degli appunti originale, non "ciao". Ma, se provo a catturare il contenuto xclip, funziona benissimo.

L'obiettivo principale è ottenere il contenuto di pasta in Firefox o qualsiasi altro programma basato su GUI che sto usando.

Risposte:


16

Bene, ci sono alcuni appunti diversi in X :) Quello xclipdi default copia il testo in "buffer di selezione" - di solito basta selezionare del testo con il mouse e quindi incollarlo con il pulsante centrale del mouse. Questo buffer è separato da quello da cui è possibile incollare con Ctrl-Shift-V.

Provare

echo "hello" | xclip -selection clipboard

vedi anche

man xclip

per maggiori dettagli su xclip


2
Cordiali saluti, anche può essere abbreviato in xclip -sel clip. personalmente lo uso sempre
Sergiy Kolodyazhnyy il

Dio, perché è così confuso, perché non è stato abbastanza un blocco per appunti, vediman 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,

Sembra che l'azione frequente sia "selezionare del testo con il mouse". È possibile eseguire la stessa azione con la tastiera?
nilon

3

Per rendere più facile per me ho creato un alias per xclipal fine di simulare la funzionalità di pbcopye e pbpastein Mac OS X.

sudo apt-get install xclip -y

Quindi modifica il tuo ~/.bashrcper aggiungere alias:

nano ~/.bashrc

Aggiungi queste nuove righe (potresti metterle alla fine del file):

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

Salvare ed uscire, quindi aprire una nuova shell o eseguire source ~/.bashrcper utilizzare gli alias.

Il mio post sul blog contiene ulteriori dettagli.


2

Usavo le utility wxcopy e wxpaste di windowmaker, ma le recenti versioni di Linux (o versioni X) sembrano averle rotte - sospetto che la sicurezza sia stata rafforzata e che non siano state aggiornate per abbinarle. Ad esempio potresti fare cose come:

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

per ottenere l'output FRED. (È un esempio inventato, dal momento che otterresti la stessa cosa senza il wxpaste finale, ma penso che dia il sapore di ciò che puoi ottenere.)

Tuttavia, puoi ottenere lo stesso effetto usando il pacchetto "xcb", che è incredibilmente leggero e offre anche un display visivo minuscolo (riassunto) di 8 appunti.

Anni fa ho scritto un paio di script shell wcopy / wpaste, per rendere wxcopy / wxpaste un po 'più piacevole per i miei gusti. Li ho aggiornati stasera per lavorare con wxcopy / wxpaste o xcb. Questo li rende un po 'più complessi di quanto debbano essere, ma li incollerò qui - speriamo non siano troppo lunghi per questo forum.

Ecco 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

Ed ecco 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

Se qualcuno è interessato, ho scritto anche pagine man per gli script, ma probabilmente puoi trovarle (sono ancora valide) cercando su google wcopy.1x e wpaste.1x


È possibile modificare la risposta per aggiungere collegamenti ipertestuali alle pagine man. (Dovresti essere in grado di aggiungere fino a 2 collegamenti, anche se sei un nuovo utente UA).
Eliah Kagan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.