Comment puis-je copier la sortie d'une commande à distance dans le presse-papiers local?

J'utilise iTerm2 comme client de terminal dans Mac OS X. Sur le système local, je peux utiliser pbcopy et pbpaste pour transférer des données entre le Presse-papiers du système et le terminal, mais bien sûr, cela ne fonctionne pas lorsque vous êtes envoyé à un autre machine.

Existe-t-il un moyen pour que je puisse prendre le résultat d'une commande et la copier automatiquement dans le Presse-papiers? Peut-être une applescript pour saisir le texte sur iTerm Windows, puis obtenir la dernière ligne?

Par exemple, si je voulais copier le répertoire de travail actuel:

Picture-48.png

Je lance pwd , puis utilisez la souris pour sélectionner le texte, puis appuyez sur la command + c .

Existe-t-il un moyen meilleur / plus rapide / automatique de faire cela? Je ne cherche pas une solution à l'épreuve des balles qui fonctionnerait pour chaque commande (p. Ex.: Peut-être ne fonctionne-t-il pas lorsqu'il y a un énorme défilé)? Je cherche juste quelque chose pour faire cette tâche que je fais assez souvent un peu moins fastidieuse.

Mettre à jour

Je cherche à utiliser l' screen pour le faire, mais je ne suis toujours pas sûr de savoir si c'est possible.

Eh bien, je l'ai essayé et ça marche:

 echo "foo" | tee | ssh [email protected] pbcopy 

Remarques:

  • J'utilise echo "foo" comme stand-in pour la commande dont vous souhaitez copier la sortie sur votre machine client ssh .
  • J'utilise tee pour que vous puissiez le voir directement dans votre fenêtre de terminal au lieu de l'avoir englouti par la commande ssh .
  • En donnant à ssh une commande à exécuter, il enverra le stdin que ssh reçu à cette commande sur cet autre hôte, puis retourne immédiatement.

Vous pourriez probablement l'appeler à quelque chose de plus simple à saisir. Et assurez-vous d'utiliser les clés ssh au lieu de l'authentification par mot de passe pour vous éviter d'avoir à retaper votre mot de passe. Mise à jour: et vous pouvez utiliser SSH Agent Forwarding afin que vous ne devez pas mettre les informations d'identification pour accéder à votre machine locale sur la zone de la télécommande.

(NB: je ne sais pas très bien comment pbcopy / pbpaste fonctionne quand vous n'avez qu'une session ssh / tty / shell et aucun contexte Mac OS X GUI. Je pense que le carton est un concept NeXTStep / Cocoa / Aqua / GUI, pas nécessairement Quelque chose qui sort à la couche Unix sans la couche GUI).

Quand je l'ai abordé, cela a semblé secrète, mais plus je joue avec ça, plus j'aime bien.

Solution simplifiée

Sur votre ssh remote.host create /usr/local/bin/spbcopy :

 #!/bin/bash cat >$HOME/.pastebin 

Sur OSX create /usr/local/bin/spbpaste :

 #!/bin/bash ssh $* 'cat .pastebin; >$_' 

Copiez les données dans le presse-papiers en utilisant:

 [email protected]$ echo "foo" | spbcopy 

Et collez les données du presse-papiers en utilisant:

 osx$ spbpaste [email protected] 

Vous pouvez probablement utiliser le tube nommé sur un hôte distant et faire les données copiées dans le presse-papiers local automatiquement en exécutant une commande en arrière-plan, mais cela rend plus complexe la configuration.