修改 Cygwin 上的 wget 權限和下載目錄

修改 Cygwin 上的 wget 權限和下載目錄

我在 Windows 7 64 位元 PC 上安裝了 Cygwin,並且經常使用 wget 下載大檔案。然而,wget 保存的所有檔案都具有禁止我執行 Windows 執行檔(.exe 或 .msi)的權限。有什麼方法可以讓我設定權限以便我可以自動執行這些文件嗎?我還可以更改保存它們的預設目錄嗎?目前它們已保存到 cygwin 資料夾中C:\cygwin64\home\Brenton,我想將它們保存到C:\Users\Brenton\Downloads.

為了清楚起見,我知道如何在保存這些文件後手動將它們移動到我想要的目錄(例如,使用:

mv filename C:\Users\Brenton\Downloads

其中 filename 是需要傳輸的檔案名稱),我知道如何透過以下方式手動變更權限:

chmod 755 filename

但我想要的是一種自動方式,以便從此以後透過 wget 下載的所有檔案都將以我的首選權限下載到我的首選目錄。

答案1

目的地目錄

您可以使用-P prefix/--directory-prefix=prefix選項直接wget 儲存到某個目錄。

將目錄前綴設定為prefix.目錄前綴是所有其他檔案和子目錄將保存到的目錄,即檢索樹的頂部。預設為.(目前目錄)。

將單一檔案儲存到下載目錄的範例:

wget -p $(cygpath -u "C:\Users\Brenton\Downloads") http://host.name/setup.exe

文件權限

在我的系統上,umask設定為0022這樣當我用於wget將檔案下載到我的 Cygwin 主目錄時,檔案具有-rw-r--r--預期的權限。

但是,如果我下載到 WindowsDownloads目錄,則會設定可執行權限。我不確定為什麼,但我懷疑權限在某種程度上受到 NTFS ACL 的影響。此行為也可能對您的系統有利。如果是這樣,您可以使用簡單的 shell 別名,例如:

alias wget-exe='wget -P $(cygpath -u "C:\Users\Brenton\Downloads") '

建議的 shell 腳本/函數

如果您仍然需要更改權限,您可以使用以下程式碼作為 shell 腳本或函數的基礎(稱為類似wget-exe):

#!/bin/sh
downloads=$(cygpath -u "C:\Users\Brenton\Downloads")
wget -P "$downloads" "$@"

dir="$PWD"
cd "$downloads"
chmod 755 *.exe *.msi
cd "$dir"
# Alternative version using find to change permissions of all .msi and .exe files
# downloaded in the last day.
# find "$downloads" -mtime -1 \( -name '*.exe' -o -name '*.msi' \) -print0 | xargs -0 chmod +w

相關內容