Как 'man' может отображать двойные кавычки не как двойные обратные кавычки и простые символы ?

Что-то вроде следующего скрипта, использующего gawk

#!/bin/bash
gawk -F, 'tbl[$1]!=""{$2=tbl[$1];OFS=",";print;next}{tbl[$1]=$2;}' $1 $2

Сначала вы передаете два файла с файлом токена. Это предполагает, что в первом файле нет повторов, и если во втором файле есть какие-либо лишние строки, где первое поле не имеет совпадения в первом файле, то эти строки не выводятся.

Программа gawk создает ассоциативный массив tbl , индексированный первым полем, из первого файла, затем использует его для замены второго поля для второго файла, затем печатает строки с заменами и с использованием "," в качестве разделителя полей. Подробнее см. man gawk .

1
13.04.2017, 15:36
3 ответа

Обратные кавычки на странице руководства bash явно указаны в Источник troff, а не результат какого-либо макроса, поэтому его сложно изменить. Однако специальные одиночные обратные кавычки цитируются \ `, поэтому вы можете применить свой sed к исходному troff вместо этого, используя это различие.

Вместо этого вы можете добавить команду troff для преобразования обратной кавычки в какой-либо другой символ. Команда .tr AXBY переводит все A в X и B в Y. Таким образом,

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

переводит обратные кавычки и одинарные кавычки в двойные кавычки. Это оставляет вам только требуемые специальные одиночные обратные кавычки в выводе, хотя у вас также есть артефакты, такие как возврат конвейера .

В целом, я думаю, что ваш «плохой обходной путь» вполне адекватен.

2
27.01.2020, 23:19

Это может быть неприятный вариант, но вы можете использовать w3m в качестве браузера для вывода HTML man :

BROWSER=w3m man -H bash

enter image description here

Он отображает «…» ' с использованием кавычек Unicode (как и Google Chrome, но по какой-то причине lynx этого не делает).

В репозитории man-страниц FreeBSD говорится, что man CentOS 7 поддерживает -H .

2
27.01.2020, 23:19

Согласие с @meuh в том, что цитаты встроены в источники troff (справочной страницы), вопрос о том, трудно ли изменить , остается спорным. Это во многом зависит от разработчика данной документации. bash использует это соглашение для работы с набором инструментов , например, makeinfo .

Например, на странице руководства xterm используются макросы для (возможно) лучшего внешнего вида:

.\" 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 '' ''

Это было из отчета об ошибке (исправлено в 2009 ):

работать над отображением groff в ASCII цитаты с использованием макросов (запрошены Рубеном Томасом на основании совета Колина Ватсона, исправляет Debian # 378700 ).

и используется, например,

.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.

и производит это (вырезать / вставить из xterm, чтобы сохранить альтернативные кавычки):

Хотя оба окна могут отображаться одновременно, одно из них считается «активным» окном для приема ввода с клавиатуры и вывода терминала . Это окно, в котором находится текстовый курсор. Активное окно можно выбрать с помощью управляющих последовательностей, меню параметров VT в окне VTxxx и меню параметров Tek в окне 4014 {{1 }} окно.

На скриншоте это лучше видно:

example from xterm

Результат в PDF использует разные кавычки из-за условия в макросе:

PDF rendering of quote-example

Таким образом, возможным улучшением было бы изменение препроцессора для добавления определений макросов и замены именованных символов groff а не буквальные одинарные и двойные кавычки. Поскольку по умолчанию ни один из них не создает ASCII, в результате будет меньше синтаксического беспорядка.

Это напоминает мне, что замена этих «xxx» курсивом улучшит ситуацию (возможно, в другой раз).

0
27.01.2020, 23:19

Теги

Похожие вопросы