7

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

我只想将所有文件和文件夹符号链接~/dotfiles到我的主文件夹。对 bash 一点也不擅长,我不能这样做。请帮我解决一下这个。

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

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

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

4

6 回答 6

8

试试这个:

ln -s ~/dotfiles/* ~

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

编辑:

要隐藏目标文件:

for f in ~/dotfiles/*
do
    ln -s "$f" "$HOME/.${f##*/}"
done
于 2011-03-09T01:31:18.017 回答
0

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

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

也许这已经成功了

于 2011-03-08T20:40:30.360 回答
0

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

https://github.com/rhacker/dotFiles

于 2012-11-25T07:20:16.543 回答
0

也许您正在寻找一个点文件管理器,我会建议您检查DFM(点文件管理器)。DFM以非常干净的方式解决了您遇到的问题:

于 2015-04-13T15:59:00.180 回答
0

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

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

因此,将文件与远程副本同步到 gitbare存储库是最好和最优雅的方式,创建一个 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

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

于 2021-01-21T12:14:52.050 回答
0

Atlassian 有一个关于使用 git 工作树而不是符号链接的教程。该方法使用:

  1. 侧文件夹中的裸 git 存储库(例如$HOME/.cfgor $HOME/dotfiles),以及
  2. config用于执行管理配置文件的 git 命令的bash 别名。

例如,您可以运行config status检查哪些文件已被修改,config checkout获取存储库中的文件并config commit更新存储库。它只需要gitbash.

于 2017-10-16T12:25:41.313 回答