J'ai des commandes et des chemins de fichiers assez longs que j'ai copiés dans le presse-papiers et que je dois exécuter dans un ATS, mais les chemins de fichiers sont trop longs pour être retapés et je voudrais simplement les coller après le $
(je peux retaper les commandes avant alors), existe-t-il un moyen de le faire?
Je voudrais donc exécuter une commande et l'avoir sur la ligne suivante en commençant par $
mettre le texte copié dans le presse-papiers comme suit:
$ specialCommandToPasteText
$ pastedText
J'utilise Ubuntu GNOME 16.04 avec GNOME 3.20.
gpm
pour fournir un support de souris dans le VT, comme suggéré dans votre propre réponse à une question précédente ?Réponses:
C'est simple, mais vous avez besoin d'un outil supplémentaire.
Installez le package
xsel
qui fournit une commande simple pour accéder au presse-papiers:Découvrez quel
$DISPLAY
ordinateur de bureau utilise. Habituellement, cela devrait être le cas:0
, mais vous pouvez le vérifier en exécutant cette commande dans un émulateur de terminal sur votre bureau GUI:Je suppose que la sortie est
:0
, remplacez-la par votre sortie réelle dans les commandes suivantes si elle est différente.Copiez la commande que vous souhaitez exécuter dans le TTY, par exemple en utilisant Ctrl+ C.
Passez au TTY que vous souhaitez utiliser, par exemple au TTY1 à l'aide de Ctrl+ Alt+ F1.
Connectez-vous en tapant votre nom d'utilisateur et votre mot de passe.
Entrez la commande complète que vous souhaitez exécuter, mais remplacez la pièce que vous souhaitez insérer à partir du presse-papiers
$(DISPLAY=:0 xsel -ob)
.Par exemple, si vous avez copié une grande liste de packages à installer, vous pouvez taper ceci dans le TTY:
L'extrait de presse-papiers ne doit pas nécessairement être à la fin de votre commande, il peut apparaître n'importe où.
Pour simplifier encore les choses, déplaçons cela encore un peu compliqué
DISPLAY=:0 xsel -ob
dans un script. Je vais le nommerPASTE
(parce quepaste
c'est déjà pris), mais vous pouvez aussi l'appeler différemment.Pour créer le fichier de script dans un emplacement où chaque utilisateur peut l'exécuter sans avoir à spécifier le chemin complet (je le recommande
/usr/local/bin
pour cela) et pour le rendre exécutable, exécutez simplement ces deux commandes:Maintenant, vous pouvez simplement intégrer
$(PASTE)
vos commandes sur un TTY pour y insérer le contenu du presse-papiers de votre bureau.la source
DISPLAY=:0 xsel -ob
tant qu'alias Bash ou petit script n'importe où (nommons-lePASTE
) et n'utiliser qu'un formulaire raccourci comme$(PASTE)
pour utiliser le contenu du presse-papiers dans vos commandes.Personnellement, j'utilise juste des fichiers texte:
Dans votre environnement de bureau, ouvrez un terminal et
Passez au tty et
la source
some-command '
shift + insert (pour coller).'
revenir. Le collage à l'intérieur de guillemets simples ou doubles empêche les sauts de ligne dans le texte collé d'exécuter la commande avant que je puisse le modifier pour résoudre les problèmes. IDK ce qu'il vous gagne pour mettre le texte dans un fichier. Bash a des touches d'édition de ligne très puissantes, comme la flèche ctrl-gauche ou ctrl-droite pour se déplacer par les mots. alt-backspace pour supprimer les mots en arrière. Alt-d pour supprimer les mots suivants, etc. etc.Une autre solution de contournement possible non répertoriée ci-dessus implique l'utilisation
vim
, le collage et l'exécution:!unix_command
en mode commande:vim
, passer en mode commande Esc, entrer l'invite:la source