명령 대체를 통해 vim 시작

명령 대체를 통해 vim 시작

저는 서로 다른 두 대의 컴퓨터에서 프로젝트를 진행하고 있습니다. 하나는 Mac OSX 10.8.3을 실행하고 다른 하나는 Red Hat Enterprise Linux를 실행하고 있습니다. 내 Mac에서는 다음을 수행할 수 있습니다.

vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))

모든 것이 정상입니다. Linux 시스템에서는 실패합니다. 이 모든 것은 내가 예상한 대로 정확하게 작동합니다.

ls -R */*.@(h|cpp) */*/*.@(h|cpp)
echo $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
export myfilelist=$(ls -R */*.@(h|cpp) */*/*.@(h|cpp))
echo $myfilelist

하지만

vim $(ls -R */*.@(h|cpp) */*/*.@(h|cpp))

손상된 파일 이름 세트를 생성합니다.

^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" [New DIRECTORY]

또는

:ls
  1 %a   "^[[00m^[[00mevent_builder/include/eb_service.h^[[00m" line 1
  2      "^[[00mevent_builder/include/EventBuilder.h^[[00m" line 0

이유를 아는 사람 있나요?

답변1

ls출력 색상을 지정 하는 별칭(또는 함수)이 있습니다 . type -a ls무엇을 드릴까요? 대신 사용

vim $(command ls ...)

하지만: 파싱되지 않음ls

노력하다

shopt -s nullglob globstar
printf "%s\n" **/*.{h,cpp}

관련 정보