Symlink

chown 的 -H 和 -L 選項有什麼區別?

  • September 7, 2016

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 的通配選項——*通常與點文件不匹配。)

引用自:https://unix.stackexchange.com/questions/308355