bash 변수에 Open Office 스프레드시트 문서가 저장되어 있습니다. 다음을 통해 Open Office를 제공하기 위해 다음과 같은 작업을 수행하고 싶습니다 STDIN
.
echo "$openOfficeDoc" | ooffice
그러나 이것은 작동하지 않습니다.
노트:Bash 변수의 내용은 디스크에 기록되어서는 안 됩니다.
파일의 실제 데이터를 Open Office에 전달하려고 한다는 점을 강조하고 싶습니다.
Open Office 스프레드시트 파일에 비밀번호를 저장하려고 합니다. 비밀번호는 GPG를 사용하여 암호화됩니다. 보안상의 이유로 비밀번호를 디스크에 기록하는 것을 원하지 않습니다.
bash 변수 값은 Open Office 스프레드시트 문서의 바이너리 blob입니다. 이것은아니요ASCII.
Blob을 생성하는 데 사용하는 bash 코드는 다음과 같습니다.
data=$(cat "Encrypted.gpg" | gpg -u "Dor" -d)
While은 Encrypted.gpg
Open Office 스프레드시트의 암호화된 파일입니다.
STDIN을 통해 Open Office에 데이터를 제공할 수 있나요?
답변1
저는 OpenOffice가 표준 입력을 읽을 수 없다고 생각합니다. 그러나 그것은 중요하지 않습니다. 임시 파일에 데이터를 쓰기만 하면 됩니다.
디스크에 비밀번호를 쓰고 싶지 않습니다. 그것은 중요하지 않습니다.디스크에 저장되지 않은 파일에 기록합니다.
많은 시스템은 저장을 위해 메모리 내 파일 시스템(tmpfs)을 사용합니다 /tmp
. Solaris는 수년 동안 이를 수행해 왔습니다. Linux 배포판은 혼합 속도가 느립니다(페도라 18채택했지만 Debian과 Ubuntu는 여전히 변경되지 않았습니다.) 일반적으로 시스템 관리자가 필요합니다.수동 설정. 그러나 최신 Linux 배포판에는 최신 버전의 표준 라이브러리에 필요한 tmpfs 파일 시스템이 설치되어 있습니다. tmpfs의 표준 위치는 다음과 같습니다./run
는 /run/shm
전역적으로 쓰기 가능합니다(동일한 권한으로 /tmp
). 그러나 일부 배포판에는 아직 이 기능이 없을 수도 /dev/shm
있고 다른 곳이 있을 수도 있습니다.
답변2
텍스트 데이터 가져오기
귀하의 질문이 확실하지 않지만 OpenOffice로 가져오려는 데이터가 있는 것 같습니다. 그렇다면 아래 방법 중 하나를 사용하겠습니다.
CSV 파일
이 데이터를 CSV 파일( )에 기록한 .csv
다음 OpenOffice에서 파일을 엽니다.
csv2odf
또 다른 아이디어는 명령줄 도구를 사용하여 csv2odf
CSV 형식의 데이터를 ODF 파일에 쓰는 것입니다.
실제 문서
그냥 파일을 열어
그러나 단지 명령줄에서 ODF 문서를 열려고 한다면 다음을 수행할 수 있습니다.
$ openoffice "$openOfficeDoc"
바이너리 데이터 가져오기
OpenOffice로 콘텐츠 파이프
여러 관점에서 볼 때 다음을 수행할 수 있는 방법이 없다고 생각합니다.
$ echo "$data" | openoffice
그러나 제한 요소는 Linux가 아닙니다. 변수에 저장된 데이터를 멋지게 에코하고 STDIN에서 들어오는 파일 데이터를 여는 방법을 아는 도구에 파이프할 수 있습니다.
예
$ echo $data|strings| head -10
[Content_Types].xml
E`2+
)+Bp_9
no+yV
2q^QF
M xv
C1lA
d:NA
_rels/.rels
b"gi
여기서 제한 요소는 OpenOffice입니다. 옵션을 살펴보면 STDIN을 통해 데이터를 열도록 유도할 수 있는 방법이 없습니다. 파일을 여는 방법만 알고 있습니다.
답변3
익명 파이프를 파일로 사용:
ooffice <(echo "$openOfficeDoc")
당신은 또한 볼 수 있습니다https://stackoverflow.com/questions/345505/how-can-you-diff-two-pipelines-in-bash
답변4
이는 실제로 귀하의 질문에 대한 답변은 아니지만 현재 하려는 작업에 대한 완전한 대안입니다. 비밀번호 관리자를 사용하세요.계발, 또는 비밀번호를 GPG로 암호화된 일반 텍스트로 저장하세요.