我现在的目标是在您运行时也显示百分号,例如,命令
man emacs
例如,如果你运行它,你会得到'byte 3300'。
亚历克斯的回答建议我,我们需要通过
man "$1"| col -b > /tmp/manual
less /tmp/manual
其中 $1 指的是第一个参数。
新问题出在线程上。感谢 Yuliy 的关键举措!
knitatoms 的答案的手动版本与Alex Marteilli 的答案
相结合
效果很好:将选项传递给通过其寻呼机选项。+Gg
less
例如,尝试
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.
export LESS="-m"
更一般地说,LESS
环境变量可能包含与您在运行时可以显式传递的命令行标志等效的选项less
——在这里,该-m
选项告诉它更丰富地提示(包括百分比,如您所问)。您还可以在该单个环境变量中传递多个选项,方法是每个选项都以$
. 有关更多信息,请参阅less 的联机帮助页。
编辑:当然有可能(取决于您使用 less 的方式,例如,如果您正在使用管道而不是在文件上调用它)less 不知道它将显示的总大小,在这种情况下当然它不能显示 % - 在这种情况下,它会提示它所拥有的少量信息,例如,到目前为止它显示了多少文本。例如,man
确实使用less
这种方式,通过管道。
因此,如果您的特定需要是查看 % in man
(而不是less
直接在文件上调用),您需要使用“备用寻呼机”(环境变量或命令行上的MANPAGER
开关),这是一个简单的脚本,可以保存输出到临时文件,然后在后者上使用。(这可能会失去人类自己的“着色”,除非你玩得更深更深的技巧等等——类似地,你可以使用“预格式化页面”选项并将这样的预格式化页面解压缩到要运行的临时文件等,但这开始变成一个有点复杂的“简单脚本”;-)。-P
man
man
less
man
less
在 Linux 上,我只需用Shift+转到手册页的末尾,G然后用 . 返回开头g。(或者您可以使用 回到之前的位置'')。
Less then 有足够的信息来显示您在文件中走多远的百分比。(您可能需要输入-M
才能获得长提示。)
这有点骇人听闻,但只有两个按键。不确定这是否适用于 OS/X。
要添加到 Alex Martelli 的答案:
请注意,您还可以在运行时将任何命令行参数传递给 less,只需键入它(包括 -),然后按 enter 键。所以你可以输入
-m<Enter>
进入运行 less 以切换长提示。
这对于需要在运行时更改的选项特别有用,例如 -S(行折叠开/关)。
通过我使用的实时less
运行时-M
.
那是提示符下的“ -M
Enter”,:
运行较少。
对于非常大的缓冲区,我还必须走到最后才能“发现”它们的大小。End然后回来Home。
注意:我会作为对@sleske答案的评论发布,但最后我记得,评论不支持<kbd>Keyboard<kbd>
标签。
我的环境中有这个。它将打印<filename> - Lines X-Y of Z
在底部,或者至少打印尽可能多的信息。
export LESS='-P?f%f - .?ltLine?lbs. %lt?lb-%lb.?L of %L.:?pt%pt\%:?btByte %bt:-...'