Como o 'man' pode renderizar aspas duplas não como backtick duplicado e caracteres principais?

1

Quando eu faço um comando como:

man bash

Eu vejo citações mostradas como:

''...''

Houve postagens sobre por que isso acontece:

Mas, eu não encontrei uma maneira de forçar o man ou o pager subjacente para mostrar aspas duplas ASCII (") ou para encorajar os caracteres, ou qualquer outra coisa além de usar o backtick / personagens principais.

Meu caso de uso é que eu quero poder pesquisar na página do manual bash para aspas simples ou backticks para onde eles têm valor semântico e a desordem de caracteres não-semânticos backtick / prime faz isso difícil.

Eu tentei alterar o LC_ALL de en_us.UTF-8 para C e tentei usar a opção -P do man para especificar outros pagers / opções, mas ainda não encontrei uma solução.

Meu ambiente é man 2.6.3, CentOS 7.2 (3.10.0-327.13.1.el7.x86_64), bash 4.2.46 (1) ou zsh 5.0.2.

A minha preferência seria descobrir uma solução que faça com que man apresente aspas duplas como o caractere ASCII de aspas duplas (") ou para renderizar o conteúdo entre aspas como texto formatado (por exemplo, sublinhando ou encorajando-a).

Isso se aplica de maneira semelhante à forma como o man apresenta conteúdo com aspas simples como ' conteúdo ' .

Uma solução alternativa:

man bash | sed -e "s/\(''\|\'\'\)//g" -e "s/\'\([^']*\)//g" | less

Alguém pode me dizer como fazer man não mostrar o conteúdo citado com backticks e primes? A solução não deve exigir a instalação de nenhum software (ou seja, a solução deve funcionar com uma instalação mínima do CentOS 7.2).

    
por Steve Amerige 10.10.2016 / 12:51

3 respostas

2

Os backticks na página man bash são explicitamente fornecidos na origem do troff, não no resultado de alguma macro, por isso são difíceis de alterar. No entanto, os backticks únicos especiais são cotados em \' , então você poderia aplicar seu sed ao troff de origem usando essa diferença.

Em vez disso, você pode adicionar um comando troff para converter o backtick em outro caractere. O comando .tr AXBY traduz todos os A's para X e B para Y. Então

(echo '.tr '"'\''"'; zcat $(man -w bash)) | man /dev/stdin

converte backtick e aspas simples em aspas duplas. Isso deixa você com apenas os backticks únicos especiais desejados na saída, embora você também tenha artefatos como the pipeline"s return .

No geral, acho que sua "solução ruim" é bastante adequada.

    
por 10.10.2016 / 15:49
2

Pode não ser uma opção agradável, mas você pode usar w3m como navegador para a saída HTML de man :

BROWSER=w3m man -H bash

Eleprocessa''…''usandoaspasunicode(assimcomooGoogleChrome,mas,poralgummotivo,lynxnão).

OrepositóriodemanagesdoFreeBSDmediz man do CentOS 7 suporta -H .

    
por 10.10.2016 / 14:03
0

Concordar com @meuh que as aspas estão embutidas nas fontes troff (página de manual), se é difícil mudar é discutível. Isso depende principalmente do desenvolvedor da documentação fornecida. O bash usa essa convenção para trabalhar com o conjunto de ferramentas relacionadas , por exemplo, makeinfo .

Por exemplo, a página de manual do xterm usa macros para obter uma aparência (possivelmente) melhor:

.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds AQ \(aq
.el       .ds AQ '
.ie \n(.g .ds '' \(lq
.el       .ds '' ''
.ie \n(.g .ds '' \(rq
.el       .ds '' ''

Esse foi um relatório de bug (corrigido em 2009 ):

work around groff mapping of ASCII quotes using macros (requested by Reuben Thomas based on Colin Watson advice, fixes Debian #378700).

e usado, por exemplo

.PP
Although both windows may be displayed at the same time, one of them is
considered the \*(''active\*('' window for receiving keyboard input and terminal
output.

e produzindo isto (recortar / colar do xterm para preservar as aspas alternativas):

Although both windows may be displayed at the same time, one of them is considered the “active” window for receiving keyboard input and terminal output. This is the window that contains the text cursor. The active window can be chosen through escape sequences, the VT Options menu in the VTxxx window, and the Tek Options menu in the 4014 window.

Uma captura de tela mostra melhor:

OresultadoemPDFusacitaçõesdiferentesdevidoàcondiçãonamacro:

Portanto,umamelhoriapossívelseriamodificaropré-processadorparaadicionarasdefiniçõesdemacroesubstituiroscaracteresnomeadosdogroffemvezdeaspassimpleseduplasliterais.ComonenhumdelesproduzoASCIIporpadrão,haveriamenosconfusãosintáticanoresultado.

Issomelembraquemudaraqueles"xxx" para itálicos melhoraria as coisas (outra hora, talvez).

    
por 01.11.2016 / 09:44

Tags