Macでは、次の動作を観察しました。
- PDF Expertを使用してPDFを開き、ファイルをいくつか変更し、Finderでファイルを移動し、PDF Expertに保存すると、新しい場所に正しく保存されます。
- 同様のディレクトリでシェルを開き、
~/foo
別のアプリケーションにディレクトリをごみ箱に入れると、シェルのpwdが正しく出力されます~/.Trash/foo
。
後ろで何が起こるのか?このような状況は、アプリケーションがemacsのようにファイルへの絶対パスを保存しないことを示しているようです(私は正しいですか?)それともまったく異なるメカニズムですか?
ベストアンサー1
macosには、/.vol/
物理ディレクトリとファイルにマッピングされる特別なシステムがあります。/.vol/<device_id>/<inode_number>
ファイルとディレクトリは、ファイルシステムの場所に関係なくアクセスできます。
良い小さなシステムです。
したがって、プログラムはinode番号を取得して/Users/jdoe/someFile.txt
から/.vol/12345/6789
開くことができます(この場合、デバイスIDは12345、inode番号は6789です)。その後、/Users/jdoe/someFile.txt
好きな場所(同じボリューム)に移動でき、すべてがうまく機能します。この機能をサポートするシェルスクリプトを作成することもできますmagic
。
ls -di <file>
インデックスノード番号を取得します。
$ ls -di /User/jdoe/someFile.txt
6789 /User/jdoe/someFile.txt
編集する:
stat
IMSoP強調表示されたリンク回答から、ボリュームのIDとinode番号を取得できます。
GetFileInfo /.vol/12345/6789
以前にあったファイルの現在位置を返します/Users/jdoe/someFile.txt
。
バラよりhttps://stackoverflow.com/questions/11951328/is-there-any-function-to-retrieve-the-path-linked-with-an-inodeより多くの情報を知りたいです。