vim에서 파일 목록을 사용하여 파일을 열 수 없습니다.

vim에서 파일 목록을 사용하여 파일을 열 수 없습니다.

vim $(cat filelist)이전에 제안한 대로 vim을 사용하여 파일을 열어 보았습니다.질문.

다음과 같은 파일이 있다고 가정해 보겠습니다.

~/Workspace/bar/foo.cpp

포함된 경우 vim $(cat filelist)실행이 올바르게 열립니다 . 그러나 포함된 경우 명령은 파일을 열지 않습니다. 절대 경로를 사용하면 명령이 실패하는 이유가 궁금합니다.~/Workspacefoo.cppfilelistbar/foo.cppfilelist~/Workspace/bar/foo.cpp

답변1

이는 다양한 유형의 확장이 셸에서 실행되는 순서 때문입니다. 매뉴얼 bash페이지에는 다음과 같이 나와 있습니다.

확장은 단어로 분할된 후 명령줄에서 수행됩니다. 중괄호 확장, 물결표 확장, 매개변수 및 변수 확장, 명령 대체, 산술 확장, 토큰화, 경로 이름 확장 등 7가지 유형의 확장이 수행됩니다.

~is 물결표 확장을 바꾸고 $(...)is 명령을 바꿉니다. 이제 명령 대체를 수행한 후에는 더 이상 물결표 대체가 없음을 알 수 있습니다. 실제 절대 경로(파일 시스템 루트에서 시작 /)를 사용하면 작동합니다.

하지만 다음을 통해 직접 확장을 수행할 수 있습니다 sed.

vim $(sed "s_~_${HOME}_g" filelist)

관련 정보