从命令行到 libreoffice 的配置文件的路径

Posted

技术标签:

【中文标题】从命令行到 libreoffice 的配置文件的路径【英文标题】:Path to the configuration files of libreoffice from the command line 【发布时间】:2018-03-07 10:28:57 【问题描述】:

我使用无头运行 libreoffice 来执行 bash 脚本中的一些宏:

soffice --headless "$year_to_process"/"$initials".ods macro:///Standard.C69.MergeSaveClose

在此之前,我需要检查宏文件c69.xba 是否存在于目录$HOME/.config/libreoffice/4/user/basic/Standard/ 中。

问题是上面的数字“4”在我看来是版本相关的。另一个问题是该数字与libreoffice --version 返回的主要版本号不完全匹配,它输出:

LibreOffice 5.4.5.1 40m0(Build:1)

到目前为止,我编写的代码是:

# check the macro .config/libreoffice/*/user/basic/Standard/c69.xba is present
[ -f $HOME/.config/libreoffice/*/user/basic/Standard/c69.xba ] || 
    echo "$cmd: missing file basic/Standard/c69.xba"
    exit 1

使用“*”匹配任何版本,但是当出现第二个目录时,如.config/libreoffice/4,5/user/basic/Standard,我的代码将不再工作。

我的问题是:如何在不使用“*”的情况下(从命令行)获取包含当前版本 libreoffice 使用的宏的目录的正确路径?

【问题讨论】:

你知道你的配置文件夹是如何与你的版本号相关联的吗? LibreOffice 5.4.5.1 版本是否意味着您将拥有一个 $HOME/.config/libreoffice/5 文件夹? 就我而言,但是使用 LibreOffice 5,配置文件位于 $HOME/.config/libreoffice/4。这些设置可以从 GUI 中的菜单 Tools > Options > LibreOffice > Paths 中看到。我使用的是最近全新安装的系统。所以我不认为这是以前在 LibreOffice 4 下安装的遗留问题。我的结论是 LibreOffice 和配置文件夹之间的关联必须是硬编码的。但谁知道呢? 是的,取自the documentation,路径似乎是任意的,没有任何真正的相关性:/ 您可以结合eval $(which libreoffice) --version 做一个案例陈述,或者假设用户使用了足够新的版本并且在你的脚本中硬编码4 @PierreFrançois:libreoffice 版本到.xba 文件之间的映射是如何完成的?所以你的意思是,如果libreoffice --version 返回一个包含4 的字符串,我们需要在该文件夹下查找文件?和其他类似的人? @Aserre:感谢您的建议,但脚本并非旨在交互。我正在寻找最近最少创建的个人资料的方向。 【参考方案1】:

从Aserre上面关于LibreOffice配置路径的任意字符的评论开始,我选择使用ls命令的-t选项选择最近创建的LibreOffice配置文件。所以我找到了下一个解决方案:

# check the macro .config/libreoffice/*/user/basic/Standard/c69.xba is present
path=$(ls -dt "$HOME"/.config/libreoffice/* | head -n1) # take only first line of output of ls -dt
[ -f "$path/user/basic/Standard/c69.xba" ] || 
    echo "$cmd: missing file basic/Standard/c69.xba"
    exit 1
   

【讨论】:

以上是关于从命令行到 libreoffice 的配置文件的路径的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行对 OpenOffice/LibreOffice 电子表格运行 sql 查询?

在终端中使用 LibreOffice 从 Mac 命令将 HTML 转换为 PDF?

使用 LibreOffice 的 'scalc' 从命令行将制表符分隔的文本转换为 Excel

Unoconv/libreoffice 命令行转换很慢

Debian如何用命令行安装最新版的LibreOffice?

如何从命令行 Python 脚本将所有工作表保存在 LibreOffice Calc 电子表格中