可能であればハードリンクを作成し、そうでない場合はシンボリックリンクを使用してください。

可能であればハードリンクを作成し、そうでない場合はシンボリックリンクを使用してください。

dotfiles私のリポジトリから私のホームフォルダへのファイルリンクを生成するシェルスクリプトを作成しようとしています。

に移動するときは、可能であればハードリンクを使用したいと思いますHOME

ただし、他のファイルシステムに複製するにはdotfilesシンボリックリンクを使用する必要があります。


それでは、可能であればどのようにファイルへのハードリンクを作成できますか?または、シェルスクリプトでシンボリックリンクを使用できますか?

答え1

ln source target 2>/dev/null || ln -s source target 2>/dev/null || exit 1

または少し「相互作用的」(より対話的)、

if ! ln source target 2>/dev/null; then
    echo 'failed to create hard link, trying symbolic link instead' >&2
    if ! ln -s source target 2>/dev/null; then
        echo 'that failed too, bailing out' >&2
        exit 1
    fi
fi

/dev/null表示されたエラーメッセージln(存在する場合)を表示するには、リダイレクトを削除してください。

関連情報