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.
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
).
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
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).
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
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.
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.
Utilisation de X11:
xclip -o > file
Si vous pouvez lire le fichier, le problème d'accès concerne le serveur de destination.
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.