web-dev-qa-db-fra.com

Copiez le contenu d'un fichier dans le presse-papiers sans afficher son contenu

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 afin de pouvoir les coller à nouveau sur mon bloc-notes Windows.

Je ne peux pas copier le fichier de ce serveur vers un autre en raison de restrictions d'accès.

87
Web Nash

X11

Si vous utilisez X11 (l'interface graphique la plus courante sur les systèmes traditionnels Unix ou Linux), pour copier le contenu d'un fichier dans la sélection X11 CLIPBOARD sans afficher , vous pouvez utiliser l'utilitaire xclip ou xsel.

xclip -sel c < file

Ou:

xsel -b < file

Pour stocker le contenu de file en tant que sélection CLIPBOARD X11.

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é en utilisant un autre jeu de caractères, vous devez d'abord convertir en UTF-8, comme:

iconv -f latin1 -t utf8 | xclip -sel c

Pour un fichier encodé en latin1 / iso8859-1 .

Pour le stocker en tant que CUT_BUFFER (ceux-ci sont toujours interrogés par certaines applications comme xterm quand 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 voudra probablement pas ou n'aura pas besoin de l'utiliser de nos jours:

xprop -root -format CUT_BUFFER0 8s -set CUT_BUFFER0 "$(cat file)"

(supprime les caractères de nouvelle ligne de fin de file).

Écran GNU

GNU screen a la commande readbuf pour Slurp le contenu d'un fichier dans son propre tampon de copier-coller (que vous collez avec ^A]). Donc:

screen -X readbuf file

Apple OS/X

Bien que Apple OS/X peut utiliser X11. Il ne fonctionne par défaut que si vous exécutez une application X11. Vous serait en mesure d'utiliser xclip ou xsel car OS/X devrait synchroniser la sélection X11 CLIPBOARD avec les tampons OS/X, mais ce serait un peu inutile de démarrer le serveur X11 juste pour ça.

Sous OS/X, vous pouvez utiliser la commande pbcopy pour stocker du contenu arbitraire dans des tampons de table de montage :

pbcopy < file

(le codage des caractères du fichier devrait être celui des paramètres régionaux).

Coquilles

La plupart des shells ont leurs propres tampons copier-coller. En mode emacs, les opérations de coupe et de copie stockent le texte copié/coupé sur une pile avec laquelle vous tirez/collez Ctrl-Yet parcourez avec Alt+Y

zsh CUTBUFFER/killring

Dans 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 quelques widgets spécialisés sont 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
}
zle -N zle-line-init
file-copy() FILE_TO_COPY=$1:A       

Le zle-line-init le 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'à l'invite suivante. Par exemple, si vous le faites:

file-copy file; sleep 2

Le fichier ne sera copié qu'après ces 2 secondes.

100
Stéphane Chazelas

Peut-être que vous vouliez demander ceci . Mais tout fichier que vous souhaitez lire doit être ouvert par un appel système. Si vous n'avez pas accès à un fichier, vous ne pouvez pas le lire. C'est l'idée d'un accès restreint.

2
ikrabbe

Utilisation de X11:

xclip -o > file

Si vous pouvez lire le fichier, le problème d'accès concerne le serveur de destination.

0
tjombka

J'ai installé xclip et créé un script nommé "copie" qui prend un nom de fichier comme argument.

#! /bin/bash
xclip -selection clipboard -i $@

Exemple d'utilisation: copy id_rsa.pub copie ma clé publique dans le presse-papiers.

0
ahoffer