2013-07-17 113 views
4

我想從以下鏈接下載文件:爲什麼捲曲在這種情況下失敗?

http://www.ncbi.nlm.nih.gov/sviewer/viewer.cgi?tool=portal&sendto=on&log$=seqview&db=nuccore&dopt=gilist&sort=&query_key=1&qty=12654729&filter=all 

當粘貼在網頁瀏覽器(Chrome)地址欄上面的鏈接,它可以讓我的文件保存爲「sequence.gi。文本」。

但是當我嘗試在終端,我得到以下錯誤:

curl -o test.txt http://www.ncbi.nlm.nih.gov/sviewer/viewer.cgi?tool=portal&sendto=on&log$=seqview&db=nuccore&dopt=gilist&sort=&query_key=1&qty=12654729&filter=all 
[1] 30036 
[2] 30037 
[3] 30038 
[4] 30039 
[5] 30040 
[6] 30041 
[7] 30042 
[8] 30043 
-bash: log$=seqview: command not found 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
101 7297 0 7297 0  0 59633  0 --:--:-- --:--:-- --:--:-- 79315 
[1] Done     curl -L -o test.txt http://www.ncbi.nlm.nih.gov/sviewer/viewer.cgi?tool=portal 
[2] Done     sendto=on 
[3] Exit 127    log$=seqview 
[4] Done     db=nuccore 
[5] Done     dopt=gilist 
[6] Done     sort= 
[7]- Done     query_key=1 
[8]+ Done     qty=12654729 

怎樣下載在命令行的文件?

回答

7

url中的&告訴bash,它之前的所有內容都是應該在後臺運行的命令。因此,每個&之後的所有內容都被解釋爲在後臺運行的新命令,這就是爲什麼當您嘗試運行命令時會看到一大堆假過程開始啓動。嘗試把網址中的單引號'http://....'避免bash的訓釋的$和&字符作爲特殊字符:

curl -o test.txt 'http://www.ncbi.nlm.nih.gov/sviewer/viewer.cgi?tool=portal&sendto=on&log$=seqview&db=nuccore&dopt=gilist&sort=&query_key=1&qty=12654729&filter=all' 
+0

謝謝。它的工作..部分。現在上面的命令下載了一個文件,但不是我所期望的。當我通過網絡瀏覽器下載時,我會得到一個預期的文本文件。但是通過終端,我收到包含錯誤信息的文件:「您的會話已過期,請重複您的搜索」。任何想法爲什麼差異?謝謝。 – Alby

+0

您正在聯繫的網站正在通過cookie跟蹤瀏覽會話。除非被告知,否則curl不使用cookie。雖然我不是這方面的專家。一些可能有用的信息是[here](http://curl.haxx.se/docs/http-cookies.html)和[here](http://www.charlestonsw.com/curl-from-the-command -線/)。也許這是另一個問題的主題? =) – mshildt

+0

非常感謝!我現在明白了爲什麼。你的解釋深度正是我所尋找的。 – Alby

相關問題