是否可以通过 STDIN 向 Open Office 提供数据?

是否可以通过 STDIN 向 Open Office 提供数据?

我有一个 Open Office 电子表格文档存储在 bash 变量中。我想做类似以下的事情来通过以下方式提供 Open Office STDIN

echo "$openOfficeDoc" | ooffice

但这不起作用。

笔记:bash 变量的内容不得写入磁盘。

我要强调的是,我正在尝试将文件的实际数据传递给 Open Office。

我正在尝试将密码存储在 Open Office 电子表格文件中。密码使用 GPG 加密。出于安全原因,我不希望将密码写入磁盘。

bash 变量值是 Open Office Spreadsheet 文档的二进制 blob。这是不是ASCII。

我用来创建 blob 的 bash 代码是:

data=$(cat "Encrypted.gpg" | gpg -u "Dor" -d)

WhileEncrypted.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 加密的纯文本。

相关内容