Je construis un outil de ligne de commande afin de rendre certaines de mes tâches plus efficaces. Je dois pouvoir écrire du contenu dans le presse-papiers, mais pour une raison quelconque, cela ne fonctionne pas pour moi.
J'ai essayé d'installer xclip et xsel, mais les deux ont le même comportement: ils peuvent très bien lire/écrire dans le presse-papiers, mais je ne peux pas y accéder à partir de l'interface graphique principale d'Ubuntu.
Je l'ai aussi essayé dans le terminal ...
echo "hello" | xclip
Puis si Ctrl+Shift+V, Je reçois mon entrée de presse-papiers originale, pas "bonjour". Mais si j'essaie de récupérer le contenu de xclip, cela fonctionne bien.
L'objectif principal est de faire en sorte que le contenu puisse être collé dans Firefox ou tout autre programme basé sur une interface graphique que j'utilise.
Toute aide serait appréciée!
Merci
Bien, il existe plusieurs presse-papiers dans X :) Celui xclip
copie le texte par défaut est "tampon de sélection" - en général, il vous suffit de sélectionner du texte avec votre souris, puis de le coller avec le bouton central de la souris. Ce tampon est distinct de celui à partir duquel vous pouvez coller avec Ctrl-Maj-V.
Essayer
echo "hello" | xclip -selection clipboard
regarde aussi
man xclip
pour plus de détails sur xclip
J'avais l'habitude d'utiliser les utilitaires wxcopy et wxpaste de windowmaker, mais les versions récentes de Linux (ou versions X) semblent les avoir cassées - je suppose que la sécurité a été renforcée et qu'elles n'ont pas été mises à jour pour correspondre. Par exemple. vous pourriez faire des choses comme:
echo fred | wxcopy | tr "a-z" "A-Z" | wxpaste
pour obtenir la sortie FRED. (Il s'agit d'un exemple artificiel, car vous obtiendriez la même chose sans le wxpaste final, mais je pense que cela donne une idée de ce que vous pouvez réaliser.)
Cependant, vous pouvez obtenir le même effet en utilisant le paquetage "xcb", qui est incroyablement léger et fournit également un affichage visuel minuscule (résumé) de 8 presse-papiers.
J'ai écrit une paire de scripts Shell il y a plusieurs années, afin de rendre wxcopy/wxpaste un peu plus agréable à mon goût. Je les ai mis à jour ce soir pour fonctionner avec wxcopy/wxpaste ou xcb. Cela les rend un peu plus complexes qu'ils ne le devraient, mais je vais les coller ici - espérons qu'ils ne seront pas trop longs pour ce forum.
Voici la copie:
#!/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
Et voici 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
Si cela vous intéresse, j’ai aussi écrit des pages de manuel pour les scripts - mais vous pouvez probablement les trouver (elles sont toujours valables) en googlant wcopy.1x et wpaste.1x
Pour me faciliter la tâche, j'ai créé un alias pour xclip
afin de reproduire les fonctionnalités de pbcopy
et et pbpaste
dans macosx.
Sudo apt-get install xclip -y
puis éditez votre ~/.bashrc
pour ajouter des alias
nano ~/.bashrc
ajouter ces lignes
alias pbcopy='xclip -selection clipboard'
alias pbpaste='xclip -selection clipboard -o'
Enregistrez et quittez, puis ouvrez un nouveau Shell ou exécutez source ~/.bashrc
pour utiliser les alias.
Mon blog contient plus de détails.