Saya mencoba mengunduh file melalui HTTP dari situs web menggunakan wget
.
Ketika saya menggunakan:
wget http://abc/geo/download/?acc=GSE48191&format=file
Saya hanya mendapatkan file yang dipanggil index.html?acc=GSE48191
.
Ketika saya menggunakan:
wget http://abc/geo/download/?acc=GSE48191&format=file -o asd.rpm
Saya dapat asd.rpm
, tetapi saya ingin mengunduh dengan nama sebenarnya, dan tidak ingin secara manual mengubah nama file yang diunduh.
--trust-server-names
argumen untukwget
-Jawaban:
File yang Anda unduh adalah
tar
arsip (file biner), yang disediakan oleh tautan dinamis dari server web.wget
biasanya akan menyimpan file menggunakan bagian dari URL yang Anda gunakan, tetapi dalam hal ini itu hanya titik akhir API ISTIRAHAT (atau yang serupa) sehingga nama itu tidak ramah untuk bekerja dengan (itu masih akan menjadi nama yang valid dan isi file akan sama).Namun, dalam hal ini server menyediakan tajuk "Disposisi Konten" yang berisi nama file aktual, yang
wget
dapat digunakan jika Anda menggunakan--content-disposition
opsi. Opsi ini ditandai "eksperimental" di manual saya untukwget
.Anda juga perlu mengutip URL agar shell tidak menafsirkan
&
dan?
karakter di dalamnya.Hal yang setara menggunakan
curl
:Atau, menggunakan opsi panjang yang setara:
Setelah mengunduh file, Anda harus membukanya:
Karena cara arsip khusus ini dibuat, ini akan membongkar file arsip ke direktori saat ini (sehingga membuat direktori baru, memindahkan arsip di sana dan membukanya mungkin ada ide bagus). File dalam arsip ini adalah file
gzip
terkompresiCEL
.sumber
Shell melakukan interpretasi karakter yang biasa, terutama
?
sebagai wildcard (yang tidak masalah di sini) dan&
sebagai "latar belakang". Anda seharusnya memperhatikan yang terakhir, karena respon shell berbeda dari perintah langsung.Jadi, Anda perlu mengutip:
sumber