Come posso salvare il contenuto corrente di less in un file?


91

Se ho reindirizzato i risultati di un comando lesse poi ho deciso di voler salvare il contenuto in un file, è possibile?

Ho provato a impostare un segno aalla fine del buffer, quindi tornare all'inizio e utilizzare |aviper inviare l'intero contenuto a vi, ma non funziona.


1
La tua tecnica originale funzionerebbe se ordinassi a vi di caricare da stdin, facendo |avi -.
Joe Shaw,

Risposte:


102

Sul mio sistema, man lessdice

       s nomefile
              Salva l'input in un file. Funziona solo se l'ingresso è a
              pipe, non un file ordinario.

Per me va bene!


4
In qualche modo, questo non funziona per me - digitando 's' si sposta la finestra di una riga. Sono su un Mac.
benroth,

2
@benroth: probabilmente hai un lesskeyfile che cambia i normali comandi. Vediman lesskey
RedGrittyBrick il

8
snon funziona neanche per me, ma -o filefunziona.
user1338062,

1
E perché mai questo non è menzionato quando scrivo 'h' per ottenere un aiuto interattivo? +1 se hai letto l'aiuto interattivo e quindi non hai pensato di consultare man less...
Peter V. Mørch,

1
@comfreak: Sì, è in meno 487 in Ubuntu 18.04 ma non in meno 481 in Debian 9 / stretch / stable
Peter V. Mørch

24

La risposta accettata non funziona sul Mac - come dice @benroth, premendo ssemplicemente si sposta su una riga - ma è possibile utilizzare un metodo diverso.

In less --help:

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

e

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

Quindi, se vai all'inizio del buffer ( <) e quindi:

|$cat > /tmp/foo.txt

il contenuto del buffer verrà scritto su /tmp/foo.txt.


Questo metodo può essere particolarmente utile quando si desidera reindirizzare il buffer corrente visualizzato tramite un altro comando.
Doron Behar,

3

Quando lessviene aperto, è possibile salvare l'output completo in un file. Ad esempio vim, meno supporta i comandi.

Basta digitare la chiave s, quindi lessti chiederà il nome del file in cui desideri salvare il contenuto, basta digitare il nome del file e quindi digitare Enter.

Saluti


0

Usa l' >operatore. Ad esempio: less foo.bar > output.txt.


Grazie @Dror, ma sono già in meno applicazioni, non più al prompt di Bash
Jonathan Day

Un prezioso contributo al Q / A. Piuttosto che iniziare una domanda completamente separata, le persone che necessitano di un metodo per eseguire lo script di più file tramite il Visualizzatore meno possono trarne molti vantaggi. Mi ha risparmiato ore di lavoro (dopo molte ricerche). Grazie!
LD James,

0

No se hai iniziato di meno, ma se sai prima che vuoi inviarlo a meno e un file, puoi usare il comando tee

command | tee out_file | less

Grazie Marco, ma sto specificatamente cercando come farlo se sono già in meno
Jonathan Day

0

La mia risposta arriva un po 'troppo tardi, credo. Ma solo per riferimento, in risposta alla preoccupazione di Benroth sopra: Per gli utenti OSX c'è sempre la possibilità di scaricare il contenuto del pager in un file di registro usando l'opzione "-l" (leggi DASH ELL ) al prompt dei due punti.

Il cercapersone chiederà un file di registro. Digitare e premere [CR]

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.