Come copiare e incollare testo nella shell Bash di Linux

Vuoi copiare e incollare dalla riga di comando della shell Bash? Ti mostreremo più tecniche se preferisci la tastiera o il mouse. Funzionano sia su un desktop grafico che su un TTY tradizionale basato su testo.

Le solite scorciatoie da tastiera non funzioneranno

Copiare e incollare il testo è una parte fondamentale dell’utilizzo di un computer. Quando le persone usano un computer Linux per le prime volte, sia che provengano dal mondo Windows o macOS, sono spesso confuse quando provano a copiare e incollare all’interno di una finestra di terminale.

In Windows, usi Ctrl + C per copiare una sezione del testo evidenziato e Ctrl + V per incollarla. In macOS, usi Command + C per copiarlo e Command + V per incollarlo. Seguono la stessa convenzione di C per copiare e V per inserire.

Quelle stesse sequenze di tasti funzionano nella maggior parte delle applicazioni grafiche Linux, come l’editor gedit o il LibreOffice suite per ufficio.Ctrl + C copia il testo evidenziato e Ctrl + V lo incolla in corrispondenza del cursore. Il nostro nuovo arrivato a Linux probabilmente non pensa nemmeno al fatto che queste convenzioni sono state applicate a queste applicazioni. Usano le sequenze di tasti dalla memoria muscolare e vanno avanti con il loro lavoro.

Una volta che il nostro nuovo arrivato apre una finestra di terminale e prova a copiare e incollare in Bash shell prompt dei comandi, tutto cambia. Ctrl + C e Ctrl + V erano funzioni assegnate molto prima che si pensasse a copiare e incollare. In effetti, quei tasti premuti sono stati reclutati molto tempo prima che venissero inventati i gusci grafici, quando una telescrivente (TTY) era una cosa fisica.

Ctrl + C e Ctrl + V nei TTY

Quando un TTY era un dispositivo fisico, Ctrl + C è stato scelto come comoda combinazione di tasti per generare un segnale. Quel segnale è SIGINT, che indica al processo corrente di terminare. Poiché una finestra di terminale è un TTY emulato, quella combinazione di tasti (e molte altre) è stata preservata e replicata nell’emulazione. Notare che è la finestra del terminale che è l’emulazione. La shell Bash è un programma in esecuzione in quel TTY emulato.

Possiamo facilmente vedere le funzioni che sono state assegnate a Ctrl + C e Ctrl + V. Supponiamo di digitare il seguente comando e di premere “Invio”.

ls -R /

Poiché stiamo utilizzando l’opzione -R (ricorsiva), il comando ls inizierà a elencare ogni file e directory, a partire dalla directory principale. Dopo un paio di momenti, ti rendi conto che non è quello che volevi, quindi interrompi il processo premendo Ctrl + C.

Ctrl+C

Ctrl + C in una finestra di terminale

Il processo ls è terminato. La prova visibile di Ctrl + C è evidenziata nello screenshot. Viene visualizzato come ^ C.

La combinazione di tasti Ctrl + V richiama “inserimento letterale”. Ciò ti consente di inserire una rappresentazione di una chiave in ciò che stai digitando, invece di ottenere l’effetto della chiave. Per vederlo, prova i seguenti comandi (non digitare le virgole). (Ad esempio, per provare il primo, premere Ctrl + V e quindi premere Invio.)

Ctrl+V, Enter
Ctrl+V, PgDn
Ctrl+V, RightArrow
Ctrl+V, Esc

Ctrl + V, Invio in una finestra di terminale

In breve, potresti notare che Invio è rappresentato da ^ M. Abbiamo visto prima che Ctrl + C si presentava come ^ C. Sembrerebbe che ^ rappresenti Ctrl. Quindi Ctrl + M probabilmente significa lo stesso di Invio. Significa che possiamo inserire Invio digitando Ctrl + M? Provalo in una finestra di terminale. Vedrai che lo fa.

