从命令行到 libreoffice 配置文件的路径
Path to the configuration files of libreoffice from the command line
我习惯于 运行 libreoffice 无头地从 bash 脚本中执行一些宏:
soffice --headless "$year_to_process"/"$initials".ods macro:///Standard.C69.MergeSaveClose
在我这样做之前,我需要检查目录 $HOME/.config/libreoffice/4/user/basic/Standard/
.
中是否存在宏文件 c69.xba
问题是上面的数字“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 使用的宏的目录的正确路径,而不使用“*”?
从上面 Aserre 关于 LibreOffice 配置路径的任意字符的评论开始,我选择 select 最近创建的 LibreOffice 配置文件,使用 -t
ls
命令的选项。所以我找到了下一个解决方案:
# 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 无头地从 bash 脚本中执行一些宏:
soffice --headless "$year_to_process"/"$initials".ods macro:///Standard.C69.MergeSaveClose
在我这样做之前,我需要检查目录 $HOME/.config/libreoffice/4/user/basic/Standard/
.
c69.xba
问题是上面的数字“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 使用的宏的目录的正确路径,而不使用“*”?
从上面 Aserre 关于 LibreOffice 配置路径的任意字符的评论开始,我选择 select 最近创建的 LibreOffice 配置文件,使用 -t
ls
命令的选项。所以我找到了下一个解决方案:
# 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
}