मैं विंडोमेकर से उपयोगिताओं 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
xclip -sel clip
। मैं व्यक्तिगत रूप से हर समय उस का उपयोग करता हूं