[해결][Q]find ~~ | xargs vi 했을 때 :q 이후 터미널 굳는 현상

송효진의 이미지

아래와 같은 상황에서 vi 를 빠져나오면 터미널이 굳는 문제가 있습니다. ctrl+s 가 아니라 ctrl+q 가 안먹습니다.
어떤 경우일까요?
감사합니다.

# find /home -type f -name "*.php" -exec grep -H test {} \; | grep -i vim | awk -F : '{ print $1 }' | xargs vi
빔: 경고: 터미널로 부터 입력받을 수 없습니다
17 파일을 고치기
익명 사용자의 이미지

정확한 답변이 아니라서 죄송합니다만, 내용만 봐서는

xargs vi -

이렇게 해야 될것 같습니다.

woonuk의 이미지

man xargs 내용중에 tty 관련 내용

       xargs sh -c 'emacs "$@" < /dev/tty' emacs
 
       Launches the minimum number of copies of Emacs needed, one after the other, to edit the files listed  on  xargs'
       standard  input.   This example achieves the same effect as BSD's -o option, but in a more flexible and portable
       way.

이렇게 실행하면 되는군요.

추가) 여러 파일명이 인자값으로 넘어올 경우, vi 편집을 마치고 :q 아닌 :n 으로 다음 파일 편집으로 넘어갑니다.

송효진의 이미지

잘 실행되네요. 감사합니다.
man xargs 해볼 생각을 못했네요.ㅋ
vi 를 왜 두번 쓰는지 문법은 여전히 이해가 안가네요.

송효진의 이미지

제목에 해결을 붙이고 싶은데 수정이 안되네요;