web-dev-qa-db-ja.com

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

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

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

後日:

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

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

25
gabe.

あなたは正しい軌道に乗っています、あなたが説明したシーケンスより簡単な方法はないと思います。

手順3と4は少し混乱します。同じ名前を維持しながら既存のリンクのターゲットを変更する場合は、ln -fを使用して既存のファイルを上書きできます。リンクの名前も新しいターゲット名を反映するように変更したい場合、シーケンスは正しいです。

8
Caleb

あなたの状況:

# 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
4
Peter.O

次の問題があります。 「Suru ++」というとても良いアイコンテーマを見つけました

Suru ++ 20 [公式にバグフリー、11 DE互換]

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

extensions svg inside symbolic links that I want to change to png

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

神のご加護を

0