そのファイルへのシンボリックリンクを壊さずにファイルをmv


24

mvそのファイルへのシンボリックリンクを壊すことなくファイルを作成することは可能 ですか?これに対する私の最初の応答は「いいえ」であり、移動後すぐにリンクを変更するスクリプトベースのソリューションを作成していますが、他の人がこの問題にどのように取り組んでいるか疑問に思いました。シンボリックリンクのパスと名前は事前にわかっているので、理論的には次のことを行うだけです。

  1. リンクのターゲットを取得する
  2. mvターゲット
  3. 新しいターゲットへのリンクを再作成します
  4. 新しいターゲットへの新しいリンクを作成します(元のリンクとは異なり、今も保持したい)

後日:

  1. 古いリンクを削除する

1-4はbashスクリプトにカプセル化されますが、もっとエレガントなアプローチを持っている人がいるのか、私が知らない組み込みコマンドやコマンドを知っている人がいるかどうか疑問に思っています。


2
ハードリンクにはこの問題はありません。ただし、他にも欠点があります。:-)
ステファンギメネス

3
ええ、ファイルは複数のファイルシステムにまたがっているので、ハードリンクは使用できません。
ガベ。

2
また、ディレクトリにハードリンクできません。
サンパブロクパー

回答:


8

あなたは正しい道を進んでいます。あなたが説明するシーケンスよりも簡単な方法はないと思います。

ステップ3と4は少しわかりにくいです。既存のリンクのターゲットを変更する場合は、同じ名前を使用ln -fして既存のファイルを上書きできます。リンクの名前も新しいターゲット名を反映するように変更したい場合、シーケンスは正しいです。


1
ええ、ええ、ちょうどその部分を読み直してください、そして今、私も自分自身を混乱させました。それがもっと理にかなっているように微調整します。ありがとう。
ガベ。

ln -fの使用については少し混乱していますが、@ fredが投稿したスクリプトは、それがどのように機能するかを明確にするのに役立つと思います。驚くべきことに、manページはあまり役に立ちませんでした。
ガベ。

@gabe。私の答えの元のバージョンには正しい-s -fものがありましたが、それを修正しながら、-s間違っています:間違っています!ウィキペディアから:オプションなしの 'ln'はハードリンクを作成し、 'ln -f'はハードリンクを強制します...質問のおかげで、今では本当に構文が確認されました。物事...それが必要ln -s -fです..(私は調整をしました)
-Peter.O

4

あなたの状況:

# change target of a symbolic link
# -------------
# ln -s, --symbolic    make symbolic links instead of hard links
# ln -f, --force       remove existing destination files
#
# Setup: make junk.link to  file junk
  echo hello > ~/junk
  ln -s ~/junk ~/junk.link;  cat ~/junk.link
#
# move file and point the link to it.
  org="$(readlink ~/junk.link)"
  new="$org".moved
  mv "$org" "$new"
  ln -s -f "$new" "$new".link  # '-s' for a soft link

注:リンクのチェーンが含まれる場合、より複雑になります。
Peter.O

0

次の問題があります。「Suru ++」と呼ばれる非常に良いアイコンテーマを見つけました

Suru ++ 20 [バグがなく、11個のDEと互換性がある]

しかし、このアイコンのテーマはsvg all imageで作成されます。今私はFluxboxでそれを使用してメニューエントリを生成したいが、これはPNGアイコン画像でのみ可能です。私はsvg形式のすべてのアイコンであるマスターをダウンロードし、はいコマンドラインsvgからpngに変換できます16x16、24x24 pxなどのフォルダーサイズ。ただし、そのフォルダーにはsvgファイルへのシンボリックリンクがあります。

pngに変更したいシンボリックリンク内の拡張子svg

すべてのシンボリックリンク内で拡張子svgをpngに変更する方法がある場合、Fluxboxメニューとファイルマネージャーでアイコンテーマが正常に機能します。Xubuntuを使用して、しかしスペイン語でこのアイコンテーマに関するエントリを作成しました。

神のご加護を

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.