一般的なINIタイプファイルがあるとしましょう。 Samba.lnsはそのファイルをかなりうまく処理します。次の項目があります。
attribute = value
欲しい切り替える value
到着するSome-VALUE-x
。より具体的な例:
augtool> print /files/etc/yum.conf/main/cachedir
/files/etc/yum.conf/main/cachedir = "/var/cache/yum/$basearch/$releasever"
値を次に変更したいと思います。
"/var/cache/yum/noarch/$releasever"
つまり、残りを置き換え$basearch
て維持したいと思います。noarch
私の実際の例はもう少し複雑です。アウグストゥス内でもこれはできますか?
答え1
単一のAugeas API呼び出しではこれを行うことはできませんが、aug_getとaug_setを使用すると呼び出し言語で実行できます。たとえば、ruby-augeasを使用すると、次のようになります。
aug.set("/files/etc/yum.conf/main/cachedir", aug.get("/files/etc/yum.conf/main/cachedir").sub("$basearch", "noarch"))
例で augtool を使用している場合は、シェルで次のことができます。
cachedir=$(augtool get /files/etc/yum.conf/main/cachedir | sed 's/$basearch/noarch/')
augtool set /files/etc/yum.conf/main/cachedir "$cachedir"
答え2
基本レンズはShellvars_list
私が必要とする機能をほとんど実行します。
次のファイルが与えられた場合
GRUB_TIMEOUT=5
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=vgroot/lvswap rd.lvm.lv=vgroot/lvroot"
GRUB_DISABLE_RECOVERY="true"
に任意の値を追加したいですGRUB_CMDLINE_LINUX
。このレンズは、次のようにファイルを解析します。
augtool> print $v
/files/home/c14027/default-grub-sample
/files/home/c14027/default-grub-sample/GRUB_TIMEOUT
/files/home/c14027/default-grub-sample/GRUB_TIMEOUT/quote = ""
/files/home/c14027/default-grub-sample/GRUB_TIMEOUT/value = "5"
/files/home/c14027/default-grub-sample/GRUB_DEFAULT
/files/home/c14027/default-grub-sample/GRUB_DEFAULT/quote = ""
/files/home/c14027/default-grub-sample/GRUB_DEFAULT/value = "saved"
/files/home/c14027/default-grub-sample/GRUB_DISABLE_SUBMENU
/files/home/c14027/default-grub-sample/GRUB_DISABLE_SUBMENU/quote = ""
/files/home/c14027/default-grub-sample/GRUB_DISABLE_SUBMENU/value = "true"
/files/home/c14027/default-grub-sample/GRUB_TERMINAL_OUTPUT
/files/home/c14027/default-grub-sample/GRUB_TERMINAL_OUTPUT/quote = "\""
/files/home/c14027/default-grub-sample/GRUB_TERMINAL_OUTPUT/value = "console"
/files/home/c14027/default-grub-sample/GRUB_CMDLINE_LINUX
/files/home/c14027/default-grub-sample/GRUB_CMDLINE_LINUX/quote = "\""
/files/home/c14027/default-grub-sample/GRUB_CMDLINE_LINUX/value[1] = "crashkernel=auto"
/files/home/c14027/default-grub-sample/GRUB_CMDLINE_LINUX/value[2] = "rd.lvm.lv=vgroot/lvsap"
/files/home/c14027/default-grub-sample/GRUB_CMDLINE_LINUX/value[3] = "rd.lvm.lv=vgroot/lvroot"
/files/home/c14027/default-grub-sample/GRUB_DISABLE_RECOVERY
/files/home/c14027/default-grub-sample/GRUB_DISABLE_RECOVERY/quote = "\""
/files/home/c14027/default-grub-sample/GRUB_DISABLE_RECOVERY/value = "true"
プレフィックスを表すdefvar
ために augtool で作業を行います。$v
このパラメータに新しい値を追加しますCMDLINE
。
set $v/GRUB_CMDLINE_LINUX/value[last()+1] test=142
既存の削除:
rm $v/GRUB_CMDLINE_LINUX/value[. =~ regexp("^test=.*")]
キーペアを次に置き換えますtest=
。
set $v/GRUB_CMDLINE_LINUX/value[. =~ regexp("^test=.*")] test=1234