从命令行到 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