Почему человек -k или Apropos не может найти несколько страниц, а человек -a может?

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

Таким образом, согласно порядку open()и write()проверка разрешений всегда должна быть на первом месте.

1
10.10.2020, 13:39
2 ответа

Далее предполагается, что ваши manи друзья произошли от man -db . Учитывая, что Поп! _ОС основана на Ubuntu и что в Ubuntu 20.04 по умолчанию установлен man -db, это должно быть правдой.

При работе в режиме «что есть» или в режиме «по поводу»(man -fи man -kсоответственно ), manфактически вызывает двоичный файл whatisи делегирует ему поиск. С другой стороны, при работе в режиме по умолчанию (, например.man page)или в режиме «где»(man -w page)поиск выполняется самим двоичным файлом man. Подпрограммы поиска manи whatisреализованы независимо друг от друга.

Две основные причины могут привести к тому, что whatisперечислит меньше справочных страниц, чемman -a:

  1. неполная конфигурация :, если путь поиска, настроенный в /etc/manpath.config(, используется в Debian и его производных; /etc/man_db.confв некоторых других дистрибутивах )включает все каталоги, содержащие справочные страницы в вашей системе, но для некоторых из них MANDB_MAPв этом файле нет,тогда индексная база данных не инициализируется (и не ищется, если она существует )для них; man -aвсе равно найдет содержащиеся в них страницы, потому что он ищет непосредственно в каталогах, перечисленных в пути поиска, а whatisнет, потому что он ищет только в базе данных индекса;

  2. даже если все каталоги, содержащие справочные страницы, имеют правильные записи MANDATORY_MANPATHи MANDB_MAPв /etc/manpath.config, whatisможет по-прежнему содержать меньше результатов, чем man -a, потому что он просто пропускает дублировать имя -комбинации разделов из его вывода . В вашем случае printf(1)находится как в /usr/share/man, так и в /usr/share/fish/man, и указан только тот из каталога, который идет первым в пути поиска.

Вы можете использовать команду manpath, чтобы отобразить путь поиска, который будут использовать manи друзья, и убедиться, что он включает все соответствующие каталоги. По умолчанию он строится на основе записей MANDATORY_MANPATHв /etc/manpath.config.

man& друзья также могут быть вызваны с явно определенным путем поиска, установив MANPATHдля изменения результатов поиска. Например, если вы находитесь в случае (2 ),

MANPATH=/usr/share/fish/man:/usr/share/man whatis printf

скорее всего напечатает однострочное описание -для /usr/share/fish/man/man1/printf.1, а не одно для /usr/share/man/man1/printf.1.gz.

Вы также можете посмотреть, что происходит под капотом, используя опцию --debug. Скорее всего, это покажет, что ваши программы используют путь поиска, в котором /usr/share/manуказан до /usr/share/fish/man, и что все три файла найдены, но строка для второго найденного printfв секции 1просто не печатаетсяwhatis(или man -f).

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

slowman () (
    IFS=:
    for path in ${MANPATH-$(manpath)}
    do
        printf '%s\n' "Searching ${path}:" 1>&2
        MANPATH="$path" man "$@"
    done
)
2
18.03.2021, 23:04

мужчина мужчина:

   -w, --where, --path, --location
          Don't actually display the manual page, but do print  the  loca‐
          tion  of  the source nroff file that would be formatted.  If the
          -a option is also used, then print the locations of  all  source
          files that match the search criteria.
0
18.03.2021, 23:04

Теги

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