Comment copier un texte de mon xterm sans souris?
je veux utiliser une partie de la sortie d'une commande exécutée à partir de la ligne de commande dans un autre xterm, ou comme partie d'une commande Différente. Par exemple:
> grep error error.log
error: can't find file ~/<some very long path>/thisfile
et je veux faire ceci:
>ls ~/<some very long path>/
je connais deux façons de le faire:
1. copiez ~/<some very long path>/
avec la souris.
2. utilisez une combinaison de head
/ tail
/ awk
/ sed
/ perl
/ cut
/etc... pour extraire seulement ce dont j'ai besoin de la sortie et puis utiliser que à l'intérieur des bâtons arrière.
est-il possible de copier du texte sans utiliser la souris? L'exemple qui vient à l'esprit est le mode visuel à L'intérieur de VIM, mais je ne sais pas comment le faire à l'intérieur de xterm.
5 réponses
vous pouvez utiliser les commandes Copier-Coller de GNU screen.
tutoriel rapide:
- écran ouvert:
screen
(ouscreen myprog my args here
) - exécuter votre programme, la production de la production que vous voulez copier
- Entrer en mode copie: Contrôle + un + [
- déplacez votre curseur au point de départ
- Appuyez Sur Entrée
- déplacez votre curseur au point final
- Hit Entrée
- Coller: Contrôle + un + ]
écran est beaucoup plus puissant que cela (je l'utilise pour tabuler plusieurs terminaux virtuels sans avoir besoin d'un émulateur de terminal spécial, et aussi pour que je ne perds pas mon les sessions quand X s'écrase ou quelque chose). Pour sortir de l'écran, terminez simplement votre session shell, ou tapez Ctrl + a , Ctrl + \ .
je trouve XSel est utile dans des situations similaires. C'est un outil qui manipule la sélection. Par exemple, cela stockera la sortie de votre commande dans le presse-papiers:
grep error error.log | xsel -bi
vous pouvez également utiliser tmux
qui a capacités similaires à screen
. Une fois que vous êtes dans tmux
et que vous avez la sortie que vous voulez copier, Vous pouvez faire ce qui suit pour le copier et le coller:
- entrer le mode copie avec Ctrl + B , [
- déplacer le curseur avec les touches fléchées, puis commencer la sélection avec Ctrl + Espace
- déplacez le curseur pour sélectionner le texte / région à copier et ensuite copier avec Alt + W (cela vous sortira immédiatement du mode Copie)
- vous pouvez maintenant coller (dans
tmux
seulement) en utilisant Ctrl + B , ]
ces instructions supposent emacs les fixations de clés sont activées. Pour le vi reliures voir ce comparaison ou tout simplement suivre ce guide étape par étape.
l'OP a dit qu'il ne voulait pas faire cela, mais voici un moyen unique de le faire pour la postérité. Si vous apprenez ces petits utilitaires unix, ils peuvent être très puissants.
ls $ (dirname $ (grep error.log / head -1 / cut-d ""- f 5 -))
note: syntaxe from memory
vous pouvez envoyer la sortie directement au xterm concerné en utilisant le numéro de périphérique xterm. Voici la commande.
xyz$ls /home/ankit/documents/etc/x/y/z > /dev/pts/0
(ou watever est le nom du périphérique, vous pouvez l'obtenir en utilisant la commande 'w' pour xterm ouvert)
essayez - le et espérez que cela puisse résoudre votre problème.