Tengo algunos comandos bastante largos y rutas de archivos que he copiado al portapapeles y necesito ejecutar en un TTY, sin embargo, las rutas de archivos son demasiado largas para volver a escribirlas y me gustaría pegarlas después de $
(puedo volver a escribir los comandos antes ellos entonces), ¿hay alguna manera de hacer esto?
Así que me gustaría ejecutar un comando y tenerlo en la siguiente línea comenzando con $
poner el texto copiado en el portapapeles de esta manera:
$ specialCommandToPasteText
$ pastedText
Estoy ejecutando Ubuntu GNOME 16.04 con GNOME 3.20.
gpm
para proporcionar compatibilidad con el mouse en el VT, como se sugiere en su propia respuesta a una pregunta anterior ?Respuestas:
Es simple, pero necesita una herramienta adicional.
Instale el paquete
xsel
que proporciona un comando fácil para acceder al portapapeles:Averigüe cuál
$DISPLAY
está usando su escritorio. Por lo general, debería serlo:0
, pero puede verificarlo ejecutando este comando en un emulador de terminal en su escritorio GUI:Asumiré que la salida es
:0
, reemplácela con su salida real en los siguientes comandos si es diferente.Copie el comando que desea ejecutar en el TTY, por ejemplo, usando Ctrl+ C.
Cambie al TTY que desea usar, por ejemplo, a TTY1 usando Ctrl+ Alt+ F1.
Inicie sesión escribiendo su nombre de usuario y contraseña.
Ingrese el comando completo que desea ejecutar, pero reemplace la parte que desea insertar desde el portapapeles
$(DISPLAY=:0 xsel -ob)
.Por ejemplo, si copió una gran lista de paquetes para instalar, podría escribir esto en el TTY:
Sin embargo, el fragmento del portapapeles no necesariamente tiene que estar al final de su comando, puede aparecer en cualquier lugar.
Para simplificar aún más las cosas, vamos a mover esto aún un poco complicado
DISPLAY=:0 xsel -ob
a un script. Lo nombraréPASTE
(porquepaste
ya está en uso), pero también puedes llamarlo de manera diferente.Para crear el archivo de script en una ubicación donde cada usuario pueda ejecutarlo sin tener que especificar la ruta completa (lo recomiendo
/usr/local/bin
para esto) y hacerlo ejecutable, simplemente ejecute esos dos comandos:Ahora simplemente puede incrustar
$(PASTE)
en sus comandos en un TTY para insertar el contenido del portapapeles desde su escritorio allí.fuente
DISPLAY=:0 xsel -ob
como alias Bash o script pequeño en cualquier lugar (nombremosPASTE
) y solo usar una forma abreviada como$(PASTE)
usar el contenido del portapapeles en sus comandos.Personalmente, solo uso archivos de texto:
En su entorno de escritorio, abra una terminal y
Suelta al tty y
fuente
some-command '
shift + insert (para pegar).'
regreso. Pegar dentro de comillas simples o dobles evita que las nuevas líneas en el texto pegado ejecuten el comando antes de que pueda editarlo para solucionar cualquier problema. IDK lo que gana para poner el texto en un archivo. Bash tiene pulsaciones de teclas de edición de línea muy potentes, como la flecha Ctrl-izquierda o Ctrl-derecha para moverse por palabras. alt-backspace para eliminar palabras al revés. Alt-d para eliminar palabras hacia adelante, etc., etc.Otra posible solución alternativa no mencionada anteriormente implica el uso
vim
, pegado y ejecución:!unix_command
en modo comando:vim
, vaya al modo de comando Esc, ingrese el indicador:fuente