파일 이름이 하나만 허용됨 오류

파일 이름이 하나만 허용됨 오류

때로는 이 작업을 수행하는 것을 잊어 sudo vim버리고 쓰기 권한이 없는 파일을 여는 경우가 있습니다. 나는 보았다이 게시물이것은 정말 도움이 됩니다.

이 작업을 수행 하면 :w !sudo tee %비밀번호를 묻고 옵션 (O)K(L)OAD. 이것은 훌륭하게 작동합니다. 하지만 :wq !sudo tee %이렇게 하면 vim오류가 발생합니다.

E172: Only one file name allowed

왜 after 프롬프트로 들어갈 수 없습니까 wq? 이 오류를 이해하지 못합니다.

답변1

왜냐하면 :w및 는 :wq서로 다른 옵션을 가진 두 개의 서로 다른 명령이기 때문입니다.

:w다음은 옵션이 포함된 명령에 대한 설명입니다 !{cmd}.

:[range]w[rite] [++opt] !{cmd}
                    Execute {cmd} with [range] lines as standard input
                    (note the space in front of the '!').  {cmd} is
                    executed like with ":!{cmd}", any '!' is replaced with
                    the previous command |:!|.

:w!과 는 완전히 :w !{cmd}다른 두 가지입니다. 전자에서 느낌표는 "강제 쓰기"를 의미하고, 후자에서는 전체 텍스트 범위를 후속 명령에 전달하는 데 사용되는 파이프 기호입니다(귀하의 경우 tee수퍼유저로 실행). , 둘 다 파일을 vi로 반환하고 와일드카드로 표시되는 파일 이름에 저장합니다 %.

불행하게도 이 명령에는 그러한 옵션이 없습니다 :wq. 사용할 수 있는 이 명령의 유일한 다른 형식은 :wq!(여기서 느낌표는 다른 명령으로 파이프하는 데 사용되지 않고 와 마찬가지로 강제로 종료하는 데 사용됩니다 :w!) 및 입니다 :w[!] {file}.

관련 정보