Come incollare i comandi in un TTY?


20

Ho alcuni comandi e percorsi di file piuttosto lunghi che ho copiato negli Appunti e che devo eseguire in un TTY, tuttavia i percorsi dei file sono troppo lunghi per riscrivere e vorrei semplicemente incollarli dopo il $(posso digitare nuovamente i comandi prima loro allora), c'è un modo per farlo?

Quindi vorrei eseguire un comando e averlo sulla riga successiva a partire da $mettere il testo copiato negli appunti in questo modo:

$ specialCommandToPasteText
$ pastedText

Sto eseguendo Ubuntu GNOME 16.04 con GNOME 3.20.


3
Incollare i comandi in uno script Bash in un editor di testo, quindi eseguire lo script dal TTY?
Nick Weinberg,

@NickWeinberg: Non proprio un'opzione, questo è tutto nella CLI e i programmi che ho in esecuzione lì hanno solo la capacità di copia.

2
Da quale programma / i stai copiando?
Nick Weinberg,

Stai utilizzando gpmper fornire il supporto del mouse nel VT, come suggerito nella tua risposta a una domanda precedente ?
Steeldriver,

1
Una possibile soluzione sarebbe quella di utilizzare la funzionalità copia / incolla in tmux o schermo
Nick Weinberg,

Risposte:


28

È semplice, ma è necessario uno strumento aggiuntivo.

  1. Installa il pacchetto xselche fornisce un semplice comando per accedere agli appunti:

    sudo apt-get install xsel
    
  2. Scopri quale $DISPLAYdesktop sta utilizzando. Di solito dovrebbe essere :0, ma puoi verificarlo eseguendo questo comando in un emulatore di terminale sul desktop della GUI:

    echo $DISPLAY
    

    Presumo che l'output sia :0, sostituirlo con l'output effettivo nei seguenti comandi se è diverso.

  3. Copia il comando che desideri eseguire nel TTY, ad esempio utilizzando Ctrl+ C.

  4. Passare al TTY che si desidera utilizzare, ad es. Al TTY1 utilizzando Ctrl+ Alt+ F1.
    Accedi digitando il tuo nome utente e password.

  5. Immettere il comando completo che si desidera eseguire, ma sostituire la parte che si desidera inserire dagli Appunti con $(DISPLAY=:0 xsel -ob).

    Ad esempio, se hai copiato un ampio elenco di pacchetti da installare, puoi digitare questo nel TTY:

    sudo apt-get update && sudo apt-get install $(DISPLAY=:0 xsel -ob)
    

    Lo snippet degli Appunti non deve necessariamente essere alla fine del tuo comando, ma potrebbe apparire ovunque.


Per semplificare ulteriormente le cose, spostiamolo ancora un po 'complicato DISPLAY=:0 xsel -obin uno script. Lo chiamerò PASTE(perché pasteè già stato preso), ma puoi anche chiamarlo in modo diverso.

Per creare il file di script in una posizione in cui ogni utente può eseguirlo senza dover specificare il percorso completo (lo consiglio /usr/local/binper questo) e renderlo eseguibile, è sufficiente eseguire questi due comandi:

( echo '#!/bin/bash' && echo 'DISPLAY=:0 xsel -ob' ) | sudo tee /usr/local/bin/PASTE
sudo chmod +x /usr/local/bin/PASTE

Ora puoi semplicemente incorporare i $(PASTE)tuoi comandi su un TTY per inserire lì il contenuto degli appunti dal desktop.


2
Grazie! Questo mi aiuterà con molte più cose ora di quello che avevo chiesto inizialmente! :)

1
Puoi persino archiviarlo DISPLAY=:0 xsel -obcome alias Bash o piccolo script ovunque (chiamiamolo PASTE) e usare solo una forma abbreviata come $(PASTE)usare il contenuto degli appunti nei tuoi comandi.
Byte Commander

Approccio molto piacevole
Sergiy Kolodyazhnyy,

21

Personalmente, utilizzo solo file di testo:

  1. Nell'ambiente desktop, aprire un terminale e

    echo "whatever long text you have copied" > file
    
  2. Vai al tty e

    $(cat file)
    

2
Questo è buono a sapersi. In realtà non pensavo che un semplice comando come questo avrebbe funzionato così bene. A volte la mente pensa solo troppo complicata. Grazie! =)
Terrance

1
Uso semplicemente some-command 'shift + insert (per incollare). 'ritorno. Incollare tra virgolette singole o doppie impedisce alle nuove righe del testo incollato di eseguire il comando prima che io possa modificarlo per risolvere eventuali problemi. IDK cosa ti guadagna per mettere il testo in un file. Bash ha sequenze di tasti molto potenti per modificare le linee, come la freccia ctrl-sinistra o ctrl-destra per spostarsi con le parole. alt-backspace per eliminare le parole all'indietro. Alt-d per cancellare parole in avanti, ecc. Ecc.
Peter Cordes,

Oh, ho appena capito che l'OP significa una console di testo VT quando dice TTY. Qualcuno dovrebbe davvero modificare la domanda, perché ogni terminale su cui è possibile eseguire una shell è un tty, inclusi gli pseudo-terminali controllati da programmi simili a xterm.
Peter Cordes,

@PeterCordes sì, ma il termine "tty" è spesso, se non in modo accurato, usato per riferirsi alle console virtuali.
terdon,

4

Un'altra possibile soluzione alternativa non elencata sopra riguarda l'uso vim, l'incollaggio e l'esecuzione :!unix_commandin modalità comando:

  1. copia i comandi e il percorso negli appunti
  2. apri vim, vai in modalità comando Esc, inserisci il prompt:
  3. digitare un botto ! e quindi incollare Ctrl+ Shift+ Vil comando precedentemente copiato nel prompt ed eseguire
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.