Symlink
如何創建打開(字面上)目標文件的符號連結
假設我
bar.txt
在目錄中有一個文件foo
並創建一個baz.txt
指向foo/bar.txt
. 像:./foo ./foo/bar.txt ./baz.txt -> foo/bar.txt
如果我打開
baz.txt
我的編輯器會認為baz.txt
是在目錄中打開的.
。有沒有辦法創建一個連結,而bar.txt
不是(字面上)打開?上下文(或為什麼我要這樣做):我有一個目錄,其中包含大量文件,我在一個
.odt
文件中索引和註釋,該文件保留在同一目錄中。在這個.odt
文件中,我創建了指向目錄中索引文件的超連結,這樣我就可以輕鬆地訪問具有(更多)上下文的單個文件,而不僅僅是文件名。我將 LibreOffice 設置為將超連結保存為相對路徑,這樣這些連結就可以在我的所有電腦上工作,這些電腦並不總是與我的使用者文件具有相同的目錄樹。我想為這個
.odt
文件創建一個符號連結(或等效的),但是(根據上面的例子)如果連結打開baz.txt
,那麼相對路徑(從 LibreOffice 的角度來看)將是錯誤的。以前創建的超連結將不起作用,如果我碰巧在baz.txt
(當然是形像地說)中創建了一個超連結,它將在原始bar.txt
.
不,但是您可以創建一個 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[@]}"
現在,如果您
chmod +x lowrapper
將它放在 PATH 的某個目錄中,然後將 libreoffice 文件的處理程序從libreoffice
更改為lowrapper
,那麼 libreoffice 將打開連結目標而不是連結。