我想创建自己的自动dotfiles文件夹。 (我将使用git在我的dotfiles上使用版本控制,但这与问题无关)
我只想将符号链接 ~/dotfiles
中的所有文件和文件夹到我的主文件夹。对bash一点都不好,我不能这样做。请帮帮我。
如果可能的话,我也会欣赏以下功能。
~/dotfiles/vimrc
而不是~/dotfiles/.vimrc
)当然,如果您已经知道提供此功能的服务,那至少与提供一些自己动手的命令一样好。注意我特别希望它是bash或者很可能存在于所有unix机器上的东西(所以我猜使用g ++的命令很好)。
答案 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做了同样的事情你可以在这里找到它:)
答案 3 :(得分:0)
也许您正在寻找一个dotfiles管理器,我建议您检查 DFM (dotfiles manager)。 DFM 以非常简洁的方式解决您遇到的问题:
答案 4 :(得分:0)
Atlassian有using a git work tree instead of symlinks的教程。该方法使用:
$HOME/.cfg
或$HOME/dotfiles
)和config
bash别名,用于执行管理配置文件的git命令。 例如,您可以运行config status
来检查已修改的文件,config checkout
来获取存储库中的文件,config commit
来更新存储库。它只需要git
和bash
。
答案 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 阅读我写的关于管理多个设备的文章。