locate ... | less
genera una ruta larga, que se muestra como varias líneas en el terminal, aunque en realidad es una sola línea.
Copio la ruta desde la terminal seleccionando el texto con el mouse y presionando Ctrl+ Shift+ C. Cuando lo pego en un archivo de texto, recibo una línea de cambio no deseada en el texto, exactamente de la misma manera que se muestra en el terminal.
Pero recuerdo que a veces puedo copiar una salida de ruta larga locate ... | less
sin introducir cambios de línea no deseados, y a veces no puedo. No me doy cuenta si hago algo diferente.
¿Entonces me pregunto cómo asegurarme de que el problema no suceda? ¡Gracias!
Mi sistema operativo: Ubuntu 12.04.
Mi terminal: Gnome Terminal 3.4.1.1
Respuestas:
En lugar de copiar lo que se muestra en el terminal (solo lo que cabe en la pantalla, con), copie el texto real. Use una de las utilidades externas xsel o xclip (tienen en su mayoría las mismas características, usaré xsel en esta respuesta) para copiar datos desde o hacia el portapapeles X. Para copiar al portapapeles, pase el contenido deseado en la entrada estándar. Al pegar desde el portapapeles, el contenido se escribe en la salida estándar.
En menos, use el
|
comando para canalizar un montón de líneas a través de un comando. Desplácese hasta la primera línea sobre la que desea actuar, escribamm
para establecer una marca, desplácese hasta la última línea y escriba|mxsel -b
y presione Enter. Dos marcas están predefinidas:^
para el comienzo del archivo,$
para el final del archivo. Por lo tanto, para copiar todo el archivo, use<|$xsel -b
. Para copiar una sola línea, usemm|mxsel -b
y Enter.Elimine la
-b
opción de copiar a la selección principal en lugar del portapapeles.fuente
El comportamiento real de esto es el siguiente:
si está dentro
less
y tiene un archivo con una línea muy larga, si se desplaza sobre la línea larga hacia abajo y hacia arriba, tiene varias líneas al copiar todo el texto. Después de eso, cuando desplace las líneas divididas hacia abajo sobre la parte inferior del terminal y desplace las líneas hacia arriba nuevamente, los saltos de línea se eliminarán nuevamente.Para visualización:
fuente
Puede copiar las líneas de salida sin nuevas líneas adicionales (saltos de línea) si el texto se envió directamente al terminal.
El terminal puede realizar un seguimiento de dónde están los extremos de la línea real.
Pero si las líneas fueron producidas por
less
unpager
programa similar o por otro , el terminal no sabe dónde están las nuevas líneas. El buscapersonas usa el terminal como una pantalla completa de caracteres y le dice al terminal "ponga estos caracteres allí" y operaciones como desplazamiento. Pero, para la terminal, no hay forma de ver hacia dónde se dirigen las nuevas líneas.fuente
locate <something> | less
en dos casos diferentes.echo $LESS
, tal vez hay opciones interesantes por menos.)-S
modos, así que quizás eso también lo empeora.En
less
, si selecciona varias líneas de texto envueltas y luego lo copia, aparecerá como una sola línea.Si presiona y PgUpluego copia el mismo texto, aparecerá como varias líneas.
PgDnestá bien, las flechas están bien. Pero PgUphace que el texto se divida.
fuente
Si el objetivo es copiar y pegar, lo uso en
cat
lugar deless
omore
y luego el terminal lo captura como realmente es en lugar de como se está mostrando.fuente