La mia risposta offre un semplice comando in tre diverse sintassi, che funzionano tutti allo stesso modo, ma uno è un po 'più breve e più facile da digitare rispetto al secondo. La terza variante è un cosiddetto alias, il che significa che puoi assegnare al comando un nome personalizzato e chiamarlo eseguendolo senza ricordare le cose complesse.
Preparazione:
Innanzitutto, installa il pacchetto xsel
che ti consente di accedere agli Appunti X dal terminale:
sudo apt-get install xsel
Variante di comando 1 (breve):
Successivamente, è possibile digitare la seguente riga per copiare il comando precedente negli Appunti:
xsel -ib <<<!!:q
Se si desidera copiare il secondo comando più recente, sostituirlo !!
con !-2
, per il terzo utilizzo più recente !-3
e così via.
Per spiegare cosa stai eseguendo, qui una breve interruzione del comando:
xsel
è uno strumento da riga di comando per accedere agli Appunti X.
Per maggiori informazioni, leggi la sua manpage online o eseguendo man xsel
.
- Il
-i
parametro dice xsel
di leggere dallo stdin (di solito questo significa input da tastiera, ma reindirizzeremo qualcosa qui)
- Il
-b
parametro consente di utilizzare gli Appunti anziché le selezioni "primaria" o "secondaria" di X.
<<<
è una sintassi speciale di Bash chiamata "Here String".
In pratica espande (non valuta!) L'argomento (solo uno!) Dopo di esso e lo reindirizza come stringa allo stdin (input standard) del comando prima / dopo il quale si trova.
!!:q
viene chiamato "comando bang" per l'espansione della storia in bash. Si sostituisce con qualsiasi riga di comando precedentemente digitata.
Per maggiori informazioni, leggi la manpage locale eseguendo man history
(la manpage online non è utile).
- La
!!
sta per la linea di comando precedente ed è sinonimo di !-1
.
Ovviamente !-2
significa quindi la seconda ultima riga di comando. Non dimenticare il segno meno -
, altrimenti restituirà il secondo comando (3 ° / ...) che hai mai digitato.
- Le
:q
modifica il comando scoppio e dice bash racchiudere la sostituzione tra apici ( '
) per impedire un'ulteriore espansione dalla shell.
Variante di comando 2 (leggermente più lunga):
echo !!:q | xsel -ib
echo
ha il semplice compito di stampare tutti i suoi argomenti sullo stdout del terminale.
!!:q
viene chiamato "comando bang" per l'espansione della storia in bash. Si sostituisce con qualsiasi riga di comando precedentemente digitata.
- La
!!
sta per la linea di comando precedente ed è sinonimo di !-1
. Ovviamente !-2
significa quindi la seconda ultima riga di comando. Non dimenticare il segno meno -
, altrimenti restituirà il secondo comando (3 ° / ...) che hai mai digitato.
- Le
:q
modifica il comando scoppio e dice bash racchiudere la sostituzione tra apici ( '
) per impedire un'ulteriore espansione dalla shell.
|
è una pipa. Reindirizza l'output del terminale ("stdout") del comando prima dell'input del terminale ("stdin") del comando dopo di esso.
xsel
è uno strumento da riga di comando per accedere agli Appunti X.
Per maggiori informazioni, leggi la sua manpage online o eseguendo man xsel
.
- Il
-i
parametro dice xsel
di leggere dallo stdin (di solito questo significa input da tastiera, ma reindirizzeremo qualcosa qui)
- Il
-b
parametro consente di utilizzare gli Appunti anziché le selezioni "primaria" o "secondaria" di X.
Variante di comando 3 (alias):
Un alias bash è una cosa interessante se non vuoi ricordare comandi lunghi o complicati che usi spesso. È possibile assegnare questo comando a un semplice nome alias, che è possibile eseguire invece del comando lungo per ottenere lo stesso.
Sfortunatamente, poiché i comandi bang sono una funzione speciale di Bash e vengono espansi prima che gli alias vengano risolti, non puoi semplicemente alias una delle varianti sopra perché la !!
parte non funzionerà. C'è una soluzione però.
Per impostare l'alias, esegui la seguente riga nel tuo terminale. Tieni presente che puoi scegliere qualsiasi nome di variabile Bash valido anziché copylastcommand
:
alias copylastcommand='history -p \!\! | xsel -ib'
Questo è tuttavia persistente solo per la sessione Bash corrente, il che significa che l'alias svanirà dopo aver chiuso la finestra del terminale. Puoi renderlo persistente in ogni sessione di Bash aggiungendo questa riga sopra alla fine del tuo ~/.bashrc
file, o al tuo ~/.bash_aliases
file se ne hai uno.
Ancora una volta, una breve interruzione della linea:
alias name='command'
è la sintassi per impostare un alias in Bash. La command
verrà eseguito ogni volta che si esegue name
da ora in poi.
history -p \!\!
emette la riga di comando precedentemente eseguita su stdout (output standard). Senza l' -p
opzione, non solo stampa, ma esegue nuovamente il comando.
Nota che dobbiamo sfuggire a bangs ( !
) con barre rovesciate ( \
), perché altrimenti bash li espanderebbe quando proviamo a impostare l'alias, il che non ha senso in quanto devono essere nell'alias così come sono.
Ancora una volta, puoi anche specificare il comando [n] -th recente sostituendo il secondo botto con -n
, ad es \!-2
.
|
è una pipa. Reindirizza l'output standard ("stdout") del comando prima di esso allo standard terminale ("stdin") del comando dopo di esso.
xsel
è uno strumento da riga di comando per accedere agli Appunti X.
Per maggiori informazioni, leggi la sua manpage online o eseguendo man xsel
.
- Il
-i
parametro dice xsel
di leggere dallo stdin (di solito questo significa input da tastiera, ma reindirizzeremo qualcosa qui)
- Il
-b
parametro consente di utilizzare gli Appunti anziché le selezioni "primaria" o "secondaria" di X.
<<<"!!" xsel -ib