GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué Ctrl + V no se pega en Bash (shell de Linux)?

En los días de las terminales físicas, no existían portapapeles para toda la sesión, solo unos pocos programas admitían copiar/pegar internamente, a menudo bajo el nombre de "búferes" o "anillos de eliminación", y usaban varias pulsaciones de teclas diferentes. Por ejemplo, el bash shell usa Ctrl K o Ctrl T para "matar" (cortar), Ctrl Y "tirar" (pegar); esto viene de emacs redactor.

Ctrl C casi en todas partes en Unix estaba la tecla de "interrupción", utilizada para cancelar el programa u operación actual. El Ctrl V key a menudo significaba "insertar palabra por palabra", es decir, insertar el siguiente carácter literalmente sin realizar ninguna acción asociada. Por ejemplo, un Esc normal cambia al modo de comando en el vi editor, pero Ctrl V , Esc insertará el ESC carácter en el documento.

El uso de Ctrl C para copiar y Ctrl V para pegar desde el portapapeles de toda la sesión fue introducido por Mac OS en 1983 y Microsoft Windows 3.x en 1990. (Las versiones anteriores de Windows (1.x y 2.x), así como IBM OS/2, solo admitían IBM CUA teclas Ctrl Ins para copiar y Shift Ins pegar; estos accesos directos siguen siendo compatibles con todas las versiones de Windows).

Cuando las GUI con soporte para portapapeles finalmente llegaron a Unix, el Ctrl las pulsaciones de teclas ya estaban en uso por muchos programas de terminal. Además, la interfaz gráfica X tenía mecanismos algo diferentes:"selecciones" y "cortar búferes". Incluso ahora puede seleccionar texto en un programa e insertarlo con el botón central del mouse, sin ninguna acción de copia explícita.

En resumen, en el momento en que se escribieron Xterm y GNOME Terminal (supongo que usará el último), Ctrl V ya tenía un significado completamente diferente durante muchos años y no se podía cambiar. Además, un método alternativo para copiar texto, la "selección", ya estaba presente en X11, por lo que la acción explícita de copiar y pegar probablemente no se consideró tan importante como lo sería en Windows. Esto significa que se tuvieron que seleccionar diferentes métodos abreviados de teclado; por ejemplo, la mayoría de los programas de terminal modernos, como GNOME Terminal, usan Ctrl Cambio C y Ctrl Cambio V . (Si usa Xterm, los mismos atajos se pueden agregar manualmente usando las XTerm*vt100*traducciones recursox. Rxvt no tiene esa opción).

(La mayoría de los kits de herramientas X11 también admiten las teclas CUA "copiar" y "pegar", que no entran en conflicto con los programas de terminal. Desafortunadamente, las implementaciones son bastante inconsistentes:Ctrl Ins copia al "portapapeles" en la mayoría de los programas (GTK, Qt4, pero ignorado por Xaw); sin embargo, Shift Ins pega desde la "selección principal" en la mayoría de los programas GTK y Qt4, pero desde el "portapapeles" en Firefox, y desde los búferes de corte ahora obsoletos en el ahora obsoleto Xaw).

Dicho todo esto, algunos terminales o consolas (en concreto, la consola de Windows 10) hacen apoyar estas claves. Como la consola de Windows siempre tuvo un modo "marcar/seleccionar" separado, Ctrl C ahora también tiene dos significados según el contexto:en el modo normal, envía una interrupción, en el modo de selección, se copia en el portapapeles (al igual que Enter solía).

Mientras tanto, las herramientas de línea de comandos de Windows nunca utilizaron Ctrl V para nada, por lo que estaba obligado a "pegar" sin alterar mucho nada. Sin embargo, hacer lo mismo en terminales tipo Unix sería más problemático.


Utilice Ctrl Cambio V para pegar.

Ctrl con otros caracteres suele ser utilizado por el shell para funciones especiales.


Esta es la configuración de copiar y pegar de uso general con terminales populares:

gnome-terminal (más popular en Linux)
Copiar :Ctrl Cambio C
Pegar :Ctrl Cambio V
Nota :Seleccionar para copiar y clic central pegar también funciona, pero usa un portapapeles alternativo.

PuTTY (terminal más popular en Windows)
Copiar :(seleccione con el mouse, sin interacción con el teclado)
Pegar :Haga clic con el botón derecho (o más fiable:shift Haga clic con el botón derecho )
Nota :Aplicaciones que toman la entrada del mouse (como vim y links ) puede robar clic derecho -- cambio Haga clic con el botón derecho siempre funcionará en cualquier aplicación.

Terminal OSX
Copiar :manzana C
Pegar :manzana V
Nota: Aplicaciones que controlan el mouse (como vim y links ) puede anular lo que significa seleccionar texto, en cuyo caso la copia no funcionará de la forma esperada. En esos casos, mantenga presionada Control mientras arrastra el ratón para seleccionar. La interacción del mouse con las aplicaciones está deshabilitada de forma predeterminada en la configuración de su terminal, por lo que la mayoría de las personas ni siquiera sabrán sobre esto.


Linux
  1. Linux:¿por qué se tarda tanto en detectar una memoria USB?

  2. ¿Por qué Regex en Bash funciona solo si es una variable y no directamente?

  3. Comprender las variables en Bash Shell en Linux

  4. ¿Por qué sale esta canalización de shell?

  5. Cómo codificar la imagen en base64 en linux bash / shell

Cómo usar el comando Declare en Linux Bash Shell

Cómo instalar Linux Bash Shell en Windows 10

6 Operadores de encadenamiento de línea de comandos de Bash Shell en Linux

Shell/Bash Script para encontrar números primos en Linux

¿Cómo usar Linux Bash Shell dentro de Windows 10?

¿Por qué ejecutar un comando de shell de Linux con '&'?