Comment copier le contenu d'un fichier sous UNIX sans afficher le contenu du fichier. Je ne veux pas chat ou vi pour voir le contenu.
Je veux les copier dans le presse-papiers pour pouvoir les coller dans mon bloc-notes Windows.
Je ne peux pas copier le fichier de ce serveur vers un autre en raison de restrictions d'accès.
Réponse acceptée :
X11
Si vous utilisez X11 (l'interface graphique la plus courante sur les systèmes traditionnels basés sur Unix ou Linux), pour copier le contenu d'un fichier dans la sélection X11 CLIPBOARD sans afficher dessus, vous pouvez utiliser le xclip
ou xsel
utilitaire.
xclip -sel c < file
Ou :
xsel -b < file
pour stocker le contenu du file
comme sélection CLIPBOARD X11.
Pour stocker la sortie d'une commande :
mycommand | xclip -sel c
mycommand | xsel -b
Notez qu'il doit être stocké à l'aide d'un encodage UTF-8, sinon le collage ne fonctionnera pas correctement. Si le file
est encodé à l'aide d'un autre jeu de caractères, vous devez d'abord convertir en UTF-8, comme :
<file iconv -f latin1 -t utf8 | xclip -sel c
pour un fichier encodé en latin1 /iso8859-1 .
xsel
ne fonctionne pas avec des données binaires (il n'accepte pas les octets nuls), mais xclip
fait.
Pour le stocker en tant que CUT_BUFFER (ceux-ci sont encore interrogés par certaines applications comme xterm
lorsque rien ne réclame les sélections CLIPBOARD ou PRIMARY X et n'a pas besoin d'avoir un processus en cours d'exécution pour le servir comme pour les sélections), bien que vous ne vouliez ou n'ayez probablement pas besoin de l'utiliser de nos jours :
xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"
(supprime les caractères de fin de ligne de file
).
Écran GNU
GNU screen
a le readbuf
commande pour glisser le contenu d'un fichier dans son propre tampon copier-coller (que vous collez avec ^A]
). Donc :
screen -X readbuf file
Apple OS/X
Même si Apple OS/X peut utilisez X11. Ce n'est pas le cas par défaut, sauf si vous exécutez une application X11. Vous pourriez utiliser xclip
ou xsel
car OS/X devrait synchroniser la sélection X11 CLIPBOARD avec les tampons de presse-papier OS/X, mais ce serait un peu inutile de démarrer le serveur X11 juste pour ça.
Sous OS/X, vous pouvez utiliser le pbcopy
commande pour stocker du contenu arbitraire dans tableau de montage tampons :
pbcopy < file
(le codage des caractères du fichier doit être celui de la locale). Pour stocker la sortie d'une commande :
mycommand | pbcopy
Coquillages
La plupart des shells ont leurs propres tampons copier-coller. En mode emacs, les opérations couper et copier stockent le texte copié/coupé sur une pile que vous copiez/collez avec Ctrl-Y , et faites défiler avec Alt+Y
En relation :Prenez la première colonne de 2 fichiers et écrivez-la dans un 3ème fichier ?zsh CUTBUFFER/killring
En zsh
, la pile est stockée dans le $killring
tableau et le haut de la pile dans le $CUTBUFFER
variable bien que ces variables ne soient disponibles qu'à partir des widgets Zsh Line Editor (zle) et que quelques widgets spécialisés soient le moyen préféré de les manipuler.
Parce que ceux-ci ne sont disponibles que via le ZLE, le faire avec des commandes est un peu compliqué :
zmodload zsh/mapfile
zle-line-init() {
if [ -n "$FILE_TO_COPY" ]; then
zle copy-region-as-kill $mapfile[$FILE_TO_COPY]
unset FILE_TO_COPY
fi
}
mycommand | pbcopy
mycommand | pbcopy
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A
Le zle-line-init
widget spécial est exécuté une fois au début de chaque nouvelle invite de commande. Cela signifie que le fichier ne sera copié qu'à la prochaine invite. Par exemple, si vous faites :
file-copy file; sleep 2
Le fichier ne sera copié qu'après ces 2 secondes.