gus*_*brs 6 symlink libreoffice
假设我bar.txt
在目录中有一个文件foo
并创建一个baz.txt
指向foo/bar.txt
. 喜欢:
./foo
./foo/bar.txt
./baz.txt -> foo/bar.txt
Run Code Online (Sandbox Code Playgroud)
如果我打开baz.txt
我的编辑器会认为baz.txt
是在目录中打开的.
。有没有办法创建一个链接,而bar.txt
不是(字面上)打开?
上下文(或我为什么要这样做):我有一个目录,其中包含大量文件,我在.odt
保留在同一目录中的文件中对这些文件进行索引和评论。在这个.odt
文件中,我创建了指向目录中索引文件的超链接,以便我可以轻松地访问具有(远)更多上下文的单个文件,而不仅仅是文件名。我将 LibreOffice 设置为将超链接保存为相对路径,以便这些链接可以在我的所有计算机中使用,这些计算机并不总是与我的用户文件具有相同的目录树。
我想为这个.odt
文件创建一个符号链接(或等效的),但是(根据上面的例子)如果链接打开,baz.txt
那么相对路径(从 LibreOffice 的角度来看)将是错误的。以前创建的超链接将不起作用,如果我碰巧在baz.txt
(当然是比喻性的)中创建了一个超链接,它在原始bar.txt
.
PSk*_*cik 12
不可以。但是您可以创建一个 libreoffice 包装器,该包装器将采用符号链接的每个参数并将其转换为$(readlink -f $the_symlink)
. 然后,您可以将文件管理器设置为通过该包装器打开 libreoffice 文件。
说唱歌手:
#!/bin/bash -e
args=()
for a; do
case $a in
-*) args+=("$a");; #skip flags (your file names don't start with -, right?)
*) if ! [ -L "$a" ]; then #not a link
args+=("$a")
else #link => target
args+=( "$( readlink -f "$a")" )
fi
;;
esac
done
libreoffice "${args[@]}"
Run Code Online (Sandbox Code Playgroud)
现在,如果您chmod +x lowrapper
将它放在 PATH 的某个目录中,然后将 libreoffice 文件的处理程序从libreoffice
更改为lowrapper
,那么 libreoffice 将打开链接目标而不是链接。