Вот сценарий удара, я раньше запускал приложение с другой темой. Не использовали его в течение многих лет, хотя, таким образом, я не знаю, будет ли это работать с текущим GTK.
#!/bin/bash
# lauch a gtk application with a different theme
# set GTKRCFILE variable to your favourite theme
GTKRCFILE=Clearlooks
GTK2_RC_FILES=/usr/share/themes/"$GTKRCFILE"/gtk-2.0/gtkrc "$@"
Вот немного информации, я вышел из архивов форм человечности. Не уверенный, если это будет проблема. (здесь) существует также сообщение в блоге, подробно излагающее этот метод немного больше. (здесь) и (здесь). Существует также подобный вопрос на этом сайте, которому уже ответили. (здесь)
При гноме приложения получают свою тему от гнома-демона настроек. Это мгновенно применяет любое изменение темы во всех активных приложениях, делающих на - appplication тема, изменяющаяся невозможный.
Я не думаю, что существует стандартный инструмент для этого. За исключением grep
/awk
/sed
и т.д. Но использование этого необходимо будет заботиться о партии других проблем как блокировка, формат, специальные символы, и т.д.
Я предлагаю использовать sqlite
. Определите простую таблицу и затем создайте tool_get()
и tool_put()
функции оболочки. sqlite
является портативным, быстро.
Вы получите дополнительную гибкость бесплатно. Можно определить, ограничивает, индекс, чтобы настроить сценарий или использовать тот DB на других языках однажды.
Если Ваша база данных является достаточно маленькой, то можно использовать файловую систему. Преимущество этого подхода состоит в том, что это является очень не использующим высокие технологии, и будет работать везде с очень небольшим количеством кода. Если ключи состоят из печатаемых символов и не содержат /
, затем можно использовать их в качестве имен файлов:
put () { key=$1; value=$2; printf %s "$value" >"datastore.db/$key"; }
get () { key=$1; cat "datastore.db/$key"; }
remove () { key=$1; rm "datastore.db/$key"; }
Для размещения произвольных ключей используйте контрольную сумму ключа как имя файла и дополнительно сохраните копию ключа (если Вы не довольны неспособностью перечислить ключи или сказать то, что ключ для данной записи).
put () {
key=$1; value=$2; set $(printf %s "$key" | sha1sum); sum=$1
printf %s "$key" >"datastore.db/$sum.key"
printf %s "$value" >"datastore.db/$sum.value"
}
get () {
key=$1; set $(printf %s "$key" | sha1sum); sum=$1
cat "datastore.db/$1.value"
}
remove () {
key=$1; set $(printf %s "$key" | sha1sum); sum=$1
rm "datastore.db/$1.key" "datastore.db/$1.value"
}
Обратите внимание, что игрушечные реализации выше не являются целой историей: у них нет полезного транзакционного свойства, такого как атомарность. Основные операции файловой системы, такие как создание файла и переименование являются атомарными однако, и возможно создать атомарные версии из функций выше.
Эти реализации прямо к файловой системе подходят с типичными файловыми системами только для маленьких баз данных до нескольких тысяч файлов. Вне этой точки большинству файловых систем нелегко справляться с большими каталогами. Можно адаптировать схему к большим базам данных при помощи многоуровневого расположения. Например, вместо того, чтобы хранить все файлы в одном каталоге, сохраните их в отдельных подкаталогах на основе первых нескольких символов их имен. Это - то, что мерзавец делает, например: его объекты, индексированные хешами SHA-1, хранятся в названных файлах .git/objects/01/2345679abcdef0123456789abcdef01234567
. Другими примерами программ, которые используют семантическое разделение на уровни, является сеть, кэширующая прокси Wwwoffle и polipo; оба хранят кэшируемую копию страницы, найденной в URL в названном файле www.example.com/HASH
где ХЕШ является некоторым кодированием некоторого хеша URL. ¹
Другой источник неэффективности - то, что большинство файловых систем тратит впустую много пространства, храня маленькие файлы — существуют отходы до 2 КБ за файл в типичных файловых системах, независимо от размера файла.
Если Вы принимаете решение пойти с реальной базой данных, Вы не должны предшествовать удобству прозрачного доступа к файловой системе. Существует несколько файловых систем FUSE для доступа к базам данных включая Беркли DB (с dbfs Jeff Garzik), Oracle (с Oracle DBFS), MySQL (с mysqlfs), и т.д.
¹ Для URL как http://unix.stackexchange.com/questions/21943/standard-key-value-datastore-for-unix
, Polipo использует файл unix.stackexchange.com/M0pPbpRufiErf4DLFcWlhw==
, с добавленным заголовком в файле, указывающем на фактический URL в открытом тексте; имя файла является кодированием base64 хеша MD5 (в двоичном файле) URL. Wwwoffle использует файл http/unix.stackexchange.com/DM0pPbpRufiErf4DLFcWlhw
; название файла является кодированием собственной разработки хеша MD5 и сопутствующим файлом http/unix.stackexchange.com/UM0pPbpRufiErf4DLFcWlhw
содержит URL.
Так как Вы назвали его, у типичного клиента советов есть интерфейс командной строки через redis-cli
. Некоторые примеры от redis-cli -h
:
cat /etc/passwd | redis-cli -x set mypasswd
redis-cli get mypasswd
redis-cli -r 100 lpush mylist x
(И если Вы хотите получить доступ к дб через файловую систему, можно использовать сокеты с -s
. Инструмент, который считал бы индекс дб непосредственно на каждом вызове, будет отчасти очень неэффективен.)