実際のパス-Lと-P

実際のパス-Lと-P

coreutils マニュアルから

-L --logicalシンボリックリンクは指定されたファイル名内で解決されますが、..後続のコンポーネントが処理された後に解決されます。

-P --physicalシンボリックリンクは指定されたファイル名内で解決され、..後続のコンポーネントが処理される前に解決されます。これが基本動作モードです。

2つのオプションの違いは、シンボリックリンク処理と処理順序だと思うのは正しいですか..

これらの2つのオプションがどのように異なるかを説明し、いくつかの例を挙げることができますか?

ありがとうございます。

ベストアンサー1

はい、違いは処理順序..とシンボリックリンクにあります。

これがどのように影響するかについての例は次のとおりです。外部ディスクがマウントされ、/root/Archives自宅でそれを指すシンボリックリンクがあります。

$ pwd
/home/katsura

$ ls -ld Archives
lrwxrwxrwx 1 root root 14 Oct 23  2013 Archives -> /root/Archives

realpathシンボリックリンクを解決します。

$ realpath Archives
/root/Archives

$ realpath -L Archives
/root/Archives

しかし:

$ realpath Archives/../foo
/root/foo

$ realpath -L Archives/../foo
/home/katsura/foo

オプションが存在しないか使用されている場合は、-Pシンボリックリンクが最初に解決されるため、Archives適用/root/Archives..れます。

-L最初に適用され、..次にArchives/../home/katsura残りシンボリックリンクが修正されました。シンボリックリンクが残っていないため、結果はです/home/katsura

おすすめ記事