2012-02-15 6 views
1

私はフォルダ内のファイルを持っていて、私のシステム上で実行されているアプリケーションに由来するため、このファイルについては何も知らないそのうちの私はソースコードを持っていません。OS Xで期待通りに動作しないファイルへのハードリンク

ファイル形式は明らかにjsonであると私は正常に(シェルコマンドln file hardLinkToFileを使用して)それにハードリンクを作成し、別のディレクトリにそれを置きました。
「2」のファイルをチェックしても、それらはまったく同じですが、元のファイルを更新するアクションをアプリケーションで実行すると、ハードリンクは更新されません。

どのように私はこの問題を解決することができますか?

UPDATE:両方ヴラドLazarenkoMVDSで指摘したように、ファイルは、おそらく削除されます、新しいものが作成され、私はハードリンク1に対する解決策相当を取得するために行うことができるものがあります私は当初考えていた?

+1

シンボリックリンクを使用してください。アプリケーションは明らかにファイルを削除し、新しいファイルを作成します。このアプリケーションを起動する前後に 'stat -f%l filename'を使ってファイルのリンク数を確認してください。 – mvds

答えて

2

ハードリンクが更新されない場合は、アプリケーションが古いファイルを削除し、新しいファイルを作成することを意味します。したがって、以前のファイルのハードコピーはまだ残っていますが、新しいファイルには全く異なるinodeがありますが、パスは変わりません。そのファイルの内容を変更するだけで、リンクを更新する必要があります。

+0

私は答えを更新しました、あなたが正しいと思います(私は最初は同じと思って確認のためにここに尋ねました)...今、私はこの奇妙な行動の回避策を探しています – Francesco

1

TextEditでは同じ動作をしますが、TextMateでは動作しません。これは、OS Xライオンズのドキュメントアーキテクチャに組み込まれているリビジョンコントロールによるものと思われます。 TextEditではバージョン管理が使用されますが、TextEditではバージョン管理が使用されます。ほとんどの場合、この関数は@Vlad Lazarenkoに記述されているように、ファイルを変更する代わりにそのファイルを置き換えます。

+0

私はこれが私はこれらのファイルに直接作業していません。別のアプリケーションによって(直接ではなく)生成されています。 – Francesco

+0

私は崇高なテキストではなくテキストで編集します – Nav

0

私はちょっと遅すぎると思っています... とにかく、ファイルのデフォルトアプリケーションを変更すると、間違いなくハードリンクが元のファイルから分離されます。すべてをクリックしても、その特定のファイルには関係しません。

1

@VladとFrancesco。それは本当にこのようなものです。 viがiノードを変更せずに残し、srcとdestファイルの両方が変更されていることを確認しました。ケイトのエディタはそうではなく、私がsrcファイルで行った変更がなぜdestファイルにもなかったのかを怒っていました。 上記の各エディタで編集する前に、ls -li srcfile destfileコマンドで簡単に確認できます。 ところで、ハードリンクがアプリケーションに依存しているのはうれしくありません。

+0

"ハードリンクはアプリケーションに依存しているのはうれしくありません" - amen。 – dave

関連する問題