自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用Chezmoi取回你的點文件

系統(tǒng) Linux
在 Linux 中,點文件是隱藏的文本文件,從 Bash、Git 到 i3 或 VSCode 等更復(fù)雜的許多應(yīng)用程序,都用它存儲配置設(shè)置。

 [[322286]]

在 Linux 中,點文件是隱藏的文本文件,從 Bash、Git 到 i3 或 VSCode 等更復(fù)雜的許多應(yīng)用程序,都用它存儲配置設(shè)置。

這些文件大多數(shù)都放在 ~/.config 目錄中或用戶主目錄中。編輯這些文件使你可以自定義也許沒有提供設(shè)置菜單的應(yīng)用程序,并且它們可以跨設(shè)備甚至是跨其它 Linux 發(fā)行版移植。但是,整個 Linux 發(fā)燒友社區(qū)的討論焦點是如何管理這些點文件以及如何共享它們。

我們將展示一個名為 Chezmoi 的工具,該工具與其它工具略有不同。

點文件管理的歷史

如果你在 GitHub 上搜索“dotfiles”,那么你將看到有超過 10 萬個存儲庫在解決一個目標(biāo):將人們的點文件存儲在可共享且可重復(fù)的領(lǐng)地中。但是,除了都在使用 Git 之外,它們存儲文件的方式各有不同。

雖然 Git 解決了代碼管理問題,也將其轉(zhuǎn)換為配置文件管理,但它并沒有解決如何區(qū)分發(fā)行版、角色(例如家用計算機(jī)與工作計算機(jī))、機(jī)密信息管理以及按設(shè)備配置的問題。

因此,許多用戶決定制定自己的解決方案,多年來,社區(qū)已經(jīng)做出了許多成果。本文將簡要介紹已有的一些解決方案。

在孤立的環(huán)境中進(jìn)行實驗

你想在封閉的環(huán)境中快速嘗試以下解決方案嗎?運行:

  1. $ podman run --rm -it fedora

來創(chuàng)建一個 Fedora 容器嘗試應(yīng)用程序。退出容器時,該容器將自動刪除自身。

安裝問題

如果將點文件存儲在 Git 存儲庫中,你肯定希望可以讓更改輕松地自動應(yīng)用到主目錄之中,乍一看,最簡單的方法是使用符號鏈接,例如 ln -s ~/.dotfies/bashrc ~/.bashrc。這可以使你的更改在更新存儲庫時立即就緒。

符號鏈接的問題在于管理符號鏈接可能很麻煩。Stow 和 RCM(在 Fedora 雜志上介紹過)可以幫助你管理這些,但是這些并不是非常舒服的解決方案。下載后,需要對私有文件進(jìn)行適當(dāng)?shù)男薷暮驮O(shè)置訪問模式。如果你在一個系統(tǒng)上修改了點文件,然后將存儲庫下載到另一個系統(tǒng),則可能會發(fā)生沖突并需要進(jìn)行故障排除。

解決此問題的另一種方法是編寫自己的安裝腳本。這是最靈活的選項,但要權(quán)衡花費更多時間來構(gòu)建自定義解決方案是否值得。

機(jī)密信息問題

Git 旨在跟蹤更改。如果你在 Git 存儲庫中存儲密碼或 API 密鑰之類的機(jī)密信息,則會比較麻煩,并且需要重寫 Git 歷史記錄以刪除該機(jī)密信息。如果你的存儲庫是公開的,那么如果其他人下載了你的存儲庫,你的機(jī)密信息將不再保密。僅這個問題就會阻止許多人與公共世界共享其點文件。

多設(shè)備配置問題

問題不在于如何將配置拉到多個設(shè)備,而是當(dāng)你有多個需要不同配置的設(shè)備的問題。大多數(shù)人通過使用不同的文件夾或使用不同的復(fù)刻fork來處理此問題。這使得難以在不同設(shè)備和角色集之間共享配置。

Chezmoi 是如何干的

Chezmoi 是一種考慮了以上問題的用于管理點文件的工具,它不會盲目地從存儲庫復(fù)制或符號鏈接文件。 Chezmoi 更像是模板引擎,可以根據(jù)系統(tǒng)變量、模板、機(jī)密信息管理器和 Chezmoi 自己的配置文件來生成你的點文件。

