¿Cómo puedo guardar el contenido actual de less en un archivo?

91

Si he canalizado los resultados de un comando lessy luego he decidido que quiero guardar el contenido en un archivo, ¿es esto posible?

Intenté establecer una marca aal final del búfer y luego volver al principio y usar |avipara enviar todo el contenido vi, pero eso no funciona.

Jonathan Day
fuente
1
Su técnica original funcionaría si le indicara a vi que cargue desde stdin, al hacerlo |avi -.
Joe Shaw

Respuestas:

102

En mi sistema, man lessdice

       s nombre de archivo
              Guarde la entrada en un archivo. Esto solo funciona si la entrada es un
              tubería, no un archivo ordinario.

¡Funciona para mi!

RedGrittyBrick
fuente
44
De alguna manera, esto no funciona para mí: escribir 's' mueve la ventana una línea. Estoy en una Mac
benroth
2
@benroth: Probablemente tenga un lesskeyarchivo que cambie los comandos normales. Verman lesskey
RedGrittyBrick
8
stampoco funciona para mí, pero lo -o filehace.
user1338062
1
¿Y por qué no se menciona esto cuando escribo 'h' para obtener ayuda interactiva? +1 si has leído la ayuda interactiva y por lo tanto no pensaste en consultar man less...
Peter V. Mørch
1
@comfreak: Sí, está en menos 487 en Ubuntu 18.04 pero no en menos 481 en Debian 9 / stretch / stable
Peter V. Mørch
24

La respuesta aceptada no funciona en la Mac, como dice @benroth, presionar ssolo se mueve hacia abajo en una línea, pero puede usar un método diferente.

En less --help:

|Xcommand            Pipe file between current pos & mark X to shell command.

y

A mark is any upper-case or lower-case letter.
Certain marks are predefined:
     ^  means  beginning of the file
     $  means  end of the file

Entonces, si vas a la parte superior del búfer ( <) y luego:

|$cat > /tmp/foo.txt

se escribirá el contenido del búfer /tmp/foo.txt.

Joe Shaw
fuente
Este método puede ser especialmente útil cuando desea canalizar el búfer actual que se ve a través de otro comando.
Doron Behar
3

Cuando lessse abre su, puede guardar la salida completa en un archivo. Al igual que vim, menos admite comandos.

Simplemente escriba la clave s, luego lessle preguntará el nombre del archivo donde desea guardar el contenido, simplemente escriba el nombre del archivo y luego escriba Enter.

Salud

Magnos Hammes
fuente
0

Usa el >operador. Por ejemplo: less foo.bar > output.txt.

Dror
fuente
Gracias @Dror, pero ya estoy en la aplicación menos, ya no en el indicador de bash
Jonathan Day
Una valiosa contribución a la Q / A. En lugar de comenzar una pregunta totalmente separada, las personas que necesitan un método para guiar múltiples archivos a través de Less Viewer pueden beneficiarse mucho. Me ahorró horas de trabajo (después de muchas búsquedas). ¡Gracias!
LD James
0

No, si ha comenzado menos, pero si sabe antes de que quiere enviarlo a menos y a un archivo, puede usar el comando tee

command | tee out_file | less
usuario151019
fuente
Gracias Mark, pero estoy buscando específicamente cómo hacerlo si ya estoy en menos
Jonathan Day
0

Mi respuesta llega un poco tarde, creo. Pero solo como referencia, en respuesta a la preocupación anterior de benroth: para los usuarios de OSX siempre existe la opción de volcar el contenido del buscapersonas en un archivo de registro mediante la opción "-l" (leer DASH ELL ) en el indicador de dos puntos.

El localizador le pedirá un archivo de registro. Teclee y presione [CR]

superk
fuente