Py-ini-config
Утилита для правки конфигов ini.
Установка
Введите в консоли:
sudo dnf in py-ini-config
Или найдите и установите py-ini-config через средство установки программ dnfdragora («Пакеты»).
Запуск
Данная утилита работает только в консольном режиме.
Действия в утилите
set
Изменяет значение переменной var или добавляет переменную var с указанным значением value в секцию section. Если секция section не существует, она будет создана. Если в одной секции есть несколько переменных с одинаковым именем, изменяет значение последней переменной.
add
Добавляет значение value к набору значений переменной var или создаёт переменную var (если такой не было) с указанным значением value в секции section. Если секция section не существует, она будет создана. Если в одной секции есть несколько переменных с одинаковым именем, добавляет значение к последней переменной.
comment
Комментирует переменную var в указанной секции section или секцию section целиком. Если в одной секции есть несколько переменных с одинаковым именем, комментирует все эти переменные.
uncomment
Раскомментирует переменную var в указанной секции section или секцию section целиком. Если в одной секции есть несколько переменных с одинаковым именем, раскомментирует только последнюю переменную.
get
Выводит значение переменной var в указанной секции section из файла file. Если переменная var не указана, выводит секцию целиком. Если в одной секции есть несколько переменных с одинаковым именем, выводит значение только первой переменной.
is_set
Проверяет, существует ли переменная var в указанной секции section. Возвращает 0, если переменная var существует, иначе возвращает 1. Если указано значение, возвращает 0, если указанное значение присутствует в наборе значений переменной var, иначе возвращает 1. Чтобы увидеть результат выполнения команды is_set, можно ввести в консоли после этой команды ; echo $? Это позволит увидеть код возврата последней выполненной в консоли операции.
get_commented
Выводит значение закомментированной переменной var в указанной секции section из файла file. Если в одной секции есть несколько переменных с одинаковым именем, выводит значение всех закомментированных переменных.
del
Удаляет переменную var из указанной секции section файла конфига file. Если указано значение value, удаляет указанное значение value из набора значений переменной var.Если в одной секции есть несколько переменных с одинаковым именем, удаляет одноименные переменные.
del_section
Удаляет секцию section из файла конфига file целиком. Если есть несколько секций с одинаковым именем, удаляет первую секцию.
is_empty
Проверяет, является ли указанная секция section пустой. Возвращает 0, если секция пустая, иначе возвращает 1. Чтобы увидеть результат выполнения команды is_set, можно ввести в консоли после этой команды ; echo $? Это позволит увидеть код возврата последней выполненной в консоли операции.
rename
Переименовывает переменную var в указанной секции section. Если в одной секции есть несколько переменных с одинаковым именем, переименовывает все одноименные переменные.
Дополнительные опции
-V, --version
Показывает текущую версию py-ini-config.
-s separator
Если указано, рассматривает файл конфига с указанным разделителем между переменными и их значениями separator вместо '=' по умолчанию.
-n, --no-section
Если указано вместо section, рассматривает файлы конфига без секций.
-c, --create
Если указано, создаёт новый файл конфига. Если файл уже существует, продолжает работать с ним. Используется с set или add.
-a, --all
Используется вместо отдельного файла с функциями get and is_set. Имя, которое пишется после этого ключа, одновременно является именем файла конфига и началом имени папки, которое оканчивается на ´.d´. Поиск указанной переменной var будет вестись как в указанном файле, так и во всех файлах внутри папки.
-i
Используется с -a, --all. Если указано, изменяет порядок обхода файлов и папок (сначала поиск будет осуществляться в корневых папках, потом в файлах). Используется для sddm.
-e
Используется с -a, --all. Если задано значение, в папке будут рассмотрены только файлы с указанным расширением.
--sort-collected
Используется с -a, --all (часто используется с --shadowing, но не всегда). Если указано, приоритет drop-in файлов будет зависеть не от положения директории в порядке обхода, а от алфавитного местоположения при сортировке списка файлов (при этом все файлы из drop-in директорий собраны в общую папку). Используется для systemd.
--shadowing
Используется с -a, --all. Если указано, одноименные файлы из следующей подпапки полностью заменяют одноименные файлы из предыдущей подпапки (т. е. менее приоритетные одноименные файлы будут полностью исключены). Используется для systemd.
--flush
Если используется с del, полностью удаляет секцию, в которой не осталось переменных.
--no-indent
Если указано с set или add, при указании значения для существующей переменной удаляет отступ в начале строки.
-S
Если указано значение, оно используется для отделения значений переменных друг от друга вместо запятой.
--semicolon-comment
Если указано значение, точка с запятой используется как символ комментирования вместо ´#´.
--view-comments
Используется с командами set и add. Если указан данный параметр, и переменная имеет указанное значение в закомментированной строке, такая команда раскомментирует всю строку (и комментирует раскомментированную, если она была).
-v, --verbose
Используется с -a, --all. Если указано, выводит подробную информацию в stderr в процессе работы.
Примеры
py-ini-config set -c config1 a b 5
создает файл config1 с секцией a и значением 5 переменной b
py-ini-config set -c config2 -n a 10
создает файл config2 со значением 10 переменной a без создания секции
py-ini-config get -a config1 -a config2 -n b
ищет значение переменной b в файле config1, потом в папке config1.d, затем также в файле config2 и папке config2.d.
py-ini-config get -a config1 -a config2 -i -n b
ищет значение переменной b в папке config1.d, потом в файле config1, затем также в папке config2.d и файле config2.
py-ini-config get -a config1 -a config2 -n b -e conf
ищет значение b без секций во всех файлах с расширением .conf
py-ini-config get -a config1 -a config2 -n b --shadowing
ищет значение переменной b, исключая при поиске одноименные файлы в config1
py-ini-config get -a config1 -a config2 -n b --sort-collected
ищет значение b без секций во всех файлах и папках .d, предварительно отсортировав все просматриваемые файлы в алфавитном порядке
py-ini-config set config1 a b 10
устанавливает значение 10 для переменной b в секции a файла config1
py-ini-config add config1 a b 11
добавляет значение 11 для переменной b в секции a файла config1
py-ini-config add config3 a b 11 -S !
добавляет значение 11 переменной b в секции a файла config3 c помощью разделителя значений переменных !
py-ini-config add config1 b b 601 --no-indent
добавляет значение 601 переменной b в секции b и убирает отступ в начале строки, если он был
py-ini-config comment config1 b
комментирует все переменные в секции b файла config1
py-ini-config comment config1 b b --semicolon-comment
комментирует переменную b в секции b файла config1 с помощью символа ;
py-ini-config uncomment config1 b
раскомментирует все переменные в секции b файла config1
py-ini-config get config1 b
выводит все значения переменных в секции b файла config1
py-ini-config get config2 -n b
выводит значение переменной b файла config2
py-ini-config get_commented config1 a b
выводит значение закомментированной переменной b в секции a файла config1
py-ini-config del config1 b c
удаляет переменную c из секции b файла config1
py-ini-config del config1 b a --flush
удаляет переменную a из секции b файла config1, после чего удаляет секцию b (в которой не осталось переменных)
py-ini-config del_section config1 a
удаляет всю секцию a из файла config1
py-ini-config is_empty config1 b
возвращает 0, если секция b файла config1 пустая, в противном случае возвращает 1
py-ini-config rename config1 b a newb
переименовывает переменную a секции b файла config1 в newb
py-ini-config rename config3 b d and -s :
переименовывает переменную d секции b файла config3 в and, разделителем между переменной и ее значением будет символ :