Tôi đã từng sử dụng các tiện ích wxcopy và wxpaste từ windowmaker, nhưng các phiên bản Linux gần đây (hoặc phiên bản X) dường như đã phá vỡ chúng - Tôi nghi ngờ bảo mật đã được thắt chặt và chúng chưa được cập nhật để phù hợp. Ví dụ: bạn có thể làm những việc như:
echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste
để có được đầu ra FRED. (Đó là một ví dụ giả định, vì bạn sẽ nhận được điều tương tự mà không có wxpaste cuối cùng, nhưng tôi nghĩ nó mang lại hương vị của những gì bạn có thể đạt được.)
Tuy nhiên, bạn có thể đạt được hiệu ứng tương tự bằng cách sử dụng gói "xcb", rất nhẹ và cũng cung cấp một màn hình hiển thị nhỏ (tóm tắt) gồm 8 bảng ghi.
Tôi đã viết một cặp kịch bản shell wcopy / wpaste năm trước, để làm cho wxcopy / wxpaste dễ chịu hơn một chút theo sở thích của tôi. Tôi đã cập nhật chúng tối nay để làm việc với wxcopy / wxpaste hoặc xcb. Điều đó làm cho chúng phức tạp hơn một chút so với mức cần thiết, nhưng tôi sẽ dán chúng vào đây - hy vọng chúng không quá dài cho diễn đàn này.
Đây là 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
Và đây là 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
Nếu bất cứ ai quan tâm, tôi cũng đã viết các trang dành cho kịch bản - nhưng có lẽ bạn có thể tìm thấy chúng (chúng vẫn còn hiệu lực) bằng cách googling wcopy.1x và wpaste.1x
xclip -sel clip
. Cá nhân tôi sử dụng nó mọi lúc