Как мне записать все строки из меньшего в файл?

76

Я передал команду less, и теперь я хочу сохранить вывод команды в файл. Как мне это сделать?

В этом случае я не хочу использовать tee, я хочу решение напрямую из меньшего, чтобы мне не пришлось повторно запускать длительную команду, если я забыл ее использовать tee.

Этот вопрос похож на этот, единственное отличие состоит в том, что я хочу сохранить все строки, а не подмножество: записать строки в файл из меньшего

Флимм
источник

Ответы:

106

От less, sзатем введите имя файла, который вы хотите сохранить, затем Enter.
Со manстраницы под COMMANDS:

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

manНа странице также указано, что в зависимости от конкретной установки sкоманда может быть недоступна. В этом случае вы можете перейти к строке 1 с помощью:

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

и передать весь контент catс:

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

так что либо:

g|$cat > filename

или же:

<|$cat > filename

то есть тип gили <( г или меньше-чем ) | $( труба, затем доллар ), а затем cat > filenameи Enter.
Это должно работать независимо от того, является ли ввод обычным или обычным файлом.

don_crissti
источник
0

Один из способов сделать это без teeследующего.
less /path/to/input > /path/to/output
Выше будет перезаписано, /path/to/outputесли оно уже существует.

Чтобы сделать то же самое, но добавить /path/to/outputэто следующим образом.
less /path/to/input >> /path/to/output

Чтобы сохранить текст lessпосле его открытия, вы можете использовать функцию «Сохранить файл».
Когда в less, нажмите s. Затем введите имя файла.
Если вы использовали канал, файл будет автоматически записан в рабочий каталог.
Если вы не использовали канал, вы откроете файл с текстом (для которого вы можете сохранить).
Я верю, что файл будет открыт в vim.

nehcsivart
источник
4
Я хочу решение, как lessтолько я уже открыл less.
Flimm
Понимаю. Извините за недопонимание. Я обновил свой ответ.
nehcsivart
-2

Вы не используете меньше, вы используете тройник, а затем труба меньше.

./program | tee program.out | less

SailorCire
источник
5
В этом вопросе я специально попросил, чтобы решение, которое работало без teeединого раза, lessуже было открыто.
Flimm