フォルダ内のファイルを繰り返し、シンボリックリンクを作成します。
現在のスクリプトはフォルダ内のファイルを繰り返し、他のフォルダへのシンボリックリンクを作成しようとしています。
#!/bin/bash
############################
# .make.sh
# This script creates symlinks from the home directory to any desired dotfiles in ~/dotfiles
############################
########## Variables
dir=~/dotfiles # dotfiles directory
config_files=$dir/*
# move any existing home files in homedir to dotfiles_old directory, then create symlinks
for config_file in $config_files; do
ln -s $dir/$config_file ~/.$config_file
done
~/dotfiles に複数のファイルがある場合、たとえばファイルを含むフォルダがあります。フォルダが作成され、シンボリックリンクされているかどうかを確認するにはどうすればよいですか?
たとえば、私の~/dotfiles
Iには次のものがあります。
~/dotfiles/.config/fish/config.fish
そして~/dotfiles/.config/fish/conf.d/config.fish
私はシンボリックリンクで終わらなければなりません
~/.config/fish/config.fish
そして~/.config/fish/conf.d/config.fish
どうすればいいですか?
答え1
たぶんcp
代わりに使用することもできます。ln
man 1 cp
:
-R
再帰的にディレクトリをコピーする
-s
コピーする代わりにシンボリックリンクを作成する
メモ:
-R
POSIXはこれを要求しますが、-s
そうではありません(サポートすることcp
もサポートしないかもしれません)。- このようにファイルを「コピー」しても
-R
問題はありません。 cp -Rs …
(ディレクトリへのシンボリックリンクではなく)シンボリックリンクを使用してディレクトリ構造をファイルにコピーします。- 私のKubuntuでは、相対シンボリックリンクを作成することが
cp
現在のディレクトリに制限されているので-R
。 - 研究
-p
オプションcp
。あなたがそれを使用したいと仮定します。
スクリプトに関するいくつかの懸念:
- このコメント変数を引用するのは合理的です。
*
名前がドット()で始まる.
ファイルまたはディレクトリは返されません。