Quindi, chiaramente non possiamo aspettarci che Ctrl + C e Ctrl + V eseguano la copia e incolla del testo quando hanno già assegnate funzioni consacrate. Allora cosa possiamo usare?

Ctrl + Maiusc + C e Ctrl + Maiusc + V

Ricordati facilmente perché sono molto simili alle loro controparti, Ctrl + Maiusc + C e Ctrl + Maiusc + V sono sostituzioni dirette di Ctrl + C e Ctrl + V.

Se evidenzi il testo nella finestra del terminale con il mouse e premi Ctrl + Maiusc + C copierai quel testo in un buffer degli appunti.

Ctrl+Shift+C

Ctrl + Maiusc + C in una finestra di terminale

Puoi usare Ctrl + Maiusc + V per incollare il testo copiato nella stessa finestra di terminale o in un’altra finestra di terminale.

Ctrl+Shift+V

Ctrl + Maiusc + V in una finestra del terminale

Puoi anche incollare in un’applicazione grafica come gedit. Nota, quando incolli in un’applicazione e non in una finestra di terminale, devi usare Ctrl + V.

Incollare da una finestra di terminale nell'editor di gedit

E puoi anche andare dall’altra parte. Puoi evidenziare il testo in gedit e premere Ctrl + C, quindi incollarlo in una finestra del terminale usando Ctrl + Maiusc + V.

Copia dall'editor di gedit e incolla in una finestra di terminale

La combinazione di tasti Ctrl + Ins è la stessa di Ctrl + Maiusc + C e la combinazione Maiusc + Ins è la stessa di Ctrl + Maiusc + V. L’avvertenza qui è che questi possono essere utilizzati solo all’interno della stessa finestra di terminale.

Utilizzando il mouse: fare clic con il pulsante destro del mouse

Puoi usare il mouse per copiare e incollare in una finestra di terminale. Devi usare il mouse per evidenziare il testo che intendi copiare, quindi perché non usarlo per eseguire le azioni di copia e incolla?

Dopo aver evidenziato del testo, fare clic con il tasto destro del mouse e selezionare “Copia” dal menu contestuale.

finestra di terminale con menu contestuale e copia evidenziata

Per incollare il testo copiato, fare nuovamente clic con il tasto destro del mouse e selezionare “Incolla” dal menu contestuale.

finestra di terminale con menu contestuale e incolla selezionato

Il testo viene incollato nella posizione del cursore sulla riga di comando. In questo esempio, il percorso relativo è stato fornito in modo errato e Bash non può cambiare directory. L’utente ha mancato il “~ /” dall’inizio del percorso. Hanno digitato “~ /” e poi copiato il resto del percorso dal loro tentativo precedente e lo hanno incollato nella seconda riga di comando.

Quando premono Invio, vengono spostati nella directory.

finestra di terminale con una directory modificata ottenuta tramite copia e incolla

Questo esempio mostrava come incollare nella stessa finestra di terminale, ma puoi usare questa tecnica di clic con il tasto destro per incollare in diverse finestre di terminale. Puoi anche incollare in applicazioni grafiche usando questo metodo.

Utilizzo del mouse: pulsante centrale

C’è un modo ancora più veloce per copiare e incollare usando il mouse, purché il tuo mouse abbia un pulsante centrale. Se premi la rotella di scorrimento (delicatamente!) E fa clic, hai un pulsante centrale.

Evidenzia del testo in una finestra del terminale e quindi premi il pulsante centrale. Il testo evidenziato viene incollato nella posizione del cursore sulla riga di comando. Il copia e incolla avvengono contemporaneamente.

Quindi, evidenzia del testo:

finestra di terminale con del testo evidenziato

Quindi premi il pulsante centrale:

finestra di terminale con il testo evidenziato incollato sulla riga di comando

È possibile utilizzare questo metodo per incollare tra diverse finestre di terminali e anche nelle applicazioni grafiche. Evidenzia semplicemente il testo, passa all’altra finestra o applicazione del terminale e premi il pulsante centrale.

Vecchia scuola – Nessun topo

