Lors du lancement de commandes dans CLI, je veux copier la commande que je viens de tirer ou tout ce que j'ai écrit dans le terminal et la coller ailleurs sans utiliser de souris.
Comme dans l'image suivante, je veux copier la commande de mise à jour (complètement ou partiellement) sans utiliser la souris et la coller quelque part.
terminal
gnome-terminal
copy-paste
Prayagupd
la source
la source
Réponses:
Vous pouvez utiliser au
screen(1)
sein de votre émulateur de terminal de choix (xterm
,gnome-terminal
...).La fonctionnalité dont vous avez besoin est intégrée
screen
. Vous devez vous familiariser avec son fonctionnement:Vous pouvez "copier" la commande et "coller" dans un autre terminal.
screen
est amusant et une fois que vous commencez à l'utiliser, vous vous demanderez comment il est possible que vous ne l'utilisiez pas du tout.la source
screen
commande, donc je l'ai installé dans gnome-terminal et j'ai commencéscreen
dans un terminal. Mais je n'ai pas pu commencer par la suite. De plus, je n'ai pas compris ce que vous entendez par écran intégré.man screen
. En outre, j'ai écrit intégré à l' écran », ce qui signifie la copie / coller fonctionnalité est présent dansscreen
par le design .space
touche pour sélectionner la zone souhaitée. Vous devez utiliserY
pour copier toute la ligne ou la zone souhaitée. L'écran estvi
adapté aux mouvements.AltGr
clé? J'aiAlt
screen
outil ne fonctionne pas a expliqué ici. Et cela ne semble pas apporter de réponse à la question.En plus des réponses déjà fournies, vous pouvez envisager de passer à un émulateur de terminal plus flexible.
Si vous étiez prêt à changer les terminaux en rxvt-unicode , vous pourriez utiliser un outil comme urxvt-perls : une collection de scripts qui fournissent les fonctionnalités de clavier suivantes dans cet émulateur de terminal:
Vous installez simplement le package, puis ajoutez quelques lignes à votre
~/.Xresources
, et vous pouvez ensuite débrancher le rongeur pour de bon.la source
Vous pouvez le faire en utilisant un programme comme
xclip
:Une fois que vous l'avez installé, vous pouvez l'utiliser pour vous connecter à votre presse-papiers X. Malheureusement, cela ne fonctionnera pas dans votre
mysql
environnement (il a son propre tampon pour les lignes copiées) mais il le sera si vous voulez exécuter une commande «normale». Par exemple :Tapez CtrlApour aller au début de la ligne, mettez la commande entre guillemets puis faites-la écho:
Vous avez maintenant "Ceci est une longue ligne de commande" dans votre presse-papiers de clic du milieu.
Si vous souhaitez coller sans utiliser de souris, cela dépendra de l'endroit où vous collez. Vous pouvez coller dans un autre terminal en exécutant:
Vous pouvez coller dans le même terminal, simplement en tuant (coupant) la commande avec CtrlKpuis en collant avec CtrlY.
Vous pouvez également enregistrer des commandes sur plusieurs terminaux à l'aide de l'historique de bash. Ajoutez cette ligne à votre
~/.bashrc
:PROMPT_COMMAND
est une variable bash spéciale. S'il est défini, la valeur est exécutée en tant que commande avant d'émettre une nouvelle invite.history -a
écrira l'historique de la session en cours dans le fichier historique ethistory -r
rechargera ce fichier. Cela signifie que chaque commande que vous exécutez sera immédiatement écrite dans le fichier historique.Maintenant, lorsque vous exécutez une longue ligne de commande, vous pouvez basculer vers un autre terminal et appuyer sur Retour (juste pour exécuter
$PROMT_COMMAND
, ou ouvrir une nouvelle fenêtre de terminal) et il sera accessible à l'historique de ce terminal. Si vous frappez maintenant, Upvous pouvez l'exécuter sur le nouveau terminal.la source
$ xclip -o
n'est pas ce que je veux parce qu'il imprime juste ce que jexclipe
d. Mais +1 pourCtrl+A
suiviCtrl+K
etCtrl+Y
pour couper et coller au moins dans le même terminal.@evilsoup a suggéré une bonne solution mais elle casse souvent.
Une solution rapide
Voici une solution qui ne casse jamais .
Exécutez simplement cette commande et elle copiera la commande que vous venez d'exécuter dans le presse-papiers.
Fondamentalement, ce qu'il fait, c'est qu'il imprime votre historique de commandes et prend l'avant-dernière commande et l'alimente dans votre presse-papiers (la dernière commande est elle-même, donc il sélectionne l'avant-dernière commande).
Une fonction personnalisée
En développant la solution rapide, voici une petite fonction que j'ai écrite qui est assez intelligente et copiera la dernière commande utilisée. Vous pouvez également fournir des arguments numériques pour copier la dernière commande. Par exemple, pour copier l'avant-dernière commande fournir
2
comme argumentCopiez-collez la fonction ci-dessus dans votre
~/.bashrc
fichier. Notez que si vous placez cela dans un fichier de script bash séparé et exécutez le script, cela ne fonctionnera pas car la commande history ne pourra pas accéder à votre historique dans ce cas.Enfin, exécutez-le en tant que:
De plus, une fonctionnalité intéressante ajoutée à cette fonction est qu'elle se supprime de l'historique après son exécution. Cela est utile car l'index "en arrière" des commandes ne change pas.
la source
screen
. La deuxième réponse la mieux notée avait également supposébash
etlinux
. De plus, supposerbash
n'est pas un gros problème car le script fonctionnerait toujours dans zsh ou dans la plupart des autres shells.Cette commande utilise l'expansion de l'historique de bash (se
!!
développe donc dans la dernière ligne que vous avez tapée dans le terminal). Vous devrez probablement installer soitxclip
ouxsel
.Cela placera votre dernière commande dans le presse-papiers Ctrl+ v, vous pourrez donc coller dans n'importe quel programme GUI (ou avec Ctrl+ Shift+ vdans la plupart des émulateurs de terminal, ou avec
"+p
dans vim).Cela se cassera pour certaines lignes contenant des guillemets doubles, par exemple:
Cela fonctionnera cependant pour la commande que vous avez donnée en exemple; vous ne devriez avoir de problèmes que si les guillemets doubles s'échappent
;
&
&&
|
||
et ainsi de suite.la source
echo !!
et cela fonctionnera parfaitement (sauf dans le cas improbable où votre commande précédente a commencé avec-n
ou-e
ou les quelques autres options quiecho
se prennent).Ce n'est peut-être pas la solution la plus pratique mais je l'utilise et elle peut donc être utile pour d'autres plus elle ne nécessite aucune installation logicielle supplémentaire.
Vous devez créer un fichier temporaire dans n'importe quel répertoire pratique
Transférez la direction ou le texte requis dans ce fichier. Pour transférer la direction, vous pouvez utiliser
Pour obtenir des instructions à partir de la commande d'utilisation de fichier
Pour copier et coller des commandes, ce système fonctionnera bien sûr. J'espère que cela a été utile
la source