他の人がすでに指摘しているように、直接は不可能ですが、もちろんスクリプトを書くことはできます。たくさんのシンボリックリンクを変更しなければならなかったときに思いついたのがこれです
#! /bin/bash
tmp=$(mktemp)
trap "rm $tmp" EXIT
while [ ! -z "$1" ]; do
filename="$1"; shift
if [ ! -h "$filename" ]; then
echo "Not a symlink: $filename";
continue
fi
stat -c "%N" "$filename" >> $tmp
done
emacs $tmp
while read filename linkname; do
ln -sf "$linkname" "$filename"
done < <(sed "s/'\(.*\)' -> '\(.*\)'/\1 \2/" $tmp)
それは私にとってはうまくいきましたが、確かに完璧ではないので、自己責任で使用してください...
原則として可能ですが、シンボリック リンクの宛先を読み取るには特別なシステム コール readlink()
が必要なため、エディターで特にサポートする必要があります。 .
これを実際に行うエディタを見つけることはほとんどありません。これはあまり有用ではなく、ほとんどのユーザーがシンボリック リンクを開くように求められたときにエディタに求めていること、つまりシンボリック リンクが指すファイルを開くことと矛盾するためです。
シンボリック リンクの保存に従って ウィキペディアの記事シンボリック リンクのセクションでは、シンボリック リンクは inode に保存されます。 .この i ノードは、問題のファイルに関するいくつかの情報を含むデータ構造です。このスレッドによると、touch
コマンドを使用して、その値の一部を変更できます。そのため、@Wyzard が言及した問題により、テキスト エディターを使用して変更できない場合がありますが、touch
などの他のコマンドライン ツールを使用して変更できる可能性があります。 .
これがお役に立てば幸いです!
はい、Emacs では、これは dired モード、特に wdired (書き込み可能な dired) モードで可能です。
dired と wdired は両方とも組み込みパッケージであることに注意してください。
以下に例を示します...
(ところで:私は Emacs に M-x
を与えるために Smex を使用しています コマンドの検索と実行、より人間工学に基づいた UI + ファジー マッチング)