Предоставляет ли terminfo опцион на /usr/local/share?

Вам нужно мыслить двоично, а не десятично. В частности, существует три 3-битных -двоичных числа :, по одному для владельца, группы и другого. Каждый со значениями в диапазоне от 000 до 111 (0 -7 в десятичном виде ).

напр. rw -rw -rw (666 )равно 110 110 110.

Значение umaskпредставляет собой маску, указывающую, какие биты будут включены или выключены (1 или 0 )при создании нового файла или каталога. например. Десятичное число 022 — это двоичное число 000 010 010, а десятичное число 021 — это 000 010 001

.

Биты разрешения объединяются по И -вместе с инвертированной umask, чтобы получить окончательное значение. «инвертировано» означает, что все биты инвертированы, т. е. все единицы заменены на 0, и наоборот -. например.NOT 022 (000 010 010) = 755 (111 101 101)

Пример:666 & !022 = 644. В двоичном формате это:

  Owner  Group  Other     mode
   110    110    110      666 
&  111    101    101      755   (this is the negated 022)
   ---    ---    ---      ---
   110    100    100      644

Кроме того,777 & !022 = 755:

  Owner  Group  Other     mode
   111    111    111      777 
&  111    101    101      755
   ---    ---    ---      ---
   111    101    101      755

Обратите внимание, что конечное значение каждого бита может быть 1 только в том случае, если оно равно 1 в как исходное значение разрешения (666 или 777)И в инвертированном umask. Если любой из них равен 0, результат равен 0. То есть 1 & 1 = 1 , а 1 & 0 = 0 .


Строго говоря, существует четвертое 3-битное -двоичное число для битов setuid, setgid и sticky. Вот почему вы часто видите разрешения и маски, указанные с начальным 0 (или другим начальным числом от 0 -до 7 ). например. 0777 или 2755.

0
18.01.2020, 01:23
2 ответа

Where should I install global terminfo files?

На типичной машине GNU/Linux вы должны поместить их в /etc/terminfo, где они будут искаться по умолчанию.

Это относится к большинству дистрибутивов на базе Debian или Fedora/Redhat, а также к Gentoo, Alpine и т. д.--infocmp -Dскажет вам, действительно ли это так в вашей системе. В дистрибутивах на основе Debian -ticтакже будет записывать туда скомпилированные записи по умолчанию при запуске от имени пользователя root (проверьте с помощьюtic -D).

Каталог /etc/terminfoудобен, когда вы хотите переопределить запись terminfo --, например. чтобы заменить возможности cnormи cvvisв записи linuxна некоторые, которые не включают мигание курсора.

Другие системы не имеют такой хорошей встроенной -функции переопределения :, поэтому вам придется вручную создать этот (или другой )каталог и явно указать его с помощью TERMINFOили TERMINFO_DIRSпеременные окружения; также основной каталог terminfo может быть не /usr/share/terminfo/, а /usr/gnu/share/terminfo/или каким-то другим. Проверьте man ncursesв вашей системе, чтобы узнать все подробности.

Существуют также системы (, например. FreeBSD ), которые вообще не поддерживают terminfo и все еще используют формат termcap. И, что еще больше усложняет ситуацию, некоторые системы могут иметь как базовую, так и «портированную» реализацию ncurses, каждая со своим собственным представлением о том, какими должны быть значения по умолчанию.

0
28.01.2020, 02:54

Это на странице руководства :

  • Все реализации terminfo распознают переменнуюTERMINFOдля выбора базы данных terminfo.
  • ncurses дополнительно распознает поиск -список каталоговTERMINFO_DIRS
  • расположение по умолчанию (для TERMINFOилиTERMINFO_DIRS)скомпилировано в -и может различаться в разных системах. Иногда упаковщики документируют местоположение (, если они переопределяют значения по умолчанию ).

Обычноinfocmp(в разных реализациях )показывает место, где было найдено описание терминала в комментарии в начале вывода.

Опцияticиinfocmp-Dncurses показывает используемые им местоположения.

Дополнительная литература:

0
28.01.2020, 02:54

Теги

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