首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么‘Why’输出到标准输出而不是$PAGER (更少)?

为什么‘Why’输出到标准输出而不是$PAGER (更少)?
EN

Unix & Linux用户
提问于 2020-01-18 17:11:21
回答 1查看 439关注 0票数 0

当我运行man [program]时,手册页文本将输出在终端上(一个la cat,没有提供交互性的寻呼机),而不是在less中打开手册页文件(这样您就可以滚动、搜索等等):

代码语言:javascript
复制
➜ man git commit
GIT-COMMIT(1)                   Git Manual                  GIT-COMMIT(1)

NAME
       git-commit - Record changes to the repository

SYNOPSIS
[...the rest of the man page]

我已经验证了echo $PAGER返回less。运行man -D -P less [program]仍然输出到终端“就像cat做的”,而不提供滚动或搜索等功能,就像less通常所做的那样。

使用调试标志-dman表示"using /usr/bin/less as pager“。我对正在发生的事感到不知所措。

其他有用信息:

代码语言:javascript
复制
➜ env | grep LESS       
LESS=-R -M
LESS_TERMCAP_mb=
LESS_TERMCAP_md=
LESS_TERMCAP_me=
LESS_TERMCAP_so=
LESS_TERMCAP_se=
LESS_TERMCAP_us=
LESS_TERMCAP_ue=
➜ echo $TERM     
xterm-256color

我只收到一个程序错误。我不认为这是直接相关的,但有关这方面的细节,请参阅这个GH问题。tl;dr,出现的错误是troff: :1: name expected (got '\ '): treated as missing

这也是交叉张贴到曼吉罗论坛在这里。

更新:

问题在于zpm-zsh/着色。我以为做\man会忽略函数,但是\只忽略别名。删除这个插件可以解决这个问题,但我想了解其中的原因。

EN

回答 1

Unix & Linux用户

发布于 2020-01-18 20:45:55

我运行的问题是与env的命名空间匹配问题。

我的彩色手册在设置变量时使用env

代码语言:javascript
复制
function colored() {
    env \
        LESS_TERMCAP_mb=$(printf "\e[1;31m") \
        LESS_TERMCAP_md=$(printf "\e[1;31m") \
        LESS_TERMCAP_me=$(printf "\e[0m") \
        LESS_TERMCAP_se=$(printf "\e[0m") \
        LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
        LESS_TERMCAP_ue=$(printf "\e[0m") \
        LESS_TERMCAP_us=$(printf "\e[1;32m") \
        PAGER="${commands[less]:-$PAGER}" \
        _NROFF_U=1 \
        PATH="$HOME/bin:$PATH" \
            "$@"
}

function man() {
    colored man "$@"
}

我还使用了另一个插件zpm-zsh/着色,它将env通过grv (通用着色器)路由为一个单独的函数,名为env

代码语言:javascript
复制
function env () {
    =grc --colour=auto env "$@"
}

不管出于什么原因,grc做了一些man不喜欢的事情。

解决方案:

1)不要使用全局定义的函数

通过grc重新定义env(

2)使用command

确保env不是别名/函数

代码语言:javascript
复制
function colored() {
    command env \
        LESS_TERMCAP_mb=$(printf "\e[1;31m") \
[....]
}

function man() {
    colored man "$@"
}
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/562787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档