現在のディレクトリに基づいてシンボリックリンクを作成する

現在のディレクトリに基づいてシンボリックリンクを作成する

私の外付けハードドライブのディレクトリを指すホームディレクトリにシンボリックリンクを作成しようとしています。

次のように指定するとうまくいきます。

cd ~
ln -s /run/media/name/exhdd/Data/ Data

ただし、これを行うと、間違ったリンクが生成されます。

cd /run/media/name/exhdd
ln -s Data/ ~/Data

cd入力できないリンクが作成されます。

試してみると、bashは次のように文句を言います。

bash: cd: Data: Too many levels of symbolic links

lsカラー出力を表示するように設定すると、自宅のデータシンボリックリンクも赤で表示されます。

なぜこれが起こるのですか?このようにリンクをどのように作成できますか? (私の作業ディレクトリのディレクトリへの別のディレクトリへのシンボリックリンクを作成したいと思います。)


編集する:~によるとこれStackOverflowの答え、2番目の引数(私の場合は〜/ Data)がすでに存在し、ディレクトリの場合、ターゲットへのlnシンボリックリンクが生成されます。~へそのディレクトリ。

しかし、私は同じ問題に直面しました。

ln -s Data/ ~/

ベストアンサー1

これが起こったことです。相対パスを使用してシンボリックリンクを作成すると、シンボリックリンクは相対パスになります。シンボリックリンクは、ユーザーが提供したパスのみを保存します。彼らは絶対パスをフルパスとして解決しません。走る

$ pwd
/usr/bin
$ ln -s ls /usr/bin/ls2

シンボリックリンクがあるディレクトリ()に基づいて、名前付きのls2シンボリックリンク(つまり)を作成します。上記のコマンドは、すべてのディレクトリに機能的なシンボリックリンクを生成します。/usr/binls/usr/bin/ls/usr/bin

$ pwd
/home/me
$ ln -s ls /usr/bin/ls2

シンボリックリンクを別のディレクトリに移動すると、もはや/usr/bin/ls

へのシンボリックリンクを作成してData名前を付けますData。それ自体を指します。ディレクトリへの絶対パスを使用してシンボリックリンクを作成する必要があります。

ln -s "$(realpath Data)" ~/Data

おすすめ記事