C

mkdir -pinstall -d 有什麼區別?

  • March 31, 2021

就這兩個命令對系統所做的更改而言,mkdir -p和執行的操作有什麼區別?install -d

mkdir -p和之間的主要區別在於install -d,如果目錄已經存在,則只會install -d嘗試設置所有權和文件模式位

  • install -d將呼叫make_dir_parents設置preserve_existingfalse
  • mkdir -p將呼叫make_dir_parents設置preserve_existingtrue

如果preserve_existingtrue並且目錄已經存在,該函式將不會嘗試設置所有權和文件模式位。

mkdir -pinstall -d在 coreutils 中呼叫完全相同的make_dir_parents函式。

Coreutil 來源:

對於初學者來說,mkdir -p是 POSIX,install不是。然後,我們從GNUinstall文件中得到了這個:

如果給出--directory( -d) 選項,則install創建每個 目錄和任何缺少的父目錄。無論選項或目前 umask 是什麼,父目錄都是使用模式 ’ u=rwx,go=rx’ (755)創建的。有關如何繼承父目錄的 set-user-ID 和 set-group-ID 位,-m請參閱Directory Setuid 和 Setgid 。

和:

-d'

--directory'

創建任何缺少的父目錄,並賦予它們預設屬性。然後創建每個給定的目錄,將它們的所有者、組和模式設置為命令行上給定的或預設值。

所以:

  1. 對於 GNU install,父目錄的權限可能不同。
  2. install允許您設置葉目錄的所有權。

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