자율 학습/학습
[Linux] vi readonly 파일 변경 강제 저장 실패 - sudo 사용자 권한으로 저장하기
60cod
2023. 1. 31. 16:39
현재 사용자의 소유가 아닌 파일은 readonly 모드가 설정되어 있다.
1. 저장 실패
:wq
E505: ~ is read-only (add ! to override)

2. 강제 저장 실패
:wq!
E212: Can't open file for writing

3. vim에서 super user 권한으로 파일 저장하는 방법
강제 저장도 실패했을 때,
해당 메시지 보면 권한 문제로 보인다.
:w !sudo tee % > /dev/null
| :w !어쩌구 | 현재 연 파일을 어쩌구의 stdin으로 적는다 (write) |
| stdin | 표준 입력 (standard input) |
| tee | 표준 입력에서 읽어서 표준 출력과 파일에 쓰는 명령어 |
| tee % | %는 현재 연 파일 |
| sudo tee FILENAME | tee의 stdin에 들어오는 content를 FILENAME으로 적는다 |
| :w !sudo tee % | 즉, 타겟파일 → tee stdin → 타겟파일 구조 |
| >/dev/null | tee의 stdout을 무시 (vim에서 사용자가 stdout을 볼 필요 없으므로) |


이렇게 하면 저장 잘 되었으니 :q! 엔터로 나가면 된다!
다시 들어가면 변경된 부분이 잘 적용되어 있는 것을 볼 수 있다.
참고