本文由 opencc 轉換得
受 stow 啟發的一個 Linux 下點檔案管理專案(bash 實現)。
***********************************
*** 目前還是實驗性質的! ***
***********************************
整(統一碼: U+6574)筆畫數 16 所以我就用 z16 來當英文名了。
之所以選它,是因為這個字的含義很豐富,能表示:
- 做一件事
- 有序的
- 有條理的
- 聽起來比較敏捷
- 並且簡明
-
Gentoo Linux
eselect repository enable ryans #或 `layman -a ryans && layman -S` echo "\napp-admin/z16 **" >> /etc/portage/package.accept_keywords emerge -av app-admin/z16 z16
-
其他
git clone https://github.com/bekcpear/z16.git cd z16 ./z16.sh
載入屬於 etc, home-misc 和 vim 例項的所有檔案:
z16 load etc home-misc vim
通過 ssh 載入屬於 etc 例項的檔案到遠端伺服器並保持 30 分鐘的連線:
z16 -s alice@my.azure -i ~/.ssh/alice.key -k30M load etc
解除安裝屬於 home-misc 例項的檔案:
z16 unload home-misc
-
確保 z16 可以讀取到它的配置檔案
z16 #預設顯示幫助資訊
z16 會先檢查它系統級別的配置檔案,然後檢查使用者級別的。
如果這兩個配置檔案都不存在,那麼 z16 會提示初始化它自己。
請閱讀下文的 如何配置 一節以獲取更詳細的說明。
-
初始化例項:
z16 init <例項> [<更多的例項>...]
在初始化例項時, z16 會從它的基礎配置檔案中獲取用於儲存例項的資料夾路徑。
然後 z16 會在該資料夾下建立例項資料夾(名字同例項名),並生成一個被註釋掉的本地配置檔案。
-
把你的檔案放在適用的例項資料夾下,並修改例項的本地配置檔案,尤其是
parentdir
這個配置。 -
現在可以載入配置好的例項:
z16 load <配置好的例項> [<更多配置好的例項>...]
z16 會:
- 迭代式地在一個臨時目錄下對例項資料夾下的所有檔案建立軟連結(除本地配置檔案及配置的忽略檔案外),且會把字首為
dot-
(大小寫不敏感)的檔案/目錄替換該字首為.
。 - 修改軟連結及其目標檔案的所有者為配置的使用者/組 或 當前生效的使用者/組
- 如果一切正常, z16 會把臨時目錄下的軟連結合併到根檔案系統下。如果使用了
-s
引數,z16 會根據配置好的路徑把例項所擁有的檔案推到伺服器上對應的路徑下。
- 迭代式地在一個臨時目錄下對例項資料夾下的所有檔案建立軟連結(除本地配置檔案及配置的忽略檔案外),且會把字首為
-
unload
命令用於直接刪除給定例項的所有軟連結,並且刪除例項配置的父目錄下的所有空資料夾。z16 unload <配置好的例項> [<更多配置好的例項>...]
-
目前,如果需要重新命名例項,請在重新命名例項目錄後執行
--force load
。
z16 有好幾個配置檔案:
-
基礎配置檔案
- 系統級別,
/etc/z16/z16rc
- 使用者級別,預設為
${HOME}/.config/z16/z16rc
目前,以上兩個配置檔案用於配置:
- 儲存例項的資料夾路徑,預設為
${HOME}/.local/share/z16
- 用於所有例項的全域性配置檔案的名字,預設為
.z16.g.conf
使用者級別的配置檔案下的配置會覆蓋系統級別的配置
以上兩個配置檔案至少存在一個。
- 系統級別,
-
用於所有例項的全域性配置檔案,
<儲存例項的資料夾>/<全域性配置檔名>
目前,這個配置檔案用於配置:
- 用於每個例項的本地配置檔案的名字,預設為
.z16.l.conf
- 用於每個例項的預設父級目錄,它通常被設定為一個安全的路徑,以避免因例項漏寫父級目錄而可能出現的破壞系統檔案行為。預設為
/tmp/z16.tmp.d
- 軟連結及其目標檔案的使用者,預設為當前生效的使用者。
- 軟連結及其目標檔案的組,預設為當前生效的組。
- 用於所有例項的忽略檔案匹配表示式,每個表示式由逗號分隔且為 POSIX 擴充套件的正則表示式。
- 用於每個例項的本地配置檔案的名字,預設為
-
用於單個例項的本地配置檔案,
<例項資料夾>/<本地配置檔名>
目前,這個配置檔案用於配置:
- 此例項的父級資料夾,每次例項初始化時都應該配置這個配置
- 軟連結及其目標檔案的使用者,預設為全域性設定的使用者。
- 軟連結及其目標檔案的組,預設為全域性設定的組。
- 用於當前例項的忽略檔案匹配表示式,每個表示式由逗號分隔且為 POSIX 擴充套件的正則表示式。
忽略檔案匹配表示式的配置是累積的(本地配置會包含全域性下的忽略檔案配置)。以 !
開頭的表示式用於刪除所有被其能精確匹配的在其之前已經新增的表示式。
GPLv2