ฉันเคยใช้ยูทิลิตี้ wxcopy และ wxpaste จาก windowmaker แต่ดูเหมือนว่าลีนุกซ์รุ่นล่าสุด (หรือเวอร์ชั่น X) จะแตกหัก - ฉันสงสัยว่าระบบความปลอดภัยได้ถูกทำให้รัดกุมขึ้นและไม่ได้รับการอัพเดตให้ตรงกัน เช่นคุณสามารถทำสิ่งต่าง ๆ เช่น:
echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste
เพื่อรับเอาต์พุต FRED (เป็นตัวอย่างที่ได้วางแผนไว้เนื่องจากคุณจะได้รับสิ่งเดียวกันโดยไม่มี 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
หากใครสนใจฉันเขียน man page สำหรับสคริปต์ด้วย - แต่คุณอาจพบพวกมัน (พวกมันยังใช้ได้) โดย googling wcopy.1x และ wpaste.1x
xclip -sel clip
ได้ ฉันใช้ส่วนตัวตลอดเวลา