用 rcm 管理隐藏文件
创始人
2024-03-02 01:45:37
0

许多 GNU/Linux 程序的一个特点是有个易于编辑的配置文件。几乎所有常见的自由软件都将配置设置保存在纯文本文件中,通常采用结构化格式,如 JSON、YAML 或“类似 ini” 的文件中。这些配置文件经常隐藏在用户的主目录中。但是,基本的 ls 不会显示它们。UNIX 标准要求以点开头的任何文件或目录名称都被视为“隐藏”,除非用户特意要求,否则不会列在目录列表中。例如,要使用 ls 列出所有文件,要传递 -a 选项。

随着时间的推移,这些配置文件会有很多定制配置,管理它们变得越来越具有挑战性。不仅如此,在多台计算机之间保持同步是大型组织所面临的共同挑战。最后,许多用户也对其独特的配置感到自豪,并希望以简单的方式与朋友分享。这就是用到 rcm 介入的地方。

rcm 是一个 “rc” 文件管理套件(“rc” 是命名配置文件的另一种约定,它已被某些 GNU/Linux 程序采用,如 screenbash)。 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

本文由 LCTT 原创编译,Linux中国 荣誉推出

相关内容

不指定加载的Spring配...
可以使用AnnotationConfigApplicationCo...
2025-01-12 11:30:20
不要跟踪更改配置文件。
在代码中,可以通过以下方式实现不跟踪更改配置文件:在版本控制系统中...
2025-01-10 19:02:10
不修改配置文件即可返回So...
要实现不修改配置文件即可返回Solr搜索的精确匹配结果,可以通过使...
2025-01-10 10:31:40
不同位置的nginx配置文...
在nginx.conf文件中通过include指令引入其他配置文件...
2025-01-09 20:31:07
不同生产构建的React配...
在React项目中,可以使用不同的构建工具来配置和构建项目。以下是...
2025-01-09 16:00:40
不同描述符注册了多个HID...
要解决“不同描述符注册了多个HID配置文件”的问题,可以按照以下步...
2025-01-09 11:30:37

热门资讯

如何在 Github 上创建一... 学习如何复刻一个仓库,进行更改,并要求维护人员审查并合并它。你知道如何使用 git 了,你有一个 G...
《Apex 英雄》正式可在 S... 《Apex 英雄》现已通过 Steam Deck 验证,这使其成为支持 Linux 的顶级多人游戏之...
Helix:高级 Linux ... 说到 基于终端的文本编辑器,通常 Vim、Emacs 和 Nano 受到了关注。这并不意味着没有其他...
JStock:Linux 上不... 如果你在股票市场做投资,那么你可能非常清楚投资组合管理计划有多重要。管理投资组合的目标是依据你能承受...
Textual:为 Pytho... 快速入门使用 TextualPython 在 Linux 上有像 TkInter 这样的优秀 GUI...
硬核观察 #1245 Open... #1 OpenAI 悄然删除禁止将 ChatGPT 用于 “军事和战争” 的禁令在 1 月 10 日...
使用时间序列数据,用开源工具助... InfluxData 是一个开源的时间序列数据库平台。下面介绍了它是如何被用于边缘应用案例的。收集到...
使用 KRAWL 扫描 Kub... 用 KRAWL 脚本来识别 Kubernetes Pod 和容器中的错误。当你使用 Kubernet...
硬核观察 #1249 LG 洗... #1 LG 洗衣机每天上传近 4GB 的数据?一个名为 Johnie 的 LG 洗衣机用户发现,他的...
2024 年 Linux 和开... 让我们尝试预测未来吧!新的一年快乐,朋友们 ✨2024 年的钟声已经敲过,我们有必要去预见一下将塑造...