我现在的目标是在运行时显示百分号,例如命令
man emacs
如果你运行它,你得到'字节3300'.
亚历克斯的回答告诉我,我们需要通过单独的shell函数
man "$1"| col -b > /tmp/manual less /tmp/manual
其中$ 1指的是第一个参数.
新问题出现在线程上.感谢Yuliy的难关!
一个不太手动版knitatoms'答案
联合亚历克斯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, +acts like + 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
选项- 这里是告诉它更丰富地提示的选项(包括你提出的百分比).您可以在该单个环境变量中传递多个选项,每个选项以a结尾$
.有关更多信息,请参阅less的手册页.
编辑:它当然是可能的(取决于你如何使用更少的,例如,如果你正在使用它而不是在文件上调用它)少了不知道它将显示的总大小,在这种情况下当然它无法显示% - 在这种情况下,它会提示它确实有什么小信息,例如,到目前为止显示了多少文本.例如,通过管道man
使用less
这种方式.
所以,如果您的具体需要的是看到在%man
(而不是调用时less
直接对文件),你需要使用"替代呼机"(环境变量MANPAGER
或交换机-P
上man
的命令行),这是节省了一个简单的脚本man
的输出到临时文件,然后使用less
后者.(这可能会失去人类自己的"着色",除非你玩更深入的技巧等等 - 同样你也可以使用"preformat pages"选项man
并将这样的预格式化页面解压缩到运行的临时文件less
等,但这开始成为一个有点复杂的"简单脚本";-).
在Linux上我只是用Shift+ 去到手册页的末尾G然后返回到开头g.(或者你可以回到以前的位置'').
少则有足够的信息来显示你文件的距离百分比.(您可能需要键入-M
才能获得长提示.)
这有点像黑客但只有两次按键.不确定这是否适用于OS/X.
添加到Alex Martelli的回答:
请注意,您还可以在运行时将任何命令行参数传递给less,只需键入(包括 - ),然后输入key即可.所以你可以输入
-m
进入少跑以切换长提示.
这对于需要在运行时更改的选项尤其有用,例如-S(线路折叠打开/关闭).