
Tengo Cygwin instalado en mi PC con Windows 7 de 64 bits y, a menudo, descargo archivos grandes usando wget. wget, sin embargo, guarda todos los archivos con permisos que me prohíben ejecutarlos cuando son archivos ejecutables de Windows (.exe o .msi). ¿Hay alguna forma de configurar los permisos para poder ejecutar estos archivos automáticamente? ¿Puedo cambiar también el directorio predeterminado en el que se guardan? Actualmente están guardados en la carpeta cygwin C:\cygwin64\home\Brenton
y me gustaría guardarlos en C:\Users\Brenton\Downloads
.
Para mayor claridad, sé cómo mover estos archivos al directorio deseado manualmente después de guardarlos (por ejemplo, usando:
mv filename C:\Users\Brenton\Downloads
donde nombre de archivo es el nombre del archivo que debe transferirse) y sé cómo cambiar los permisos manualmente mediante:
chmod 755 filename
pero lo que quiero es una forma automática para que todos los archivos descargados a través de wget a partir de ahora se descarguen en mi directorio preferido con mis permisos preferidos.
Respuesta1
Directorio de destino
Puede utilizar la opción -P prefix
/ para indicar que se guarde en un directorio determinado.--directory-prefix=prefix
wget
Establezca el prefijo del directorio en
prefix
. El prefijo del directorio es el directorio donde se guardarán todos los demás archivos y subdirectorios, es decir, la parte superior del árbol de recuperación. El valor predeterminado es.
(el directorio actual).
Ejemplo para guardar un solo archivo en su directorio de descarga:
wget -p $(cygpath -u "C:\Users\Brenton\Downloads") http://host.name/setup.exe
Permisos de archivos
En mi sistema, umask
está configurado para 0022
que cuando descargue wget
archivos a mi directorio de inicio de Cygwin, los archivos tengan -rw-r--r--
permisos, como se esperaba.
Sin embargo, si descargo a mi Downloads
directorio de Windows, se establecen los permisos ejecutables. No estoy seguro de por qué, pero sospecho que de alguna manera los permisos están influenciados por las ACL de NTFS. Este comportamiento también puede funcionar a su favor en su sistema. Si es así, podrías usar un alias de shell simple como:
alias wget-exe='wget -P $(cygpath -u "C:\Users\Brenton\Downloads") '
Script/función de shell sugerida
Si aún tiene que cambiar los permisos, puede usar el siguiente código como base para una función o script de shell (llamado algo así 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