
Tenho o Cygwin instalado no meu PC com Windows 7 de 64 bits e costumo baixar arquivos grandes usando o wget. wget, no entanto, salva todos os arquivos com permissões que me proíbem de executá-los quando são arquivos executáveis do Windows (.exe ou .msi). Existe alguma maneira de definir as permissões para que eu possa executar esses arquivos automaticamente? Também posso alterar o diretório padrão no qual eles são salvos? Atualmente eles estão salvos na pasta cygwin C:\cygwin64\home\Brenton
e eu gostaria de salvá-los em C:\Users\Brenton\Downloads
.
Para maior clareza, sei como mover esses arquivos manualmente para o diretório desejado depois de salvos (por exemplo, usando:
mv filename C:\Users\Brenton\Downloads
onde filename é o nome do arquivo que precisa ser transferido) e sei como alterar as permissões manualmente via:
chmod 755 filename
mas o que eu quero é uma forma automática de que todos os arquivos baixados via wget de agora em diante sejam baixados para meu diretório preferido com minhas permissões preferidas.
Responder1
Diretório de destino
Você pode usar a opção -P prefix
/ para direcionar o salvamento em um determinado diretório.--directory-prefix=prefix
wget
Defina o prefixo do diretório como
prefix
. O prefixo do diretório é o diretório onde todos os outros arquivos e subdiretórios serão salvos, ou seja, o topo da árvore de recuperação. O padrão é.
(o diretório atual).
Exemplo para salvar um único arquivo em seu diretório de download:
wget -p $(cygpath -u "C:\Users\Brenton\Downloads") http://host.name/setup.exe
Permissões de arquivo
No meu sistema, umask
está configurado para 0022
que quando eu wget
baixe arquivos para o diretório inicial do Cygwin, os arquivos tenham -rw-r--r--
permissões - conforme esperado.
No entanto, se eu fizer download para o Downloads
diretório do Windows, as permissões do executável serão definidas. Não sei por que, mas suspeito que de alguma forma as permissões estejam sendo influenciadas pelas ACLs NTFS. Esse comportamento também pode funcionar a seu favor em seu sistema. Nesse caso, você pode usar um alias de shell simples, como:
alias wget-exe='wget -P $(cygpath -u "C:\Users\Brenton\Downloads") '
Script/função de shell sugerido
Se você ainda precisar alterar as permissões, poderá usar o código a seguir como base para um script ou função de shell (chamado algo como 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