OSXでハードリンクをどのように作成しますか?


8

わかった、これで頭をたたいている。OS Xでは、ターミナルウィンドウでハードリンクを作成するために、次のように入力することができるはずです...

ln a.txt b.txt

...これにより、からa.txtへのハードリンクが作成されb.txtます。シンプルでわかりやすい。

そのステートメントを実行すると、確かに、Finderのb.txt右側に表示されますa.txt。ただし、a.txtTextEditを使用して編集した後でもb.txt、元のデータは残っています!つまり、リンクではなく、ハードなどのコピーを実行したように見えます。

私にはまったく意味がありません!だから誰かが私がここで間違っていることを教えてもらえますか?


どのように編集しますか?
user151019

TextEditでファイルを開き、テキストを追加します。私はブロックを何度も何度も何度もカットしてコピーしました。Finderでは、「A.txt」は「b.txt」とは異なるサイズになりました。つまり、実際にはディスク上の2つの異なる(データ)ファイルをポイントしています。
Mark A. Donohoe

奇妙な。ファイルを編集するためにviを使用してこれを試してみましたが、リンクは保持されました。TextEditで、あなたが観察するように、それは壊れます。
恐ろしい

2
想定が間違っていたので、質問を編集することを検討してください。
ダニエル・ベック

答えは明らかにハードリンクが実際に機能していることを示しています。タイトルはそうでないことを示唆しています。ハードリンクを取り除くのは、OS Xアプリケーションのファイル置換動作だけです。これはまったく別の問題です。
ダニエルベック

回答:


14

この動作の理由はかなり単純で、ほとんどのMac OS Xアプリケーションでのファイルの保存方法に関連しています。

何が起こるかというと、ファイルのコピーが一時的なステージング領域に書き込まれ、その後移動されて元のファイルを置き換えます。

これは、当然のことながら、ハードリンクを壊します。


そうですね... Cocoaのドキュメントベースのアプローチを使用するOS Xアプリのようです。本当に臭い!代わりにソフトリンク(エイリアス)を使用しても問題ないかどうかを確認します。ただし、システムが使用するDefaultKeyBinding.dictを編集しているため、わかりません。うまくいけば、リンクをたどるのに十分スマートです。みます!
Mark A. Donohoe

仰るとおり。これが、Unix-yシステム構成ファイルの編集がOS X GUIエディターの面倒ではるかに簡単な理由でviもあります。ファイルに書き込み権限を設定するだけでは不十分で、フォルダーも必要です。
ダニエルベック

ところで、ソフトリンクは機能しないので、必要なすべての場所に保存した後、ファイルのコピーをスクリプトに戻すことにしていると思います。スティンクス!
Mark A. Donohoe

@MarqueIV:シンボリックリンクが機能する可能性があります。
Williham Totland

それが私が意味したことです。用語を間違えた。具体的には、OS Xのキーバインディング用です。実際のファイルが特定の場所にあることを想定しており、シンボリックリンクでは機能しません。ただし、ハードリンクでは機能しますが、前述のとおり、エディタはCocoaドキュメントベースであるため、リンクを解除しないとファイルを編集できないため、手動でコピー(または再設定)する必要があるようです。ドキュメントを編集した後)最適ではありませんが、簡単なスクリプトで修正できないものはありません。
Mark A. Donohoe

3

表示される場合は、スーパーユーザーのこのエントリを参照してください。これは、TextEditの機能であることを示しています。したがって、ハードリンクを作成する通常の方法は正しいですが、TextEditはこれを壊すような動作をします。(リンクは、新しいファイルを作成し、編集後に古いファイルの上に移動することを示しています。)


うん...あなたがこれを投稿したので、ちょうどSUでそれを見た。テキストエディットだけではありません。すべてドキュメントベースのアプリのようです。悪臭を放ちます。これは、ドキュメントベースのツールを使用してハードリンクされたファイルを編集できないことを意味します。
Mark A. Donohoe

テキストエディットだけでなく、ほとんどが使用するドキュメントアーキテクチャを使用するすべてのCocoaベースのアプリケーションです。
Mark A. Donohoe

2

emacsもこの(驚くべき!)動作をデフォルトで(すべてのUNIXで)示すことに注意してください。原因は少し異なると考えられています(ディスク領域が非常に少ない状況では「安全な」ことです)。ただし、いくつかの方法で構成できます。

make-backup-files(使用C-h v make-backup-files)およびのドキュメントを参照してください

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