web-dev-qa-db-fra.com

Comment coller des commandes dans un téléscripteur?

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.

20
user364819

C'est simple, mais vous avez besoin d'un outil supplémentaire.

  1. Installez le package xselqui fournit une commande simple pour accéder au presse-papiers:

    Sudo apt-get install xsel
    
  2. 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.

  3. Copiez la commande que vous souhaitez exécuter dans le TTY, par exemple. en utilisant Ctrl+C.

  4. 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.

  5. 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 pasteest 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.

28
Byte Commander

Personnellement, je viens d'utiliser des fichiers texte:

  1. Dans votre environnement de bureau, ouvrez un terminal et

    echo "whatever long text you have copied" > file
    
  2. Déposer au tty et

    $(cat file)
    
20
terdon

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:

  1. copier les commandes et le chemin dans le presse papier
  2. open vim, passez en mode commande Esc, entrez l'invite :
  3. taper un coup ! puis coller Ctrl + Shift + V la commande que vous avez précédemment copiée dans l'invite et exécutée
4
Marcellinov