(추가 구현을 위해) yaml 디렉터리 구조를 전체 경로로 변환하기 위해 shell/bash에 스크립트를 작성해 보았습니다 mkdir -p
. Yaml은 사람이 편집할 수 있기 때문에 제가 선택한 것입니다. 예제 구조는 다음과 같습니다.
- Downloads
- Music
- Movies
- University
- First year
- English
- Maths
- Second year
realpath .
따라서 첫 번째 수준을 현재 디렉터리(예: )로 바꾸고 두 번째 수준을 /home/maeda/Downloads
상위 디렉터리의 전체 경로(예: )로 바꾸고 싶습니다./home/maeda/Downloads/Music
그래서 저는 다음과 같은 결과를 얻고 싶습니다.
/home/maeda/Downloads
/home/maeda/Downloads/Music
/home/maeda/Downloads/Movies
/home/maeda/University
/home/maeda/University/First year
/home/maeda/University/First year/English
/home/maeda/University/First year/Maths
/home/maeda/University/Second year
달성하는 방법?
답변1
YAML 파일이 유효하다고 가정합니다.
Downloads:
Music:
Movies:
University:
First year:
English:
Maths:
Second year:
당신이 사용할 수있는
yq -r --arg prefix "$(realpath .)" 'paths | [ $prefix, .[] ] | join("/")' file.yaml
yq
그거 어디서 났어https://kislyuk.github.io/yq/
이는 jq
문서에서 "경로"를 가져오기 위해 표현식을 사용합니다. 이 컨텍스트에서 "경로"는 문서 자체의 특정 항목을 나타내므로 배열 경로는 First year
배열 [ 'University', 'First year' ]
(JSON 표기법을 사용하여 작성됨)입니다.
/
이러한 경로 배열은 구분 기호를 사용하여 연결할 수 있습니다 join("/")
.
realpath .
또한 into의 출력을 yq
내부 변수의 값으로 전달합니다 $prefix
. 이 값은 에 전달되기 전에 각 경로 배열 앞에 추가됩니다 join("/")
. 즉, 명령에 의해 출력되는 경로 이름 앞에 추가됩니다 yq
.