用 rcm 管理隱藏文件
許多 GNU/Linux 程序的一個特點是有個易於編輯的配置文件。幾乎所有常見的自由軟體都將配置設置保存在純文本文件中,通常採用結構化格式,如 JSON、YAML 或「類似 ini」 的文件中。這些配置文件經常隱藏在用戶的主目錄中。但是,基本的 ls
不會顯示它們。UNIX 標準要求以點開頭的任何文件或目錄名稱都被視為「隱藏」,除非用戶特意要求,否則不會列在目錄列表中。例如,要使用 ls
列出所有文件,要傳遞 -a
選項。
隨著時間的推移,這些配置文件會有很多定製配置,管理它們變得越來越具有挑戰性。不僅如此,在多台計算機之間保持同步是大型組織所面臨的共同挑戰。最後,許多用戶也對其獨特的配置感到自豪,並希望以簡單的方式與朋友分享。這就是用到 rcm 介入的地方。
rcm 是一個 「rc」 文件管理套件(「rc」 是命名配置文件的另一種約定,它已被某些 GNU/Linux 程序採用,如 screen
或 bash
)。 rcm 提供了一套命令來管理和列出它跟蹤的文件。使用 dnf
安裝 rcm。
開始使用
默認情況下,rcm 使用 ~/.dotfiles
來存儲它管理的所有隱藏文件。一個被管理的隱藏文件實際保存在 ~/.dotfiles
目錄中,而它的符號鏈接會放在文件原本的位置。例如,如果 ~/.bashrc
由 rcm 所管理,那麼詳細列表將如下所示。
[link@localhost ~]$ ls -l ~/.bashrc
lrwxrwxrwx. 1 link link 27 Dec 16 05:19 .bashrc -> /home/link/.dotfiles/bashrc
[link@localhost ~]$
rcm 包含 4 個命令:
mkrc
– 將文件轉換為由 rcm 管理的隱藏文件lsrc
– 列出由 rcm 管理的文件rcup
– 同步由 rcm 管理的隱藏文件rcdn
– 刪除 rcm 管理的所有符號鏈接
在兩台計算機上共享 bashrc
如今用戶在多台計算機上擁有 shell 帳戶並不罕見。在這些計算機之間同步隱藏文件可能是一個挑戰。這裡將提供一種可能的解決方案,僅使用 rcm 和 git。
首先使用 mkrc
將文件轉換成由 rcm 管理的文件。
[link@localhost ~]$ mkrc -v ~/.bashrc
Moving...
'/home/link/.bashrc' -> '/home/link/.dotfiles/bashrc'
Linking...
'/home/link/.dotfiles/bashrc' -> '/home/link/.bashrc'
[link@localhost ~]$
接下來使用 lsrc
驗證列表是否正確。
[link@localhost ~]$ lsrc
/home/link/.bashrc:/home/link/.dotfiles/bashrc
[link@localhost ~]$
現在在 ~/.dotfiles
中創建一個 git 倉庫,並使用你選擇的 git 倉庫託管設置一個遠程倉庫。提交 bashrc
文件並推送一個新分支。
[link@localhost ~]$ cd ~/.dotfiles
[link@localhost .dotfiles]$ git init
Initialized empty Git repository in /home/link/.dotfiles/.git/
[link@localhost .dotfiles]$ git remote add origin git@github.com:linkdupont/dotfiles.git
[link@localhost .dotfiles]$ git add bashrc
[link@localhost .dotfiles]$ git commit -m "initial commit"
[master (root-commit) b54406b] initial commit
1 file changed, 15 insertions(+)
create mode 100644 bashrc
[link@localhost .dotfiles]$ git push -u origin master
...
[link@localhost .dotfiles]$
在第二台機器上,克隆這個倉庫到 ~/.dotfiles
中。
[link@remotehost ~]$ git clone git@github.com:linkdupont/dotfiles.git ~/.dotfiles
...
[link@remotehost ~]$
現在使用 rcup
更新受 rcm 管理的符號鏈接。
[link@remotehost ~]$ rcup -v
replacing identical but unlinked /home/link/.bashrc
removed '/home/link/.bashrc'
'/home/link/.dotfiles/bashrc' -> '/home/link/.bashrc'
[link@remotehost ~]$
覆蓋現有的 ~/.bashrc
(如果存在)並重啟 shell。
就是這些了!指定主機選項 (-o
) 是對上面這種情況的有用補充。如往常一樣,請閱讀手冊頁。它們包含了很多示例命令。
via: https://fedoramagazine.org/managing-dotfiles-rcm/
作者:Link Dupont 選題:lujun9972 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive