bash変数にOpen Officeスプレッドシート文書が格納されています。以下を介してOpen Officeを提供するために、次のことを行いたいと思いますSTDIN
。
echo "$openOfficeDoc" | ooffice
しかし、これはうまくいきません。
メモ:Bash変数の内容はディスクに書き込まないでください。
ファイルの実際のデータをOpen Officeに渡そうとしていることを強調したいと思います。
Open Officeスプレッドシートファイルにパスワードを保存しようとしています。パスワードはGPGを使用して暗号化されます。セキュリティ上の理由から、パスワードをディスクに書き込むことは望ましくありません。
bash変数の値は、Open Officeスプレッドシート文書のバイナリブロブです。これはいいえ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ディストリビューションは混合速度が遅い(Fedora 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で暗号化されたプレーンテキストとして保存します。