J’utilise macOS (enfin Mac OS X) depuis plus de 15 ans et je ne connaissais pas cette fonction : il est possible d’accéder au presse-papier de macOS en ligne de commande.
C’est grâce à David Legrand (qui n’a pas oublié la devise de Next Inpact) que j’ai découvert les deux commandes.
Il faut commencer par pbcopy
, qui permet d’envoyer des données dans le presse-papier.
Il y a deux commandes intéressantes en pratique. D’abord, il est possible de copier le contenu d’un fichier texte dans le presse-papier directement en ligne de commande. Le <
indique le sens (du fichier vers la commande).
pbcopy < texte.txt
Ensuite, il est aussi possible de copier le contenu du résultat d'un commande dans le presse-papier. Il faut ajouter un |
(pipe, option
+ shift
+ l
sous macOS) derrière la commande, pour rediriger le résultat vers le presse-papier à travers pbcopy
. Attention, vous n'aurez pas de retour visuel si vous faites une commande ls
(qui liste les fichiers).
ls | pcopy
La seconde, pbpaste
, permet de récupérer le contenu du presse-papier. Elle fonctionne uniquement avec du texte (on ne peut pas récupérer une image copiée, par exemple) et il y a quelques possibilités intéressantes.
La commande la plus intéressante est la possibilité de copier le contenu du presse-papier dans un fichier, et c'est assez simple. le >
indique encore le sens : de la commande vers un fichier. Il est possible d'ajouter -Prefer rtf
pour coller du texte mis en forme (par défaut, on est en texte brut).
pbpaste > texte.txt
Plus complexe, il est possible de combiner les deux commandes. Un exemple est par exemple la possibilité d'encoder le contenu du presse-papier en base64. On colle le presse-papier (pbpaste
), on pipe la commande base64
puis on (re)pipe le tout vers le presse-papier avec pbcopy
.
pbpaste | base64 | pbcopy
Pour les amateurs, il est même possible d'employer des expressions régulières entre deux pipe, ce vieux man donne un exemple qui remplace une espace par un %20
par exemple, pour un encodage dans une URL.
pbpaste | sed 's/ /%20/g' | pbcopy
Je pense que ça nécessite un peu d'habitude, mais pour ceux qui aiment la ligne de commande (et qui ne connaissent pas les deux commandes), c'est visiblement diablement efficace.
Waouw… ces commandes + Keyboard Maestro (ou quick keys) il y a de quoi faire des
choses pas mal ! en utilisant « >> file » plutôt que « > file »
je me coucherai moins bête ce soir
merci Pierre, c’est dingue d’apprendre des trucs tous les jours sur ce blog.
Faudrait le renommer « Se coucher moins bête sur mac »
Merci je connaissais pas ses commandes shell du Mac. J’ai tendance a utiliser que celle que je connait sous Linux.
Comme « tee » pour garder l’affichage d’un commande après un pipe et aussi recopier son résultat dans un fichier.
ls | tee -a /tmp/copy.txt && pbcopy < /tmp/copy.txt
L'option -a de tee permet de garder l'affichage et de copier le résultat dans un fichier
&& de lancer la commande suivante en cas succès de la commande précédante
ce qui permet de mettre son contenue dans le presse papier dans ce cas.