GNU/Linux >> Linux Esercitazione >  >> Linux

Perché Ctrl + V non incolla in Bash (shell Linux)?

Ai tempi dei terminali fisici, gli appunti a livello di sessione non esistevano, solo pochi programmi supportavano il copia/incolla interno - spesso sotto il nome di "buffer" o "kill ring" - e utilizzavano varie sequenze di tasti diverse. Ad esempio, il bash shell usa Ctrl K o Ctrl U per "uccidere" (tagliare), Ctrl per "tirare" (incollare); questo deriva da emacs editore.

Ctrl C quasi ovunque in Unix c'era il tasto "interrupt", utilizzato per annullare il programma o l'operazione corrente. Il Ctrl V chiave spesso significava "inserimento letterale", ovvero inserire letteralmente il carattere seguente senza eseguire alcuna azione associata. Ad esempio, un normale Esc passa alla modalità di comando in vi editor, ma Ctrl V , Esc inserirà il ESC carattere nel documento.

L'uso di Ctrl C da copiare e Ctrl V per incollare dagli appunti a livello di sessione è stato introdotto da Mac OS nel 1983 e Microsoft Windows 3.x nel 1990. (Le versioni precedenti di Windows (1.x e 2.x), così come IBM OS/2, supportavano solo IBM CUA tasti Ctrl Ins per copiare e Maiusc Ins incollare; queste scorciatoie rimangono supportate da tutte le versioni di Windows.)

Quando le GUI con il supporto degli appunti finalmente raggiunsero Unix, il Ctrl le pressioni dei tasti erano già utilizzate da molti programmi terminali. Inoltre, l'interfaccia grafica di X aveva meccanismi alquanto diversi:"selezioni" e "tagli buffer". Anche ora puoi selezionare il testo in un programma e inserirlo usando il pulsante centrale del mouse, senza alcuna azione di copia esplicita.

In breve, quando sono stati scritti Xterm e GNOME Terminal (immagino che tu usi quest'ultimo), Ctrl V lo aveva già fatto un significato completamente diverso per molti anni e non poteva essere cambiato. Inoltre, in X11 era già presente un metodo alternativo per copiare il testo, la "selezione", quindi l'azione esplicita di copia/incolla probabilmente non era considerata così importante come lo sarebbe stata in Windows. Ciò significa che è stato necessario selezionare diverse scorciatoie da tastiera:ad esempio, la maggior parte dei programmi di terminale moderni, come GNOME Terminal, utilizza Ctrl Maiusc C e Ctrl Maiusc V . (Se usi Xterm, le stesse scorciatoie possono essere aggiunte manualmente usando le traduzioni XTerm*vt100* Xrisorsa. Rxvt non ha tale opzione.)

(La maggior parte dei toolkit X11 supporta anche i tasti CUA "copia" e "incolla", che non entrano in conflitto con i programmi terminali. Sfortunatamente, le implementazioni sono piuttosto incoerenti – Ctrl Ins copia negli "appunti" nella maggior parte dei programmi (GTK, Qt4, ma ignorati da Xaw); tuttavia, Maiusc Ins incolla dalla "selezione primaria" nella maggior parte dei programmi GTK e Qt4, ma dagli "appunti" in Firefox e dagli ormai obsoleti cut-buffer nell'ormai obsoleto Xaw.)

Detto questo, alcuni terminali o console (in particolare, la console di Windows 10) lo fanno supportano queste chiavi. Poiché la console di Windows ha sempre avuto una modalità "seleziona/seleziona" separata, Ctrl C ora ha anche due significati basati sul contesto:in modalità normale invia un'interruzione, in modalità selezione copia negli appunti (proprio come Invio prima).

Nel frattempo, gli strumenti della riga di comando di Windows non sono mai stati realmente utilizzati Ctrl V per nulla, quindi era destinato a "incollare" senza disturbare più di tanto nulla. Fare lo stesso su terminali simili a Unix, tuttavia, sarebbe più problematico.


Usa Ctrl Maiusc V per incollare.

Ctrl con altri caratteri viene solitamente utilizzato dalla shell per funzioni speciali.


Ecco le tue impostazioni di copia incolla per uso generico con i terminali più diffusi:

gnome-terminal (il più popolare su Linux)
Copia :Ctrl Maiusc C
Incolla :Ctrl Maiusc V
Nota :Seleziona per copiare e clic centrale anche incollare funziona, ma utilizza un clipboard alternativo.

PuTTY (il terminale più popolare in Windows)
Copia :(seleziona con il mouse, nessuna interazione con la tastiera)
Incolla :Fai clic con il pulsante destro del mouse (o più attendibilmente:shift Fai clic con il pulsante destro del mouse )
Nota :app che accettano l'input del mouse (come vim e links ) può rubare il clic destro -- maiusc Fai clic con il pulsante destro del mouse funzionerà sempre in qualsiasi app.

Terminale OSX
Copia :Apple C
Incolla :Apple V
Nota: Le app che prendono il controllo del mouse (come vim e links ) può sovrascrivere il significato di selezionare il testo, nel qual caso la copia non funzionerà nel modo previsto. In questi casi, tieni premuto Control mentre trascini il mouse per selezionare. L'interazione del mouse con le app è disabilitata per impostazione predefinita nelle impostazioni del terminale, quindi la maggior parte delle persone non lo saprà nemmeno.


Linux
  1. Perché [a-z] corrisponde alle lettere minuscole in Bash?

  2. Come fa Bash a sapere come viene invocato?

  3. Linux:perché ci vuole così tanto tempo per rilevare una chiavetta USB?

  4. 6 Operatori di concatenamento della riga di comando della shell Bash in Linux

  5. Perché questa pipeline di shell termina?

Come utilizzare il comando Declare in Linux Bash Shell

Come installare Linux Bash Shell su Windows 10

Script Shell/Bash per trovare i numeri primi in Linux

Come utilizzare Linux Bash Shell in Windows 10?

Cosa fa % nelle stringhe della shell di Linux?

Perché Linux riscalda il mio computer?