Команда ln
уже достаточно консервативна в отношении удаления, поэтому, возможно, подход KISS достаточно хорош для вас:
ln -s git-stuff/home/.[!.]* .
Если файл или ссылка уже существует, вы получите сообщение об ошибке иэта ссылка будет пропущена.
Если вы хотите, чтобы файлы имели другое имя в вашем хранилище, передайте параметр -n
в ln
, чтобы он случайно не создал символическую ссылку в существующем подкаталоге.с таким именем:
ln -sn git-stuff/home/profile .profile
...
Если вы также хотите иметь ссылки в подкаталогах вашего домашнего каталога, cp -as
воспроизводит структуру каталога, но создает символические ссылки для обычных файлов.С опцией -i
он запрашивает, если цель уже существует.
cp -i -as git-stuff/home/.[!.]* .
(Мой ответ предполагает GNU ln
и GNU cp
, такие как вы найдете в Linux (и Cygwin)но обычно не в других подразделениях.)