如何在Mac上利用rcm优雅地管理dotfiles配置文件(软链接 ln -s)

dotfiles 简介

dotfiles是软件的配置文件,由于历史原因,通常以.开头,例如:.zshrc。很多程序的配置都是通过纯文本格式的被称作点文件的配置文件来完成的(之所以称为点文件,是因为它们的文件名以 . 开头,例如 ~/.vimrc。也正因为此,它们默认是隐藏文件,ls并不会显示它们)

dotfiles 通常位于根目录下,很多人也许花了一个上午,一天,甚至一个星期,折腾某某程序的配置文件。如果不小心丢失了,那心态一定会爆炸!所以,如何将这些文件备份,成了很多人必须要问的一个问题。如果直接用 git 管理整个根目录,那这个仓库会非常大。好在我们有软链接的方法,我们把配置文件统一放到一个文件夹中管理,然后在根目录用软链接的方式生成一个快捷键方式,这样访问根目录的 dotfile时,会自动打开那个文件夹中对应的dotfile。你可以理解为在根目录中创建一个快捷方式!

这样做的好处有:

  • 安装简单: 如果您登陆了一台新的设备,在这台设备上应用您的配置只需要几分钟的时间;
  • 可以执行: 您的工具在任何地方都以相同的配置工作
  • 同步: 在一处更新配置文件,可以同步到其他所有地方
  • 变更追踪: 您可能要在整个程序员生涯中持续维护这些配置文件,而对于长期项目而言,版本历史是非常重要的

软链接语法

命名格式如下:

ln [参数][源文件或目录][目标文件或目录]

建立软链接

以zsh的配置文件.zshrc为例

cd ~
mv .zshrc  ~/dotfiles/zshrc
ln -s ~/dotfiles/zshrc .zshrc

软链接相当于生成文件的快捷方式,当你访问 ~/.zshrc,实际上是在访问 ~/Users/l/dotfiles/zshrc 文件

在这里插入图片描述
现在你就可以在 dotfiles 中用 git 统一管理配置文件了

Github地址:My dotfiles

恢复配置文件

换了台电脑后,先从你的 Git 仓库中 clone 下配置文件,放到dotfiles中,然后重新建立一个软链接即可

git clone xxx 
rm -rf .zshrc # 如果原来有快捷方式了,就删掉它
ln -s ~/dotfiles/zshrc .zshrc

还原配置文件到根目录

先删掉根目录的软链接 rm -rf ~/.zshrc

然后用 mv ~/dotfiles/zshrc ~/.zshrc 命令即可

一些说明

(1)在 dotfiles 文件夹中,我统一把前面的点都去掉了,这样就不是隐藏文件

(2)利用shell脚本可以一次性转移所有的 dotfile 配置文件(请看dotfiles),但是我这里只是手动地把最重要的几个配置转移到了 dotfiles 文件中,用 git 统一管理
(3)用 ls -l ~/.zshrc 可以查看当前快捷方式链接的位置
在这里插入图片描述
删除软链接的正确方式:rm -rf ~/.zshrc (删掉那个快捷方式即可)

(4)在 Github 上可以搜到很多的 dotfiles 配置文件,看别人配置文件中的例子可以让你更快学会配置,例如,mathiasbynens/dotfiles (star数 23.6k)
在这里插入图片描述

更新:利用rcm批量管理dotfiles配置文件(如.zshrc文件)

项目地址:https://github.com/thoughtbot/rcm

今天看了视频 Linux下如何优雅的管理配置文件(干货) 和教程 用 rcm 管理隐藏文件 ,尝试了下用 shell 脚本管理 dotfiles 文件,用了后发现比自己手动设置方便多了。mkrc 命令会自动去掉配置文件前面的点,当用 rm -rf ~/.zshrc 删除快捷方式后,可以用 rcup 恢复(一次性恢复所有快捷方式)

在这里插入图片描述

  • mkrc ~/.zshrc 将.zshrc 转换为由 rcm 管理的隐藏文件
  • mkrc -t git .gitconfig 可以给配置文件加上标签,按类管理
  • 好处是用 rcup -t git 可以只还原 git 这个分类中的快捷方式
  • rcup 默认还原所有 lsrc 列出来的快捷方式
  • rcdn 默认删除所有 lsrc 列出来的快捷方式
  • 删除单个快捷方式:如果不想用 rcm 了,想还原配置文件到根目录,方法上文“还原配置文件到根目录”已介绍

效果图
在这里插入图片描述
说明:
lsrc 是默认列出所有.dotfiles第一目录下的所有文件的映射,因此加了 tag 的无法列出,但我们可以通过在根目录下配置 .rcrc 文件来显示出加了 tag 的配置文件的映射

使用vim .rcrc,打开.rcrc文件

  • TAGS 中加入想要显示的 tag 文件
  • EXCLUDES 中加入不想要显示文件映射的文件
TAGS="rcm git"
EXCLUDES="README.md commands.md"

在这里插入图片描述
最后当你换了台 mac电脑,你只要 git clone 下dotfiles 仓库(Github地址:My dotfiles),先用 rcup -t rcm 还原.rcrc配置,然后用 rcuprcup -t xxx 还原快捷方式即可

更新:利用ln -s手动管理非dotfiles配置文件(如json文件)

rcm 生成的快捷键方式都是 .开头的,例如你一开始的文件是 fpx.txt,你用 mkrc ~/fpx.txt,他会 fpx.txt 源文件放到 .dotfile文件夹内,然后在~ 生成一个 .fpx.txt 快捷方式。

例如,我想备份桌面上的 ssh.log 文件,结果 rcm 给我生成了一个 .Desktop/ssh.log 快捷方式,这并不是我想要的啊

在这里插入图片描述

所以说如果你想保存的是VScode xxx.json 配置文件,用rcm 不一定能保证 VScode 能加载 .xxx.json,所以应该还是用手动添加的方式比较好

解决方法

默认情况下,因为 rcm 的存在,只要你把文件手动放到 .dotfiles 文件夹中,就会有一个快捷键映射,虽然快捷键方式它没有生成,但是当你用 rcup 是就会还原所有 lsrc 中显示的快捷键映射的快捷方式了。

在这里插入图片描述

所以最好的方法是在 .dotfiles 中单独创建一个 NotRcmFiles 来管理不是点开头的配置文件,然后在 ~/.rcrc 中排除这个文件夹

在这里插入图片描述
再通过手动建立软链接的方法,来管理非点开头的配置文件(如 VScode 的 json 配置文件)
在这里插入图片描述

手动建立软链接示例

mv '/Users/macos/Library/Application Support/Code/User/settings.json' ~/.dotfiles/NotRcmFiles/VScode_settings.json
ln -s ~/.dotfiles/NotRcmFiles/VScode_settings.json '/Users/macos/Library/Application Support/Code/User/settings.json'

在这里插入图片描述
至此 VScode 的 json 配置文件也被我管理起来了


不推荐用硬链接来保存 dotfiles 配置文件,因为硬链接无法跨文件系统(如/usr/local 和 /home 就是不同的文件系统),容易出现问题。

补充:ln -s 文件夹 文件夹链接

ln -s 也是可以链接整个文件夹的

示例:
在这里插入图片描述

参考资料

[1] https://github.com/mathiasbynens/dotfiles
[2] dotfiles 程序员的自我修养
[3] 懒程序员和他的 dotfiles
[4] MIT/Missing-semester/command-line讲义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捡起一束光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值