Chezmoi 入門

目前,Chezmoi 并不在 Fedora 的默認(rèn)軟件庫中。你可以使用以下命令下載 Chezmoi 的當(dāng)前版本。

  1. $ sudo dnf install https://github.com/twpayne/chezmoi/releases/download/v1.7.17/chezmoi-1.7.17-x86_64.rpm

這會將預(yù)打包的 RPM 安裝到你的系統(tǒng)中。

讓我們繼續(xù)使用以下方法創(chuàng)建你的存儲庫:

  1. $ chezmoi init

它將在 ~/.local/share/chezmoi/ 中創(chuàng)建你的新存儲庫。你可以使用以下命令輕松地切換到該目錄:

  1. $ chezmoi cd

讓我們添加第一個文件:

  1. chezmoi add ~/.bashrc

這將你的 .bashrc 文件添加到 chezmoi 存儲庫。

注意:如果你的 .bashrc 文件實際上是一個符號鏈接,則需要添加 -f 標(biāo)志以跟隨它來讀取實際文件的內(nèi)容。

現(xiàn)在,你可以使用以下命令編輯該文件:

  1. $ chezmoi edit ~/.bashrc

現(xiàn)在讓我們添加一個私有文件,這是一個具有 600 或類似權(quán)限的文件。我在 .ssh/config 中有一個文件,我想通過使用如下命令添加它:

  1. $ chezmoi add ~/.ssh/config

Chezmoi 使用特殊的前綴來跟蹤隱藏文件和私有文件,以解決 Git 的限制。運行以下命令以查看它:

  1. $ chezmoi cd

請注意,標(biāo)記為私有的文件實際上并不是私有的,它們?nèi)詴约兾谋靖袷奖4嬖谀愕?Git 存儲庫中。稍后會進(jìn)一步解釋。

你可以使用以下方法應(yīng)用任何更改:

  1. $ chezmoi apply

并使用如下命令檢查有什么不同:

  1. $ chezmoi diff

使用變量和模板

要導(dǎo)出 Chezmoi 可以收集的所有數(shù)據(jù),請運行:

  1. $ chezmoi data

其中大多數(shù)是有關(guān)用戶名、架構(gòu)、主機(jī)名、操作系統(tǒng)類型和操作系統(tǒng)名稱的信息。但是你也可以添加我們自己的變量。

繼續(xù),運行:

  1. $ chezmoi edit-config

然后輸入以下內(nèi)容:

  1. [data]
  2. email = "fedorauser@example.com"
  3. name = "Fedora Mcdora"

保存文件,然后再次運行 chezmoi data。你將在底部看到你的電子郵件和姓名已經(jīng)添加成功?,F(xiàn)在,你可以將這些與 Chezmoi 的模板一起使用。運行:

  1. $ chezmoi add -T --autotemplate ~/.gitconfig

來將你的 .gitconfig 作為模板添加到 Chezmoi 中。如果 Chezmoi 成功地正確推斷了模板,你將獲得以下信息:

  1. [user]
  2. email = "{{ .email }}"
  3. name = "{{ .name }}"

如果沒有,則可以將文件更改為這樣。

使用以下方法檢查文件:

  1. $ chezmoi edit ~/.gitconfig

然后使用:

  1. $ chezmoi cat ~/.gitconfig

來查看 Chezmoi 為此文件生成什么。我生成的示例如下:

  1. [root@a6e273a8d010 ~]# chezmoi cat ~/.gitconfig
  2. [user]
  3. email = "fedorauser@example.com"
  4. name = "Fedora Mcdora"
  5. [root@a6e273a8d010 ~]#

它將在我們的 Chezmoi 配置中生成一個充滿變量的文件。你也可以使用變量執(zhí)行簡單的邏輯語句。一個例子是:

  1. {{- if eq .chezmoi.hostname "fsteel" }}
  2. # 如果主機(jī)名為 "fsteel" 才包括此部分
  3. {{- end }}

請注意,要使其正常工作,該文件必須是模板。你可以通過查看文件是否在 chezmoi cd 中的文件名后附加 .tmpl 或使用 -T 選項讀取文件來進(jìn)行檢查。

讓機(jī)密信息保持機(jī)密

