파일을 stdout으로 해독하고 그 내용을 주어진 명령으로 파이프하려고 합니다. 예를 들어 cat
명령, wc
명령 등이 있습니다. 하지만 아래 명령을 단순화할 수 있는 다른 아이디어가 있을까요?
echo "openssl enc -aes-256-cbc -in "$(read -p "enter file:" fp && echo \"$fp\")" -k "$(read -s -p "enter passwd:" pswd && echo \"$pswd\")" -d | "$(read -p "enter command:" cmd && echo \"$cmd\")" " | xargs -0 -I{} /usr/bin/bash -c {}
완전성을 위해 파일을 암호화하고 해독하는 명령은 다음과 같습니다.
암호화된 파일(비밀번호로 보호됨)
openssl enc -aes-256-cbc -in in.txt -out out.txt -e
파일 암호 해독
openssl enc -aes-256-cbc -in out.txt -k hello -d
물론 지원되는 모든 암호를 사용할 수 있습니다.
답변1
불필요하게 복잡하게 만듭니다. 필요한 것은 몇 가지 편리한 기능뿐입니다.
enc () {openssl enc -aes-256-cbc -in "$@"}
dec () {openssl enc -d -aes-256-cbc -in "$@"}
비밀번호나 키를 제공하지 않으면 openssl
비밀번호나 키를 묻는 메시지가 표시됩니다. 즉, 해당 비밀번호나 키를 명령에 작성할 필요가 없습니다.
파일을 암호화하려면:
enc foo > foo.enc
파일 암호 해독:
dec foo.enc
이는 자연스럽게 다른 명령으로 파이프될 수 있습니다.
dec foo.enc | wc -l
답변2
프로그래밍 관점에서는 비즈니스 로직을 사용자 인터페이스와 분리해야 합니다. 파일의 암호를 해독하고 다른 장소에서 옵션을 빌드하면 됩니다.