bash에서 dconf의 목록을 반복하는 방법은 무엇입니까?

bash에서 dconf의 목록을 반복하는 방법은 무엇입니까?

dconf에서 Gnome 터미널 구성 파일 목록을 읽고 싶습니다.

$ dconf read /org/gnome/terminal/legacy/profiles:/list
['b1dcc9dd-5262-4d8d-a863-c897e6d979b9', '1a3bb41a-5de6-4a23-af30-e70b4b8e5230', 'afa18dee-db51-42b6-b15d-cc35a5738932', '69a27e59-4bc4-4a9c-ba5c-1201ebdb9841']

그런 다음 나머지 목록을 반복합니다. 씹지 않고 이것을 할 수 있는 합리적인 방법이 있나요 tr? 현재 나는 다음을 가지고 있습니다:

for PROFILE in $( dconf read /org/gnome/terminal/legacy/profiles:/list|tr -d "[],'");
do
    dconf write /org/gnome/terminal/legacy/profiles:/:${PROFILE}/word-char-exceptions '@ms "-,.;/:?%&#_=+@~·"'
done

그런데 이건 좀 역겨운 것 같아요. 이 경우 세트가 [],'값에 표시되지 않는다는 것을 알고 있지만 이는 보편적으로 사실이 아닙니다. (이 목록은 대시로 구분된 소문자 16진수인 UUID이지만 모든 목록이 그런 것은 아닙니다.) 실제로 더 좋은 방법이 있습니까?설명하다여기에 제공된 대괄호 목록 구문이 대신 해결됩니까?

답변1

당신이 사용할 수 있는 의견에서 지적했듯이 jq, 이것은 그렇게 보이지는 않지만 '마음에 듭니다 ".

dconf read /org/gnome/terminal/legacy/profiles:/list | tr "'" '"' | jq

예상대로 작동

[
  "b1dcc9dd-5262-4d8d-a863-f897e3d979b9",
  "7b765e06-1bcc-4695-86d6-c2d391651ac2"
]

다음도 작동합니다

dconf read /org/gnome/terminal/legacy/profiles:/list | \
  tr "'" '"' | \
  jq '.[]' | \
  while read PROFILE; do
      echo "here's the logic for $PROFILE"
  done

관련 정보