Estoy tratando de descargar un archivo a través de HTTP desde un sitio web usando wget.
Cuando uso:
wget http://abc/geo/download/?acc=GSE48191&format=file
Solo recibo un archivo llamado index.html?acc=GSE48191.
Cuando uso:
wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm
Obtengo asd.rpm, pero quiero descargar con el nombre real, y no quiero cambiar manualmente el nombre del archivo descargado.

--trust-server-namesargumento parawget-Respuestas:
El archivo que está descargando es un
tararchivo (un archivo binario), proporcionado por un enlace dinámico desde un servidor web.wgetnormalmente guardaría el archivo usando parte de la URL que está usando, pero en este caso es solo un punto final de la API REST (o algo similar), por lo que el nombre sería poco amigable para trabajar (aún sería un nombre válido y el el contenido del archivo sería el mismo).Sin embargo, en este caso, el servidor proporciona un encabezado de "Disposición de contenido" que contiene el nombre real del archivo, que
wgetpuede usar si usa la--content-dispositionopción. Esta opción está marcada como "experimental" en mi manual parawget.También debe citar la URL para que el shell no interprete los caracteres
&y?.Lo equivalente usando
curl:O, usando las opciones largas equivalentes:
Una vez que haya descargado el archivo, debe descomprimirlo:
Debido a la forma en que se creó este archivo en particular, esto descomprimirá los archivos del archivo en el directorio actual (por lo que puede ser una buena idea crear un nuevo directorio, mover el archivo allí y desempaquetarlo). Los archivos de este archivo son
gzipcomprimido conCELarchivos.fuente
El shell realiza la interpretación habitual de los caracteres, especialmente
?como comodín (que no importa aquí) y&como "poner en segundo plano". Deberías haber notado esto último, porque la respuesta del shell es diferente de un comando directo.Entonces necesita citar:
fuente