如何将所有行从少写到文件?


76

我已经通过管道将命令发送到less,现在我想将命令的输出保存到文件中。我怎么做?

在这种情况下,我不想使用tee,我想要一个更少的解决方案,这样,如果我忘记使用,就不必重新运行长时间运行的命令tee

这个问题与此类似,唯一的区别是我要保存所有行,而不是子集:将行从少写到文件

Answers:


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<g小于| $管道然后是美元),然后再输入cat > filenameEnter
无论输入是管道还是普通文件,这都应该起作用。


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


4
less已经打开就想要一个解决方案less
Flimm 2014年

我懂了。很抱歉对于这个误会。我已经更新了答案。
nehcsivart 2014年

-2

您不用少使用,可以先使用tee,然后再使用管道tee减少。

./program | tee program.out | less


5
在这个问题,我专门问了,没有工作的解决方案tee,一旦less已经打开。
Flimm
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.