J'ai des commandes assez longues et des chemins de fichiers que j'ai copiés dans le presse-papiers et que je dois exécuter dans un TTY, mais les chemins de fichiers sont trop longs à retaper et je voudrais simplement les coller après le $
(je peux retaper les commandes avant eux alors), y a-t-il un moyen de faire cela?
Donc, je voudrais exécuter une commande et l'avoir sur la ligne suivante commençant par $
mettre le texte copié dans le presse-papier comme suit:
$ specialCommandToPasteText
$ pastedText
J'utilise Ubuntu GNOME 16.04 avec GNOME 3.20.
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:
Sudo apt-get install xsel
Découvrez le $DISPLAY
utilisé par votre bureau. Généralement, il devrait s'agir de :0
, mais vous pouvez le vérifier en exécutant cette commande dans un émulateur de terminal sur le bureau de votre interface graphique:
echo $DISPLAY
Je supposerai 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.
Basculez sur le TTY que vous souhaitez utiliser, par exemple à TTY1 en utilisant 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 partie que vous souhaitez insérer dans le Presse-papiers par $(DISPLAY=:0 xsel -ob)
.
Par exemple, si vous avez copié une longue liste de packages à installer, vous pouvez taper ceci dans le TTY:
Sudo apt-get update && Sudo apt-get install $(DISPLAY=:0 xsel -ob)
L'extrait de Presse-papiers ne doit pas nécessairement figurer à la fin de votre commande, il peut apparaître n'importe où.
Pour simplifier les choses davantage, déplaçons ceci toujours un peu compliqué DISPLAY=:0 xsel -ob
dans un script. Je l'appellerai PASTE
(car paste
est déjà utilisé), mais vous pouvez aussi l'appeler différemment.
Pour créer le fichier de script à un emplacement où chaque utilisateur peut l'exécuter sans avoir à spécifier le chemin complet (je recommande /usr/local/bin
pour cela) et pour le rendre exécutable, exécutez simplement ces deux commandes:
( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | Sudo tee /usr/local/bin/PASTE
Sudo chmod +x /usr/local/bin/PASTE
Maintenant, vous pouvez simplement intégrer $(PASTE)
dans vos commandes sur un téléscripteur pour insérer le contenu du presse-papiers à partir de votre bureau.
Personnellement, je viens d'utiliser des fichiers texte:
Dans votre environnement de bureau, ouvrez un terminal et
echo "whatever long text you have copied" > file
Déposer au tty et
$(cat file)
Une autre solution de contournement possible non répertoriée ci-dessus implique l'utilisation de vim
, le collage et l'exécution de :!unix_command
en mode commande:
vim
, passez en mode commande Esc, entrez l'invite :