때로는 이 작업을 수행하는 것을 잊어 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}
.