Шрифты хранятся в некоторых различных, известных каталогах как ~/.fonts
и /usr/share/fonts
, обычно. Любой допустимый файл шрифтов, который Вы подвергаете одному из этих каталогов, разоблачит в выборе Ваших приложений вид шрифта диалоговых окон. Приложение менеджера по шрифту может возможно сохранить файлы шрифтов в каталоге, это известно ему, но не разыскивается шрифты в масштабе всей системы, затем создайте символьные ссылки от этих каталогов шрифта до фактических файлов шрифтов. При включении шрифта он может создать символьную ссылку и удалить его, когда Вы отключаете. Таким образом это не должно удалять файлы шрифтов из Вашей файловой системы и требовать, чтобы Вы переустановили каждый раз, когда Вы хотите их снова.
Другой подход может перемещать файлы шрифтов от и до этих каталогов шрифта. Снова, приложению знали, что каталог к нему, но не искавшее системой шрифты и файлами перемещения от этого каталога до каталога шрифта включает его и перемещает его в свой собственный каталог для отключения его.
У меня нет четкого представления о том, почему Ваши шрифты повреждаются, хотя, но у меня могут быть предположения: ошибка Вас, ошибки в программе и/или многих других возможных фактах. Но я предложил бы руководящие шрифты вручную. Вещь, которую необходимо сделать, к перемещению/символьной ссылке их к ~/.fonts
каталог, чтобы сделать их доступными, и отодвинуть их от этого каталога для создания их недоступными. Можно поместить их в своего рода каталог моих-шрифтов, который Вы выбираете (т.е. Я вставил мой ~/Dropbox/my/typeface/
), и символьная ссылка на них изнутри ~/.fonts
когда Вы хотите включить, и все еще использовать те приложения для простого просмотра тех шрифтов.
$ sed ':again;$!N;$!b again; :b; s/{[^{}]*}//g; t b' file3
This is
that wants
anyway.
Объяснение:
: снова; $! N; $! B опять
Это читает во всем файле.
: опять
- это метка. N
Читает в следующей строке и $! N
Читает в следующей строке при условии, что мы еще не на последней строке. $! B Опять же
Ветви обратно в снова
метку в условиях, что это не последняя строка.
: B
Это определяет метку B
.
S / {[^ {}] *} // G
Это удаляет текст в брекетах, если текст не содержит внутренних скобок.
T B
Если вышеупомянутая команда замены привела к изменению, прыгайте назад к метке B
. Таким образом, команда замены повторяется до тех пор, пока все скобки не будут удалены.
Перл-подход:
$ perl -F"" -a00ne 'for (@F){$i++ if /{/; $i||print; $i-- if /}/}' file
This is
that wants
anyway
-a
: включает автоматическое разбиение на разделитель файлов, заданный -F
в массив @F
. -F""
: устанавливает разделитель полей ввода пустым, в результате чего каждый элемент @F
будет одним из входных символов. -00
: включает "абзацный режим", где "строка" определяется как два последовательных символа новой строки. Это означает, что весь файл в данном случае будет рассматриваться как одна строка. Если в вашем файле может быть много параграфов, а скобки могут охватывать несколько параграфов, используйте -0777
вместо этого. -ne
: прочитайте входной файл и применяйте к каждой строке скрипт, заданный -e
. Сам скрипт на самом деле довольно прост. Счетчик инкрементируется на единицу каждый раз при просмотре {
и декрементируется на единицу для каждой }
. Это означает, что когда счетчик равен 0, мы не заключены в скобки и должны вывести:
for (@F){}
: сделайте это для каждого элемента @F
, каждого символа в строке. $i++ if /{/;
: увеличивать $i
на единицу, если этот символ является {
$i||print;
: печатать, если не установлен $i
(0 засчитывается как неустановленный). $i- если /}/
: декремент $i
на один, если этот символ является }