![シンボリックリンクの値を変更する方法はありますか? [コピー]](https://linux33.com/image/50577/%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%83%E3%82%AF%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E5%80%A4%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
シンボリックリンクの値を変更する方法はありますか?
たとえば、シンボリックリンクを次のように変更したいとします。
first -> /home/username/foo/very/long/directories/that/I/do/not/want/to/type/again
これに関して:
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
foo
ただに変更したいbar
。
もちろん、リンクを再作成することもできますが、リンクの値を変更できる場合は簡単になります。
答え1
-f
、--force
オプションを使用して、ln
新しいシンボリックリンクを作成する前に既存のシンボリックリンクを削除することができます。ターゲットがディレクトリの場合は、シンボリックリンクを通常のファイルとして処理するように指示するオプションを-n
追加する必要があります。--no-dereference
ln
ln -sfn target existing_link
ただし、これはアトミックでも以前の以前のシンボリックリンクも呼び出さないため、ln
技術的にリンク値を変更するとは見なされません。これらの区別に興味があれば、答えは「いいえ」です。既存のシンボリックリンクの値を変更することはできません。unlink()
symlink()
つまり、次のようにして新しいシンボリックリンクを作成し、古いリンク値の一部を変更できます。
ln -sfn "$(readlink existing_link | sed s/foo/bar/)" "existing_symlink"
答え2
second -> /home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
X内部で実行している場合:
stat second
リンクなどの情報が印刷されます。ln -s
と入力し、/home/username/bar/very/long/directories/that/I/do/not/want/to/type/again
マウスカーソルで強調表示します。中央ボタン(または2つのボタンしかない場合は両方のボタン)を押します。再入力したくない長い行はテキストカーソルに貼り付けられます。
X以外の場合はインストールできますgpm
。