2011-03-08 61 views
6

我想創建自己的自動化dotfiles文件夾。 (我會用git對我點文件使用版本控制,但這是無關的問題)使用bash自動化點文件

什麼,我只是想是所有~/dotfiles的文件和文件夾符號鏈接到我的主文件夾。用bash不擅長我不能這樣做。請幫我解決一下這個。

如果可能的話,我也很感激以下功能。

  • 文件夾只淺淺地掛
  • 我的文件可能是在點文件夾,而不在文件名的實際點(如~/dotfiles/vimrc而非~/dotfiles/.vimrc
  • 它應該能夠忽略某些文件,像它們存儲在同一個文件夾

當然,如果你已經知道服務提供這個我git的文件,也就是至少提供了一些DO-自己的命令一樣好。請注意,我特別希望它是bash還是最可能存在於所有unix機器上的東西(因此我猜想使用g ++的命令很好)。

+0

會的聯繫是在'〜/ dotfiles'目錄,或者你會移動的實際點文件到該目錄,並把符號鏈接在原來的位置? – 2011-03-08 20:38:54

+0

第二。在'〜/ dotfiles'原件和鏈接'〜' – Tarrasch 2011-03-08 20:41:30

回答

7

試試這個:

ln -s ~/dotfiles/* ~ 

應該不需要任何循環。當然,如果你需要遞歸的東西,你可以使用find

編輯:

要隱藏的目標文件:

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

這很好,它忽略了隱藏文件(如'.git')以及:)。但是,你可以做到這一點,所以置於主文件夾中的文件變得隱藏起來(這是以'.'開頭的)。例如,它應該將〜/ dotfiles/vimrc'鏈接到'〜/ .vimrc'。那可能嗎?如果是的話,你會得到正確的答案。 :) – Tarrasch 2011-03-09 12:46:34

+0

@Tarrasch:請參閱我編輯的答案。 – 2011-03-09 14:43:18

+0

謝謝!鑑於你給我的知識,我已經創建了我自己的github repo,它可以完成我上面描述的內容以及備份。隨時嘗試一下吧! :) [鏈接](https://github.com/Tarrasch/dotfiles) – Tarrasch 2011-03-09 15:57:16

0

我不知道如果我得到了問題的權利,但如果你在尋找的DIR-內容的符號鏈接,儘量

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

也許已經做的伎倆

+3

請不要解析從輸出'ls' ... – 2011-03-08 20:46:08

+0

這是爲什麼larsmans,你能詳細點嗎? – Tarrasch 2011-03-08 20:51:54

+0

我讓它工作得很好。只有我想能夠忽略文件。有沒有像'如果$ f =='.git'然後繼續'?最好我會寫一個忽略的文件和文件夾的列表。由於 – Tarrasch 2011-03-08 20:53:43

0

爲了管理點文件的緣故,我真的很喜歡扎克霍爾曼的做法。我做了同樣的事情與我的點文件,你可以在這裏找到它:)

https://github.com/rhacker/dotFiles

+1

我不喜歡這個解決方案是,它取決於安裝紅寶石。另一方面,由於難以記住語法,我不喜歡bash中的編碼。所以根據ruby(或其他腳本語言)進行合理的交易。 – Tarrasch 2012-11-26 01:56:28

+0

@Tarrasch如果您正在使用紅寶石工作,沒有這個沒有問題。否則,這取決於你的需求:) 另外,還有一些其他在紅寶石很酷的工具。所以這將是一個安裝ruby的好方法:) – nXqd 2012-11-26 11:02:19

0

也許你正在尋找一個點文件經理,我會建議你檢查DFM(點文件管理器)。 DFM地址你在一個非常乾淨的方式有問題:

0

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

  1. 在側文件夾(如$HOME/.cfg$HOME/dotfiles)裸git倉庫,和
  2. 一個config bash的別名來執行管理配置文件GIT中的命令。

例如,您可以運行config status來檢查哪些文件已被修改,config checkout獲得資源庫中的文件和config commit更新資源庫。它僅需要gitbash