![シンボリックリンクの値を置き換える方法はありますか?](https://rvso.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%E7%BD%AE%E3%81%8D%E6%8F%9B%E3%81%88%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%3F%20.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
。