一条命令下载google壁纸,含错误解决方法
該命令是從google圖片搜索上搜索wallpaper的大尺寸圖片,匹配其中的jpg文件進行下載。
#!/bin/bash
for i in {1..10}; do
? ? for url in $(wget -O- -U "" "http://images.google.com/images?imgsz=xxlarge&hl=en&q=wallpaper&sa=N&start=${i}&ndsp=10" --quiet | grep -oe 'http://[^"]*\.jpg');
do
? ? ? ? wget $url;
? ? done
done
上面是google_wallpaper_download.sh腳本的內(nèi)容。
我們逐行說下這句shell的意思。
1. 這句好理解一個for循環(huán),令i從1到10.
2. 這也是一個for循環(huán), $()這個是說明將里面的內(nèi)容執(zhí)行然后逐一賦值給url。
wget 是一個非交互式的網(wǎng)絡(luò)文件下載工具,如果未安裝執(zhí)行sudo apt-get install wget進行安裝。-O指定下載后的輸出文件,如果指定的文件是“-“,代表標準輸出;-U 指定agent,而非wget自帶的。–quiet安靜模式 (無信息輸出)。
然后通過管道(管道指|)將輸出傳遞給grep命令(在文件或輸入中進行查找的命令)-o指示只顯示匹配到的東西,-e指示使用正則進行匹配,
‘http://[^"]*\.jpg’是一個正則表達式,這里不介紹了。
3. wget下載匹配到的url。
4,5. done表示for結(jié)束。
總結(jié):該命令下載google的搜索結(jié)果,匹配jpg圖片地址,然后逐一下載。
可是我在使用了,犯了一個錯誤,特記錄如下:
linux下sh執(zhí)行 syntax error near unexpected token ' 錯誤解決方法:
將windows下的sh文件放到linux上執(zhí)行后,會出現(xiàn)如標題的錯誤。該錯誤有文件格式引起的,具體來說,有幾種方式可以嘗試下。
?
在windows下,用ultraedit打開文件,將光標定位到換行處,然后"切換十六進制編輯模式“,可以看到換行處的值為”0D 0A",altraedit最下的工具欄可以看到“DOS”的文件樣式。altra edit有帶"DOS轉(zhuǎn)UNIX“的功能,轉(zhuǎn)換下,即可在最下的工具欄為"UNIX"字樣,切換十六進制編輯模式看到的換行處的值就為"0A"字樣,這時傳遞上去,執(zhí)行sh就沒有問題了。
linux自身有帶dos2unix的命令,轉(zhuǎn)換一下,這個沒有試過,不過應(yīng)該可行。
總結(jié)
以上是生活随笔為你收集整理的一条命令下载google壁纸,含错误解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ESI简介
- 下一篇: Ubuntu 12.04下玩转终端管理器