要對設(shè)置進(jìn)行故障排除,請使用以下命令。

  1. $ chezmoi doctor

這里重要的是它還向你顯示了所支持的密碼管理器

  1. [root@a6e273a8d010 ~]# chezmoi doctor
  2. warning: version dev
  3. ok: runtime.GOOS linux, runtime.GOARCH amd64
  4. ok: /root/.local/share/chezmoi (source directory, perm 700)
  5. ok: /root (destination directory, perm 550)
  6. ok: /root/.config/chezmoi/chezmoi.toml (configuration file)
  7. ok: /bin/bash (shell)
  8. ok: /usr/bin/vi (editor)
  9. warning: vimdiff (merge command, not found)
  10. ok: /usr/bin/git (source VCS command, version 2.25.1)
  11. ok: /usr/bin/gpg (GnuPG, version 2.2.18)
  12. warning: op (1Password CLI, not found)
  13. warning: bw (Bitwarden CLI, not found)
  14. warning: gopass (gopass CLI, not found)
  15. warning: keepassxc-cli (KeePassXC CLI, not found)
  16. warning: lpass (LastPass CLI, not found)
  17. warning: pass (pass CLI, not found)
  18. warning: vault (Vault CLI, not found)
  19. [root@a6e273a8d010 ~]#

你可以使用這些客戶端,也可以使用通用客戶端,也可以使用系統(tǒng)的密鑰環(huán)。

對于 GPG,你需要使用以下命令將以下內(nèi)容添加到配置中:

  1. $ chezmoi edit-config
  1. [gpg]
  2. recipient = "<Your GPG keys Recipient"

你可以使用:

  1. $ chezmoi add --encrypt

來添加任何文件,這些文件將在你的源存儲庫中加密,并且不會以純文本格式公開。Chezmoi 會在應(yīng)用時自動將其解密。

我們也可以在模板中使用它們。例如,存儲在 Pass(已在 Fedora 雜志上介紹)中的機(jī)密令牌。繼續(xù),生成你的機(jī)密信息。

在此示例中,它稱為 githubtoken

  1. rwaltr@fsteel:~] $ pass ls
  2. Password Store
  3. └── githubtoken
  4. [rwaltr@fsteel:~] $

接下來,編輯你的模板,例如我們之前創(chuàng)建的 .gitconfig 并添加以下行。

  1. token = {{ pass "githubtoken" }}

然后讓我們使用檢查:

  1. $ chezmoi cat ~/.gitconfig
  1. [rwaltr@fsteel:~] $ chezmoi cat ~/.gitconfig
  2. This is Git's per-user configuration file.
  3. [user]
  4. name = Ryan Walter
  5. email = rwalt@pm.me
  6. token = mysecrettoken
  7. [rwaltr@fsteel:~] $

現(xiàn)在,你的機(jī)密信息已在密碼管理器中妥善保護(hù),你的配置可以公開共享而沒有任何風(fēng)險!

最后的筆記

這里僅僅涉及到表面。請訪問 Chezmoi 的網(wǎng)站了解更多信息。如果你正在尋找有關(guān)如何使用 Chezmoi 的更多示例,作者還可以公開了他的點文件。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2021-04-17 15:11:36

開源VeraCrypt加密文件

2021-05-27 05:18:42

開源軟件加密保護(hù)文件

2020-03-16 16:20:03

less查看文件Linux

2011-09-20 09:51:13

2022-03-02 10:13:01

SELinux開源

2015-10-15 09:51:44

2014-06-24 13:17:50

實施CRM

2021-02-05 15:50:27

PythonShell命令

2012-12-19 20:15:51

markdown

2022-01-27 15:37:34

Asciinema終端會話記錄器開源

2023-06-08 17:20:37

Lua樹莓派

2012-12-19 20:14:20

markdown

2012-12-19 20:18:54

markdown

2022-06-19 14:13:29

tmateLinux

2012-12-19 20:07:31

markdown

2012-12-19 20:20:32

markdown

2019-09-27 15:14:58

架構(gòu)運維技術(shù)

2017-03-28 16:49:18

AR廣告營銷

2021-03-14 22:14:55

代碼語法Java

2013-11-15 14:36:10

微軟Windows XP
點贊
收藏

51CTO技術(shù)棧公眾號