-x
vim 의 옵션을 사용하여 파일을 암호화합니다. 이 파일을 쓰는 것보다이 파일을 훨씬 더 많이 읽었으므로 항상 cat을 사용하고 표시되는 내용 때문에 암호화되어 있음을 기억하십시오. 따라서 vim을 사용하고 암호를 입력 한 다음을 사용하여 종료해야합니다 :q
.
cat (또는 다른 명령, 물론 암호를 어딘가에 전달)을 사용하고 내용을 인쇄 / 가져 오는 방법이 있습니까? 아니면 편집기를 입력하지 않고 내용 만 인쇄하는 vim 옵션이 있습니까?
답변
오픈 소스 vimdecrypt를 살펴보십시오 .
vim-blowfish로 암호화 된 파일을 해독하기위한 명령 줄 도구입니다.
버전 7.3에서 vim은 강력한 내장 복어 암호화 / 복호화를 제공하며, 이는 특정 목적으로 gnupg를 통한 필터링보다 더 편리합니다. 불행히도 결과 파일은 vim 만 읽을 수 있기 때문에 배치 처리 또는 스크립팅에 사용하기가 어렵습니다. 또한 vim 크기의 의존성 및 크기를 가진 프로그램이 잠금을 해제해야하는 경우 암호화 된 데이터의 수명이 중요합니다.
Vimdecrypt는 vim 소스 인 blowfish.c와 sha256.c에서 두 개의 관련 파일을 들어 올려 간단한 명령 줄 도구로 인터페이스합니다. 파일에서 데이터를 읽고 해독 된 데이터를 표준 출력에 씁니다.
vimdecrypt path_to_data
암호는 stdin / stdout 리디렉션을 방해하지 않는 GNU getpass를 통해 얻습니다.
Vim의 configure 시스템은 완전히 제거되어 개발 된 32 비트 i386 리눅스 이외의 다른 플랫폼에 대한 지원을 중단했을 수 있습니다. 두 개의 관련 파일이 수정되지 않은 vim 프로젝트에서 가져 오기 때문에 vim.h 헤더를 수정하여 다른 플랫폼에서 지원을 복원하는 것은 쉽지 않습니다.
답변
이것은 우아한 해결책은 아니지만 빠르고 빠르지 만 단일 파일에서 작동하며 쉘 스크립트로 사용할 수 있습니다.
다음을 수행하는 세 가지 명령 시퀀스입니다.
- vim에서 파일 열기 (읽기 전용 모드) :
vim -R
- 파일을 일반 텍스트로 저장하고 종료하십시오.
-c ":set key= | sav ${filename}.plain | q
- 평문 파일을 cat :
cat ${filename}.plain
- (선택 사항) 일반 텍스트 파일을 삭제하십시오.
rm ${filename}.plain
결국 암호를 vim 명령으로 전달하는 스크립트를 가질 수 있습니다. 간단한 스크립트로 다음과 같습니다.
filename=$1
password=$2
vim -R -c ":set key= | sav ${filename}.plain | q" -- ${filename} <<< $password && cat ${filename}.plain && rm ${filename}.plain
여기서 첫 번째 인수는 파일 이름이고 두 번째 인수는 비밀번호입니다.
물론 명심해야 할 몇 가지 사항이 있습니다.
- 이름이 생긴 기존 파일을 덮어 쓰지 않아야합니다
${filename}.plain
. - 암호가 명령 행에 나타나고 기록에 저장됩니다. 매번 암호를 묻는 메시지가 표시되면
<<< $password
부품을 제거하십시오 .