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