Samba.lns에서 가장 잘 다루는 일반적인 INI 유형 파일이 있다고 가정해 보겠습니다. 다음과 같은 항목이 있습니다.
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
내 실제 예는 좀 더 복잡합니다. Augeas 내에서도 이 작업을 수행할 수 있나요?
답변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