Symlink

如何創建打開(字面上)目標文件的符號連結

  • August 5, 2017

假設我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 將打開連結目標而不是連結。

引用自:https://unix.stackexchange.com/questions/382740