Symlink
chown 的 -H 和 -L 選項有什麼區別?
從
chown
手冊頁:The following options modify how a hierarchy is traversed when the -R option is also specified. If more than one is specified, only the final one takes effect. -H if a command line argument is a symbolic link to a directory, traverse it -L traverse every symbolic link to a directory encountered -P do not traverse any symbolic links (default)
-H
和-L
選項之間的確切區別是什麼?據我了解,-H
僅當將該目錄指定為參數時才允許目錄符號連結遍歷,-L
在任何情況下都會遍歷所有目錄符號連結。(這些選項僅在chown
使用該-R
選項進行遞歸時適用。在非遞歸模式下,始終遍歷指定為參數的目錄符號連結。)這是正確的嗎?
您的理解是正確的;這些選項與
find
.因此
chown -R .
或者
chown -R -P .
在不取消引用任何符號連結的情況下遞歸更改所有者;
chown -R -H *
遞歸地更改所有者,取消引用目前目錄中的任何符號連結(因為它們最終成為參數的一部分)但是
chown -R -H .
仍然沒有取消引用任何符號連結,最後
chown -R -L . chown -R -L *
兩個取消引用符號。
(作為上述範例的旁白,請注意,
.
並不*
一定會產生相同的結果,具體取決於您的 shell 的通配選項——*
通常與點文件不匹配。)