Как я могу сохранить текущее содержимое файла less в файл?

91

Если я передал результаты команды, lessа затем решил, что хочу сохранить содержимое в файл, возможно ли это?

Я попытался установить отметку aв конце буфера, а затем вернуться наверх и использовать |aviдля отправки всего содержимого vi, но это не работает.

Джонатан Дэй
источник
1
Ваш оригинальный метод будет работать , если вы поручили VI загрузить из стандартного ввода, делая |avi -.
Джо Шоу

Ответы:

102

В моей системе man lessговорит

       имя файла
              Сохраните ввод в файл. Это работает только если вход
              труба, а не обычный файл.

Работает для меня!

RedGrittyBrick
источник
4
Так или иначе, это не работает для меня - ввод 's' перемещает окно на одну строку. Я на Mac.
Бенрот
2
@benroth: у вас, вероятно, есть lesskeyфайл, который меняет обычные команды. Смотритеman lesskey
RedGrittyBrick
8
sу меня тоже не работает, но -o fileработает.
user1338062
1
И почему на самом деле это не упоминается, когда я набираю 'h', чтобы получить интерактивную помощь? +1, если вы прочитали интерактивную справку и поэтому не думали консультироваться man less...
Peter V. Mørch
1
@comfreak: Да, в Ubuntu 18.04 менее 487, но не менее 481 в Debian 9 / stretch / stable
Питер В. Мёрч
24

Принятый ответ не работает на Mac - как говорит @benroth, нажатие sпросто перемещает строку вниз - но вы можете использовать другой метод.

В less --help:

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

а также

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

Так что если вы идете в верхнюю часть буфера ( <), а затем:

|$cat > /tmp/foo.txt

содержимое буфера будет записано в /tmp/foo.txt.

Джо Шоу
источник
Этот метод может быть особенно полезен, когда вы хотите передать текущий буфер, просматриваемый другой командой.
Дорон Бехар
3

Когда ваш lessоткрыт, вы можете сохранить весь вывод в файл. Мол vim, меньше поддерживает команды.

Просто введите ключ s, затем lessспросит вас имя файла, в котором вы хотите сохранить содержимое, просто введите имя файла и затем введите Enter.

ура

Магнос Хаммес
источник
0

Используйте >оператора. Например: less foo.bar > output.txt.

Дрор
источник
Спасибо @Dror, но я уже в менее загруженном приложении, а не в приглашении bash
Jonathan Day
Ценный вклад в Q / A. Вместо того, чтобы начинать совершенно отдельный вопрос, люди, нуждающиеся в методе создания сценариев для нескольких файлов с помощью Less Viewer, могут принести большую пользу. Сэкономили мне часы работы (после долгих поисков). Спасибо!
Л.Д. Джеймс
0

Нет, если вы начали меньше, но если вы знаете, прежде чем хотите отправить его на меньше и файл, то вы можете использовать команду tee

command | tee out_file | less
user151019
источник
Спасибо Марк, но я специально смотрю, как это сделать, если я уже в меньшем количестве
Джонатан Дэй
0

Мой ответ приходит слишком поздно, я верю. Но только для справки, в ответ на озабоченность Benroth выше: для пользователей OSX всегда есть возможность выгрузить содержимое пейджера в файл журнала, используя опцию "-l" (читаем DASH ELL ) в приглашении двоеточия.

Пейджер запросит файл журнала. Введите его и нажмите [CR]

superk
источник