Früher habe ich die Dienstprogramme wxcopy und wxpaste von windowmaker verwendet, aber die neuesten Linux-Versionen (oder X-Versionen) scheinen sie beschädigt zu haben. Ich vermute, die Sicherheit wurde verschärft und sie wurden nicht entsprechend aktualisiert. ZB könnten Sie Dinge tun wie:
echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste
um die Ausgabe FRED zu erhalten. (Es ist ein erfundenes Beispiel, da Sie ohne die endgültige wxpaste dasselbe erhalten würden, aber ich denke, es gibt den Geschmack dessen, was Sie erreichen können.)
Sie können den gleichen Effekt jedoch mit dem "xcb" -Paket erzielen, das unglaublich leicht ist und außerdem eine winzige (zusammengefasste) visuelle Anzeige von 8 Zwischenablagen bietet.
Ich habe vor Jahren ein paar Shell-Skripte wcopy / wpaste geschrieben, um wxcopy / wxpaste ein bisschen angenehmer für meinen Geschmack zu machen. Ich habe sie heute Abend aktualisiert, um entweder mit wxcopy / wxpaste oder xcb zu arbeiten. Das macht sie etwas komplexer als nötig, aber ich werde sie hier einfügen - hoffentlich sind sie nicht zu lang für dieses Forum.
Hier ist 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
Und hier ist 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
Wenn jemand interessiert ist, habe ich auch Manpages für die Skripte geschrieben - aber Sie können sie wahrscheinlich finden (sie sind noch gültig), indem Sie wcopy.1x und wpaste.1x googeln
xclip -sel clip
. Ich persönlich benutze das die ganze Zeit