¿Cómo escribo todas las líneas de menos a un archivo?

76

He enviado un comando a less, y ahora quiero guardar la salida del comando en un archivo. ¿Cómo puedo hacer eso?

En este caso, no quiero usar tee, quiero una solución directamente de menos, para no tener que volver a ejecutar un comando de ejecución prolongada si olvidé usarlo tee.

Esta pregunta es similar a esta, la única diferencia es que quiero guardar todas las líneas, no un subconjunto: escribir líneas en un archivo desde menos

Flimm
fuente

Respuestas:

106

Desde less, escriba y sluego escriba el nombre del archivo en el que desea guardar, luego Enter.
Desde la manpágina, debajo de COMMANDS:

s filename
      Save the input to a file.  This only works if the input is a pipe, not an ordinary file.

manLa página también indica que, dependiendo de su instalación particular, el scomando podría no estar disponible. En ese caso, puede ir a la línea 1 con:

g or < or ESC-<
      Go to line N in the file, default 1 (beginning of file).

y canalizar todo el contenido catcon:

| <m> shell-command
      <m> represents any mark letter. Pipes a section of the input file to the
      given shell command. The section of the file to be piped is between the
      first line on the current screen and the position marked by the letter. 
      <m> may also be ^ or $ to indicate beginning or end of file respectively.

entonces:

g|$cat > filename

o:

<|$cat > filename

es decir, tipo go <( g o menos-que ) | $( tubo entonces dólar ) a continuación, cat > filenamey Enter.
Esto debería funcionar si la entrada es una tubería o un archivo ordinario.

don_crissti
fuente
0

Una forma de hacerlo teees la siguiente.
less /path/to/input > /path/to/output
Lo anterior se sobrescribirá /path/to/outputsi ya existe.

Hacer lo mismo, pero anexar /path/to/outputes como sigue.
less /path/to/input >> /path/to/output

Para guardar el texto lessdespués de haberlo abierto, puede usar la función Guardar archivo.
Cuando en less, presione s. Luego, escriba el nombre del archivo.
Si utilizó una tubería, el archivo se escribirá automáticamente en el Directorio de trabajo.
Si no usó una tubería, abrirá un archivo con el texto (para el cual puede guardar).
Creo que el archivo se abrirá en vim.

nehcsivart
fuente
44
Quiero una solución de lessuna vez que ya he abierto less.
Flimm
Veo. Perdón por el malentendido. He actualizado mi respuesta.
nehcsivart
-2

No usa menos, usa tee y luego pipe tee para menos.

./program | tee program.out | less

SailorCire
fuente
55
En la pregunta, pedí específicamente una solución que funcionó sin teeuna vez que lessya se había abierto.
Flimm