Saya dulu menggunakan utilitas wxcopy dan wxpaste dari pembuat jendela, tetapi versi Linux baru-baru ini (atau versi X) tampaknya telah merusaknya - Saya menduga keamanan telah diperketat dan mereka belum diperbarui agar sesuai. Misalnya Anda dapat melakukan hal-hal seperti:
echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste
untuk mendapatkan output FRED. (Ini adalah contoh yang dibuat-buat, karena Anda akan mendapatkan hal yang sama tanpa pasta akhir, tapi saya pikir itu memberikan rasa apa yang dapat Anda capai.)
Namun, Anda dapat mencapai efek yang sama menggunakan paket "xcb", yang sangat ringan dan juga menyediakan tampilan visual kecil 8 clipboard.
Saya menulis sepasang skrip shell wcopy / wpaste tahun lalu, untuk membuat wxcopy / wxpaste sedikit lebih menyenangkan untuk seleraku. Saya memperbarui mereka malam ini untuk bekerja dengan wxcopy / wxpaste atau xcb. Itu membuat mereka sedikit lebih kompleks dari yang seharusnya, tetapi saya akan menempelkannya di sini - semoga mereka tidak terlalu lama untuk forum ini.
Inilah 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
Dan inilah 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
Jika ada yang tertarik, saya juga menulis halaman manual untuk skrip - tetapi Anda mungkin dapat menemukannya (masih valid) dengan googling wcopy.1x dan wpaste.1x
xclip -sel clip
. Saya pribadi menggunakannya sepanjang waktu