19

我现在的目标是在您运行时也显示百分号,例如,命令

man emacs

例如,如果你运行它,你会得到'byte 3300'。

亚历克斯的回答建议我,我们需要通过

man "$1"| col -b > /tmp/manual
less /tmp/manual

其中 $1 指的是第一个参数。


新问题出在线程上。感谢 Yuliy 的关键举措!

4

6 回答 6

28

解决方案

knitatoms 的答案的手动版本与Alex Marteilli 的答案 相结合 效果很好:将选项传递给通过其寻呼机选项。+Ggless

例如,尝试

man -P 'less -s -M +Gg' man

这可以通过放置永久生效

export MANPAGER='less -s -M +Gg'

在您的一个 shell 配置文件中(以上语法适用于 Bash 和 ZSH)。现在,例如,man man根据需要显示百分比!

警告

你不应该放在+Gg变量中LESS!例如,做

export LESS='-M +Gg'

读取非常大的文件时会导致问题。例如,

yes | LESS='-M +Gg' less

不能很好地工作......

解释

正如其他答案所解释的那样,问题是less在它知道文件有多长之前无法说出文件的百分比,并且默认情况下从管道读取时它不会读取到文件的末尾。

OPTIONS部分man less

+      If  a command line option begins with +, the remainder of that
       option is taken to be an initial command to less.   For  exam‐
       ple, +G tells less to start at the end of the file rather than
       the beginning, and +/xyz tells it to start at the first occur‐
       rence of "xyz" in the file.  As a special case, +<number> acts
       like +<number>g; that is, it starts the display at the  speci‐
       fied  line  number (however, see the caveat under the "g" com‐
       mand above).  If the option starts with ++, the  initial  com‐
       mand  applies  to  every file being viewed, not just the first
       one.  The + command described previously may also be  used  to
       set (or change) an initial command for every file.

g意思是“回到文件的开头” 。

来自man man

-P pager, --pager=pager
       Specify which output pager to use.  By default, man uses pager
       -s.  This option overrides the $MANPAGER environment variable,
       which in turn overrides the $PAGER environment  variable.   It
       is not used in conjunction with -f or -k.

       The value may be a simple command name or a command with argu‐
       ments, and may use shell quoting (backslashes, single  quotes,
       or  double  quotes).  It may not use pipes to connect multiple
       commands; if you need that, use a wrapper  script,  which  may
       take  the file to display either as an argument or on standard
       input.
于 2013-11-09T02:09:08.100 回答
14
export LESS="-m"

更一般地说,LESS环境变量可能包含与您在运行时可以显式传递的命令行标志等效的选项less——在这里,该-m选项告诉它更丰富地提示(包括百分比,如您所问)。您还可以在该单个环境变量中传递多个选项,方法是每个选项都以$. 有关更多信息,请参阅less 的联机帮助页

编辑:当然有可能(取决于您使用 less 的方式,例如,如果您正在使用管道而不是在文件上调用它)less 不知道它将显示的总大小,在这种情况下当然它不能显示 % - 在这种情况下,它会提示它所拥有的少量信息,例如,到目前为止它显示了多少文本。例如,man确实使用less这种方式,通过管道。

因此,如果您的特定需要是查看 % in man(而不是less直接在文件上调用),您需要使用“备用寻呼机”(环境变量或命令行上的MANPAGER开关),这是一个简单的脚本,可以保存输出到临时文件,然后在后者上使用。(这可能会失去人类自己的“着色”,除非你玩得更深更深的技巧等等——类似地,你可以使用“预格式化页面”选项并将这样的预格式化页面解压缩到要运行的临时文件等,但这开始变成一个有点复杂的“简单脚本”;-)。-Pmanmanlessmanless

于 2009-06-26T14:18:43.707 回答
11

在 Linux 上,我只需用Shift+转到手册页的末尾,G然后用 . 返回开头g。(或者您可以使用 回到之前的位置'')。

Less then 有足够的信息来显示您在文件中走多远的百分比。(您可能需要输入-M才能获得长提示。)

这有点骇人听闻,但只有两个按键。不确定这是否适用于 OS/X。

于 2013-08-25T09:30:13.047 回答
10

要添加到 Alex Martelli 的答案:

请注意,您还可以在运行时将任何命令行参数传递给 less,只需键入它(包括 -),然后按 enter 键。所以你可以输入

-m<Enter>

进入运行 less 以切换长提示。

这对于需要在运行时更改的选项特别有用,例如 -S(行折叠开/关)。

于 2009-06-26T14:36:07.620 回答
3

通过我使用的实时less运行时-M.

那是提示符下的“ -MEnter”,:运行较少。

对于非常大的缓冲区,我还必须走到最后才能“发现”它们的大小。End然后回来Home


注意:我会作为对@sleske答案的评论发布,但最后我记得,评论不支持<kbd>Keyboard<kbd>标签。

于 2015-07-13T06:35:32.793 回答
1

我的环境中有这个。它将打印<filename> - Lines X-Y of Z在底部,或者至少打印尽可能多的信息。

export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'
于 2009-06-26T14:27:35.843 回答