使用bash自动化dotfiles

时间:2011-03-08 20:35:18

标签: bash unix dotfiles

我想创建自己的自动dotfiles文件夹。 (我将使用git在我的dotfiles上使用版本控制,但这与问题无关)

我只想将符号链接 ~/dotfiles中的所有文件和文件夹到我的主文件夹。对bash一点都不好,我不能这样做。请帮帮我。

如果可能的话,我也会欣赏以下功能。

  • 文件夹只是浅层链接
  • 我的文件可能位于dotfiles文件夹中,文件名中没有实际的点(例如~/dotfiles/vimrc而不是~/dotfiles/.vimrc
  • 它应该能够忽略一些文件,例如存储在同一文件夹中的.git文件

当然,如果您已经知道提供此功能的服务,那至少与提供一些自己动手的命令一样好。注意我特别希望它是bash或者很可能存在于所有unix机器上的东西(所以我猜使用g ++的命令很好)。

6 个答案:

答案 0 :(得分:7)

尝试一下:

ln -s ~/dotfiles/* ~

不应该需要循环。当然,如果您需要递归的话,可以使用find

修改

隐藏目标文件:

for f in ~/dotfiles/*
do
    ln -s "$f" "$HOME/.${f##*/}"
done

答案 1 :(得分:0)

我不确定我的问题是否正确,但如果您要查找dir-content的符号链接,请尝试

for f in `ls -1 .dotfiles`
do
   ln -s .dotfiles/$f ~/$f
done

也许这已经成功了

答案 2 :(得分:0)

为了管理dotfiles,我非常喜欢Zach Holman的方法。我用我的dotfiles做了同样的事情你可以在这里找到它:)

https://github.com/rhacker/dotFiles

答案 3 :(得分:0)

也许您正在寻找一个dotfiles管理器,我建议您检查 DFM (dotfiles manager)。 DFM 以非常简洁的方式解决您遇到的问题:

答案 4 :(得分:0)

Atlassian有using a git work tree instead of symlinks的教程。该方法使用:

  1. 侧边文件夹中的裸git存储库(例如$HOME/.cfg$HOME/dotfiles)和
  2. 一个config bash别名,用于执行管理配置文件的git命令。
  3. 例如,您可以运行config status来检查已修改的文件,config checkout来获取存储库中的文件,config commit来更新存储库。它只需要gitbash

答案 5 :(得分:0)

我也在寻找一些方法来以最少的步骤设置新机器,经过一段时间后我发现几乎所有的开发人员都使用 git 来存储和共享这些文件和符号链接来同步它们。

>

嗯,符号链接有效,但它不是将本地文件同步到 git 存储库的最佳方式。有一个更好的解决方案,由 Atlassian 的人编写 - https://www.atlassian.com/git/tutorials/dotfiles

因此,git bare 存储库是将文件与远程副本同步的最佳和最优雅的方式,创建一个 bash 脚本来自动安装和设置。

管理点文件

管理这些点文件的技巧是创建一个裸 git 存储库。如果您是从头开始并且之前没有跟踪过您的点文件,请在 $HOME 目录中创建一个裸仓库。

git init --bare $HOME/.dotfiles

为了更容易使用,我们将其别名为 dotfiles,我们将使用它而不是常规 git 与我们的 dotfiles 存储库进行交互。

alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles --work-tree=$HOME"

现在我们可以使用 dotfiles 命令跟踪我们的 dotfiles,其中一些示例是:

# to check the version history 
dotfiles log

# to check the status of the tracked and untracked files 
dotfiles status

# to add a file for tracking
dotfiles commit .vimrc -m ".vimrc added"

# push new files or changes to the github
dotfiles push origin main

点文件的用例和优点

这种管理和共享方法具有多种优势,其中一些如下所列。

易于设置

设置新机器可能是一项耗时的任务,但通过这种方法,我们可以在一分钟内使用我们的个性化配置。我们只需要克隆存储库并获取 .bashrc 或 .zshrc 文件。

git clone --bare https://github.com/<username>/dotfiles.git $HOME/.dotfiles && source ~/.zshrc

版本化点文件

最适合尝试新配置并保留更改历史记录(基本上是使用 git 的所有优点)

# to check the version history 
dotfiles log

在多个设备上共享

使用分支以最少的更改共享多个设备的相同配置,为您的新机器创建一个分支,例如:-

# Create configurations specific to your aws machines
dotfiles checkout -b aws

点文件的配置文件

使用分支根据您的环境创建配置,创建一个分支并根据您的工作环境进行配置。

# Manage multiple profiles - check out to the work profile 
dotfiles checkout work

我也使用这种方式来同步和存储我的点文件 see my dotfiles repository,并且可以在 Tooling is hard and necessary 阅读我写的关于管理多个设备的文章。