Comment puis-je enregistrer le contenu actuel de moins dans un fichier?

91

Si j'ai acheminé les résultats d'une commande vers lesspuis décidé que je voulais enregistrer le contenu dans un fichier, est-ce possible?

J'ai essayé de définir une marque aà la fin de la mémoire tampon, puis de revenir au début et d'utiliser l' |avienvoi de tout le contenu vi, mais cela ne fonctionne pas.

Jonathan Day
la source
1
Votre technique originale fonctionnerait si vous aviez demandé à vi de charger stdin, en le faisant |avi -.
Joe Shaw

Réponses:

102

Sur mon système, man lessdit

       s nom de fichier
              Enregistrez l'entrée dans un fichier. Cela ne fonctionne que si l'entrée est un
              pipe, pas un fichier ordinaire.

Travaille pour moi!

RedGrittyBrick
la source
4
D'une certaine manière, cela ne fonctionne pas pour moi - taper 'déplace' la fenêtre d'une ligne. Je suis sur un Mac.
benroth
2
@benroth: Vous avez probablement un lesskeyfichier qui modifie les commandes normales. Voirman lesskey
RedGrittyBrick
8
sça ne marche pas pour moi non plus, mais -o fileça marche .
user1338062
1
Et pourquoi n'est-il pas mentionné lorsque je tape 'h' pour obtenir une aide interactive? +1 si vous avez lu l'aide interactive et n'avez donc pas pensé à consulter man less...
Peter V. Mørch
1
@comfreak: Oui, c'est moins 487 dans Ubuntu 18.04 mais pas moins 481 dans Debian 9 / stretch / stable
Peter V. Mørch
24

La réponse acceptée ne fonctionne pas sur le Mac - comme @benroth le dit, si vous appuyez ssimplement sur une ligne - vous pouvez utiliser une méthode différente.

Dans less --help:

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

et

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

Donc, si vous allez en haut de la mémoire tampon ( <), puis:

|$cat > /tmp/foo.txt

le contenu du tampon sera écrit dans /tmp/foo.txt.

Joe Shaw
la source
Cette méthode peut être particulièrement utile lorsque vous souhaitez canaliser le tampon actuel en cours d'affichage par le biais d'une autre commande.
Doron Behar
3

Lorsque votre lessest ouvert, vous pouvez enregistrer la sortie complète dans un fichier. Comme vim, moins prend en charge les commandes.

Tapez simplement la clé s, puis lessvous demandera le nom du fichier où vous souhaitez enregistrer le contenu, tapez simplement le nom du fichier, puis tapez Enter.

À votre santé

Magnos Hammes
la source
0

Utilisez l' >opérateur. Par exemple: less foo.bar > output.txt.

Dror
la source
Merci @ Dror, mais je suis déjà dans l'application moins, pas à l'invite de la bash
Jonathan Day,
Une contribution précieuse au Q / A. Plutôt que de commencer une question totalement distincte, les personnes ayant besoin d'une méthode pour scripter plusieurs fichiers à l'aide de la visionneuse réduite peuvent en tirer beaucoup. M'a sauvé des heures de travail (après beaucoup de recherches). Merci!
LD James
0

Non si vous avez commencé moins, mais si vous savez avant de vouloir l'envoyer à less et à un fichier, vous pouvez utiliser la commande tee

command | tee out_file | less
utilisateur151019
la source
Merci Mark, mais je cherche précisément comment le faire si je suis déjà dans moins
Jonathan Day
0

Ma réponse arrive un peu trop tard, je crois. Mais juste pour la référence, en réponse à l'inquiétude de benroth ci-dessus: Pour les utilisateurs d'OSX, il est toujours possible de vider le contenu du pager dans un fichier journal en utilisant l'option "-l" (lire DASH ELL ) à l'invite des deux points.

Le téléavertisseur demandera un fichier journal. Saisissez-le et appuyez sur [CR]

superk
la source