Chown

自 Apache Ant 1.6 起.

說明

變更指定目錄中檔案或所有檔案的所有者。目前僅在 Unix 中有效。所有者屬性等同於 chown 指令的對應參數。

可以使用嵌套的 <fileset><dirset><filelist> 元素來指定 FileSetDirSetFileList

自 Ant 1.7 起,此任務支援任意 資源集合作為嵌套元素。

預設情況下,此任務會單獨呼叫基礎的 chown 指令。如果您處理大量檔案,可能會導致指令行過長,超過作業系統的限制。如果您遇到此類問題,應將此任務的 maxparallel 屬性設定為非零值。要使用的數字高度取決於檔案名稱的長度(目錄樹的深度)和作業系統,因此您需要進行一些實驗。POSIX 建議指令行長度限制至少為 4096 個字元,這可以讓您估計在這些實驗中可作為初始值使用的數字。

預設情況下,此任務在偵測到它在 Unix 系統上執行時,才會執行任何動作。如果您確定在您的 PATH 中有 chown 可執行檔,且其指令行與 Unix 指令相容,則可以使用任務的 os 屬性,並將其值設定為您目前的作業系統。

參數

屬性 說明 必要
file 必須變更其所有者的檔案或目錄。 是,除非指定嵌套的 <fileset|filelist|dirset> 元素
owner 新所有者。
parallel 使用單一 chown 指令處理所有指定的檔案。 否;預設為 true
type 下列其中一項:filedirboth。如果設定為 file,將只變更純文字檔案的所有者。如果設定為 dir,將只考慮目錄。
注意type 屬性不適用於嵌套的 dirsetdirset 始終隱含假設類型為 dir
否;預設為 file
maxparallel 限制平行處理量,一次傳遞的來源檔案數量最多為此數目。設定為負整數表示無限制。 否;預設為無限制
verbose 是否在執行後列印摘要。 否;預設為 false
作業系統 可執行指令的作業系統清單。
作業系統系列 <os> 條件中使用的作業系統系列。 否;預設為 unix

範例

start.sh 檔案屬於 UNIX 系統上的 coderjoe

<chown file="${dist}/start.sh" owner="coderjoe"/>

${dist}/bin 下方的所有 .sh 檔案屬於 UNIX 系統上的 coderjoe

<chown owner="coderjoe">
  <fileset dir="${dist}/bin" includes="**/*.sh"/>
</chown>

shared/sources1 下方的所有檔案(除了任何名為 trial 的目錄下方檔案)屬於 UNIX 系統上的 coderjoe。此外,所有屬於 id=other.shared.sources 的 FileSet 的檔案會取得相同的擁有者。

<chown owner="coderjoe">
  <fileset dir="shared/sources1">
    <exclude name="**/trial/**"/>
  </fileset>
  <fileset refid="other.shared.sources"/>
</chown>

cgi 程式碼、具有 .old 副檔名的檔案或以 private_ 開頭的目錄屬於名為 webadmin 的使用者。以 .old 結尾的目錄或以 private_ 開頭的檔案將不受影響。

<chown owner="webadmin" type="file">
  <fileset dir="/web">
    <include name="**/*.cgi"/>
    <include name="**/*.old"/>
  </fileset>
  <dirset dir="/web">
    <include name="**/private_*"/>
  </dirset>
</chmod>