シンボリックリンクを逆参照するためのUNIX
コマンドはありますか?リンクを、それが指すファイルのコピーに置き換えたいと思います。
例:
$ ls
a
b -> a
$ deref b
$ ls
a
b
これで、aとbの内容は同じですが、互いに独立しています。私の質問は、そのようなderef
コマンドがあるかどうかです。重要:b
がどこを指しているのかを知る必要はありません。コマンドはそれを理解する必要があります。
readlink
を使用してファイル名を見つけることができますが、そうする必要はありません。
cp b c
mv c b
とても簡単です。そのためのスクリプトを作成している場合は、mktemp
の代わりにc
の出力を使用して、既存のファイルc
をオーバーライドしないようにする必要があります。
両方の答えを組み合わせると、次のようになります。
#!/bin/bash
if [ -h "$1" ] ; then
target=`readlink $1`
rm "$1"
cp "$target" "$1"
fi
シンボリックリンクが指しているものをコピーすることで可能です...
readlink(1) および cp(1) を参照してください。 Update:そしてあなたがそれにいる間: readlink(2) 。
[〜#〜] but [〜#〜]シンボリックリンクは実際にはそれだけであり、シンボリックです(読み取り:ターゲットの名前を使用)別のファイルへのリンク-他のファイルのコンテンツを共有しません。 (ハードリンク、誰か?)。
そのようなコマンドはありませんが、次のことができます。
rm b
cp a b