Comment écrire toutes les lignes de moins dans un fichier?

76

J'ai transmis une commande à less, et maintenant je veux enregistrer le résultat de la commande dans un fichier. Comment je fais ça?

Dans ce cas, je ne veux pas utiliser tee, je veux une solution directement de less, de sorte que je n'ai pas à réexécuter une commande de longue durée si j'ai oublié de l'utiliser tee.

Cette question est similaire à celle-ci, la seule différence est que je veux sauvegarder toutes les lignes, pas un sous-ensemble: écrire des lignes dans un fichier à partir de moins

Flimm
la source

Réponses:

106

De less, tapez spuis tapez le nom du fichier que vous souhaitez enregistrer, puis Enter.
De la manpage, sous COMMANDS:

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

manLa page indique également que, selon votre installation, la scommande peut ne pas être disponible. Dans ce cas, vous pouvez aller à la ligne 1 avec:

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

et dirigez tout le contenu catavec:

| <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.

alors soit:

g|$cat > filename

ou:

<|$cat > filename

c'est-à-dire tapez gou <( g ou moins que ) | $( pipe puis dollar ) puis cat > filenameet Enter.
Cela devrait fonctionner si l'entrée est un canal ou un fichier ordinaire.

don_crissti
la source
0

Une façon de le faire sans teeest la suivante.
less /path/to/input > /path/to/output
Ce qui précède écrasera /path/to/outputs’il existe déjà.

Pour faire la même chose, mais ajouter à /path/to/outputest comme suit.
less /path/to/input >> /path/to/output

Pour enregistrer le texte lessaprès l'avoir ouvert, vous pouvez utiliser la fonctionnalité Enregistrer le fichier.
Lorsque vous y êtes less, appuyez sur s. Ensuite, tapez le nom du fichier.
Si vous avez utilisé un canal, le fichier sera automatiquement écrit dans le répertoire de travail.
Si vous n'avez pas utilisé de pipe, vous allez ouvrir un fichier avec le texte (pour lequel vous pouvez sauvegarder).
Je crois que le fichier sera ouvert dans vim.

nehcsivart
la source
4
Je veux une solution à partir d' lessune fois que j'ai déjà ouvert less.
Flimm
Je vois. Désolé pour le malentendu. J'ai mis à jour ma réponse.
Nehcsivart
-2

Vous n'en utilisez pas moins, vous utilisez un té, puis un tuyau en té pour moins.

./program | tee program.out | less

SailorCire
la source
5
Dans la question, j'ai demandé spécifiquement pour une solution qui a fonctionné sans teeune fois lessavait déjà été ouverte.
Flimm