E quando non hai un mouse? Se non puoi evidenziare alcun testo, come puoi copiarlo e incollarlo?

I server Linux sono spesso configurati senza un file ambiente desktop grafico (GDE), il che significa che non hai accesso a un mouse. Anche su un computer Linux che esegue un ambiente desktop grafico come GNOME e tu hai un mouse, ci saranno casi in cui non puoi usare il mouse per evidenziare il testo.

Ad esempio, potresti essere passato a uno dei TTY aggiuntivi. Sulle distribuzioni moderne, questi si trovano da Ctrl + Alt + F3 (TTY3) a Ctrl + Alt + F6 (TTY6). (Ctrl + Alt + F2 ti riporterà alla tua sessione GDE e Ctrl + Alt + F1 ti porterà alla schermata di accesso del tuo GDE.)

Forse stai persino utilizzando un dispositivo TTY hardware originale per connetterti a un computer Linux o Unix.

Ad ogni modo, queste tecniche funzioneranno per te. Il punto da ricordare qui è che questo non è copia e incolla, è taglia, copia e incolla e puoi solo tagliare e copiare dalla riga di comando corrente. Naturalmente, puoi utilizzare i tasti freccia per scorrere la cronologia e trovare la riga di comando da cui desideri tagliare, copiare e incollare.

Le sequenze di tasti che puoi utilizzare sono:

Ctrl + W: taglia la parola prima del cursore e aggiungila al buffer degli appunti.
Ctrl + K: taglia la parte della linea dopo il cursore e aggiungila al buffer degli appunti. Se il cursore si trova all’inizio della riga, taglierà e copierà l’intera riga.
Ctrl + U: taglia la parte della linea prima del cursore e aggiungila al buffer degli appunti. Se il cursore si trova alla fine della riga, taglierà e copierà l’intera riga.
Ctrl + Y: incolla l’ultimo testo che è stato tagliato e copiato.

Passiamo a TTY3. (Usa Ctrl + Alt + F1 per tornare al desktop in seguito.)

Ctrl+Alt+F3
tty

tty3 in una finestra di terminale

Abbiamo un file che vogliamo eliminare, controlliamo che sia qui.

ls -l file_to_delete.txt

ls -l file_to_delete.txt in una finestra di terminale

Se usiamo il tasto Freccia su, chiameremo l’ultimo comando che abbiamo usato dalla cronologia dei comandi. Potremmo semplicemente modificare questa riga, ma l’obiettivo è dimostrare il taglio, copia e incolla, quindi eseguiremo il nostro compito di eliminare il file in modo leggermente prolungato.

Comando recuperato dalla cronologia dei comandi in una finestra di terminale

Sposteremo il cursore sulla prima lettera del nome del file, quindi premere Ctrl + K. Ciò rimuoverà quella parte della riga e copierà il testo nel buffer degli appunti.

L'effetto di Ctrl + K in una finestra di terminale

Premi Backspace finché non cancella la linea.

Riga cancellata con backspace in una finestra di terminale

Digiteremo rm per eliminare il file.

rm in una finestra di terminale

E ora possiamo premere Ctrl + Y e incollare il resto della riga.

L'effetto di Ctrl + Y in una finestra di terminale

Questo completa il nostro comando e possiamo premere Invio per eliminare il file.

File eliminato senza messaggi di errore in una finestra di terminale

Questo tipo di taglia, copia e incolla non può essere utilizzato tra i TTY aggiuntivi. Non è possibile tagliare, copiare e incollare tra TTY3 e TTY4, ad esempio.

È meglio pensare ai TTY aggiuntivi come a una linea di TTY fisici seduti fianco a fianco. Non c’è modo di tagliare e incollare tra i diversi terminali fisici e non c’è modo di farlo in queste emulazioni.

Copia quello, controllo

Qualunque sia la situazione in cui ti trovi quando usi un computer Linux, ci sarà un modo per copiare e incollare. Hai delle opzioni. Alcuni di loro sono opzioni strane, ma almeno ci sono opzioni.