2011-12-06 34 views
1

假設我有一個bash腳本,它通過一個包含所有已重定向的舊URL列表的文件。curl編譯重定向頁面列表

curl --location http://destination.com將通過重定向來處理頁面。但是,我對內容不感興趣,但對重定向點的位置感興趣,以便我可以更新我的記錄。

curl的命令行選項輸出URL的新位置是什麼?

回答

9

您WOU要離開了--location/-L標誌,並使用-w,檢查redirect_url變量。 curl -w "%{redirect_url}" http://someurl.com應該這樣做。

用於腳本:

REDIRECT=`curl -w "%{redirect_url}" http://someurl.com` 
echo "http://someurl.com redirects to: ${REDIRECT}" 

curl man page

-w, --write-out <format> 

作出標準輸出捲曲顯示信息的傳遞完成之後。格式是一個字符串,可以包含與任何數字 變量混合的純文本。格式可以指定爲字符串「string」,或者可以使用curl從具有「@filename」的文件中讀取格式,並通過 告訴curl從您寫爲「@ - 」的stdin讀取格式。

輸出格式中的變量將被替換爲 的值或curl認爲合適的文本,如下所述。所有變量 被指定爲%{variable_name}並輸出一個正常的%,您只需將它們寫爲%%即可 。您可以使用\ n輸出換行符,一個滑塊 以\ r返回,標籤空間以\ t返回。

注:的%-symbol是在Win32的環境下, 所有%出現必須使用此選項時加倍的特殊符號。

可用的變量有:

...
redirect_url當一個HTTP請求沒有-L而遵循 重定向時,這個變量將顯示實際的URL重定向 帶你。 (在7.18.2中增加)
...

1
man curl 

然後

search redirect_url 

REDIRECT_URL當一個HTTP請求沒有-L作出跟進 重定向,這個變量將顯示實際的URL重定向會 帶你去。 (7.18.2中新增 )

上面的變量是-w/--write-out <format>

2

這可能會實現(作爲起點)

curl -sI google.com | head -1 | grep 301 | wc -l