Заключение имен каталогов в кавычках в командной строке bash

Макросы meв groffиспользуют следующие положения шрифта для различных типов текста:

  1. Обычный текстовый шрифт
  2. (не используется?)
  3. Шрифт заголовка и шрифт раздела

Макросы будут переключаться на использование шрифтов, загруженных в эти позиции, при установке текста, например, для. заголовок раздела, поэтому макрос .ftбудет неэффективным. Вы все равно сможете использовать, например.

.sh 1 "\f(HBSection title"

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

Файл макроса meустанавливает ряд параметров, которые они используют для таких вещей, как шрифты, размер точек и т. д., поэтому многие интересные вещи довольно легко изменить, просто изменив несколько числовых регистров и тому подобное., но это, к сожалению, не описано в руководстве groff_me(7). Он также хорошо спрятан в файле макроса e.tmac(из-за того, что из файла удалены комментарии ). Мне пришлось прочитать исходный (необработанный -файл)e.tmac-uв исходном дистрибутиве groff, чтобы понять это :

.

.\"             *** PARAMETRIC INITIALIZATIONS ***
.
.
.rr x
.nr $v \n(.v00+\n(.sp-1/\n(.sp  \" vs as % of ps for.sz request
.nr $V \n($v                    \" same for displays & footnotes
.nr hm 4v                       \" header margin
.nr tm 7v                       \" top margin
.nr bm 6v                       \" bottom margin
.nr fm 3v                       \" footer margin
.nr tf 3                        \" title font: (real) Times Bold
.nr tp 10                       \" title point size
.hy 6
.nr bi 4m                       \" indent for blocks
.nr pi 5n                       \" indent for paragraphs
.nr pf 1                        \" normal text font
.nr pp 10                       \" normal text point size
.nr qi 4n                       \" indent for quotes
.nr qp -1                       \" down one point
.nr ii 5n                       \" indent for.ip's and.np's
.nr $m 1                        \" max number of columns
.nr $s 4n                       \" column separation
.nr sf 3                        \" section font -- Times Bold
.nr sp 10                       \" section title pointsize
.nr ss 12p                      \" section prespacing
.nr si 0                        \" section indent

Чтобы изменить шрифт раздела и заголовка на полужирный шрифт без засечек -, используйте

.fp 3 HB

, чтобы загрузить шрифт HBв позицию 3. Затем он будет подхвачен макросом .shи другими.

Пример:

.fp 3 HB
.bp
.sh 1 "Heading 1"
.lp
Text text.
.sh 2 "Heading 2"
.lp
Text text.

Это приведет к

Rendered PDF output from groff

0
25.09.2019, 11:40
1 ответ

Если я включу \wв подсказку и cd $'/tmp/new\nline', Bash покажет в подсказке только /tmp/newline. Кажется, что он не печатает буквальную новую строку, но это также не однозначный формат вывода.

${var@P}предназначен для расширения escape-символов стиля подсказки -, например \uдля имени пользователя, \hдля имени хоста и \wдля рабочего каталога, я сомневаюсь, что вы хотите их здесь. Вместо ${var@Q}, какие кавычки могут быть более полезными?

Установка PS1='${PWD@Q}\$ ', я получаю подсказку:$'/tmp/new\nline'$или '/tmp'$, если путь лучше. Альтернативой может быть PS1='$(printf "%q" "$PWD")\$ ', который в некоторых случаях дает другое цитирование, и, например,. оставляет кавычки в случае «хорошего» пути, поэтому /tmp$.


Чтобы отобразить домашний каталог в виде тильды, один из вариантов — выполнить эту замену вручную:

set_ppath() {
    printf -v ppath "%q" "$PWD"
    ppath="${ppath/$HOME/"~"}";
}
PROMPT_COMMAND=set_ppath
PS1='$ppath\$ '

Он по-прежнему заключает в кавычки весь путь, если его часть необходимо заключить в кавычки. Чтобы обойти это, я полагаю, вам придется пройти путь по частям.


Я понятия не имею, почему ${var@P}сворачивает обратную косую черту вот так.

2
28.01.2020, 02:29

Теги

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