일반적인 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