В то время как нумерация cat
не соответствует POSIX, nl
соответствует, и POSIX также определяет стили нумерации, которые nl
использует:
−b type Specify which logical page body lines shall be numbered.
Recognized types and their meaning are:
a Number all lines.
t Number only non-empty lines.
n No line numbering.
pstring Number only lines that contain the basic regular
expression specified in string.
The default type for logical page body shall be t (text lines
numbered).
Итак, несмотря на то, что это значение по умолчанию:
nl -bt filename
Хранилищеshared-mime-info
уже указывает MIME-тип application/pgp-keys
. Посмотреть можно здесь:
<mime-type type="application/pgp-keys">
<comment>PGP keys</comment>
<acronym>PGP</acronym>
<expanded-acronym>Pretty Good Privacy</expanded-acronym>
<sub-class-of type="text/plain"/>
<generic-icon name="text-x-generic"/>
<magic priority="50">
<match type="string" value="-----BEGIN PGP PUBLIC KEY BLOCK-----" offset="0"/>
<match type="string" value="-----BEGIN PGP PRIVATE KEY BLOCK-----" offset="0"/>
<match type="big16" value="0x9501" offset="0"/>
<match type="big16" value="0x9500" offset="0"/>
<match type="big16" value="0x9900" offset="0"/>
<match type="big16" value="0x9901" offset="0"/>
</magic>
<glob pattern="*.skr"/>
<glob pattern="*.pkr"/>
<glob pattern="*.asc" weight="10"/>
<glob pattern="*.pgp"/>
<glob pattern="*.gpg"/>
<glob pattern="*.key"/>
</mime-type>
или здесь на своей машине:
/usr/share/mime/packages/freedesktop.org.xml
Однако шаблон глобуса *.pub
не используется, вероятно, чтобы избежать конфликтов с форматом MS Publisher. Один обходной путь - просто переименовать файлы, например. *.asc
файлы. Но продолжим, предполагая, что переименование файлов не вариант. Вот файл mimeinfo, который нам нужен (обратите внимание, что он должен называтьсяpgp-keys.xml
):
$ cat pgp-keys.xml
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/pgp-keys">
<comment>PGP keys</comment>
<acronym>PGP</acronym>
<expanded-acronym>Pretty Good Privacy</expanded-acronym>
<sub-class-of type="text/plain"/>
<generic-icon name="text-x-generic"/>
<magic priority="10">
<match value="-----BEGIN PGP PUBLIC KEY BLOCK-----" type="string" offset="0"/>
</magic>
<glob weight="10" pattern="*.pub"/>
</mime-type>
</mime-info>
Преимущество «волшебной» части заключается в том, что он будет искать эту строку в начале файла, затем определите MIME-тип в зависимости от того, совпадает он или нет. Это означает, что файлы с mimetype application/vnd.ms-publisher
может по-прежнему иметь расширение файла .pub
и жить в относительной гармонии вместе с открытыми ключами, которые также имеют расширение файла .pub
. Для этого мы должны установить файл mimeinfo.
Чтобы установить его для одного пользователя:
xdg-mime install --mode user pgp-keys.xml
update-mime-database ~/.local/share/mime
Для установки системного -широкого:
sudo xdg-mime install --mode system pgp-keys.xml
sudo /usr/bin/update-mime-database /usr/share/mime
Я проверил результат на примере открытого ключа отсюда:
https://www.intel.com/content/www/us/en/security-center/pgp-public-key.html
и пример файла MS Publisher отсюда:
Вы можете попробовать это сами с репозиторием git здесь: