vim $(cat filelist)
이전에 제안한 대로 vim을 사용하여 파일을 열어 보았습니다.질문.
다음과 같은 파일이 있다고 가정해 보겠습니다.
~/Workspace/bar/foo.cpp
포함된 경우 vim $(cat filelist)
실행이 올바르게 열립니다 . 그러나 포함된 경우 명령은 파일을 열지 않습니다. 절대 경로를 사용하면 명령이 실패하는 이유가 궁금합니다.~/Workspace
foo.cpp
filelist
bar/foo.cpp
filelist
~/Workspace/bar/foo.cpp
답변1
이는 다양한 유형의 확장이 셸에서 실행되는 순서 때문입니다. 매뉴얼 bash
페이지에는 다음과 같이 나와 있습니다.
확장은 단어로 분할된 후 명령줄에서 수행됩니다. 중괄호 확장, 물결표 확장, 매개변수 및 변수 확장, 명령 대체, 산술 확장, 토큰화, 경로 이름 확장 등 7가지 유형의 확장이 수행됩니다.
~
is 물결표 확장을 바꾸고 $(...)
is 명령을 바꿉니다. 이제 명령 대체를 수행한 후에는 더 이상 물결표 대체가 없음을 알 수 있습니다. 실제 절대 경로(파일 시스템 루트에서 시작 /
)를 사용하면 작동합니다.
하지만 다음을 통해 직접 확장을 수행할 수 있습니다 sed
.
vim $(sed "s_~_${HOME}_g" filelist)