顯示具有 shell script 標籤的文章。 顯示所有文章
顯示具有 shell script 標籤的文章。 顯示所有文章

2014年4月18日 星期五

NAT環境下從 Linux console取得外部IP位址

一隻小 shell script,一行指令

#! /bin/bash
 echo `curl -s ifconfig.me` | mutt -s ' real IP of my host ' someone@gmail.com


其中curl -s ifconfig.me 是用curl去連結回報真實IP服務的網站,類似的網站還有
curl ident.me
curl tnx.nl/ip
curl icanhazip.com
curl ipecho.net/plain
curl ip.appspot.com



2013年7月14日 星期日

bash下批次縮小gif動畫指令 -- 使用 gifsicle


gifsicle --scale 0.5 --batch -i *.gif

需要安裝gifsicle套件,且上面這作法會直接複寫原本目錄中的檔案(scale in place )

bash下批次縮小目前目錄中所有圖片

指令:

for file in *; do convert $file -scale 50% ../small_0.5/`basename $file`; done

上述指令可以將目錄內所有檔案縮小50%,存放到上層的small_0.5目錄中


上面這個作法遇到gif動畫會破功,無法產生縮放過後的gif動畫,只剩下第一個frame。要能正確縮放gif動畫,需用到底下

for file in *; do convert  $file -coalesce -scale 50%  ../small_0.5/`basename $file`; done

for file in *; do convert  $file -coalesce -sample 50%  ../small_0.5/`basename $file`; done

兩種作法都可以,但是根據文件,產生的結果可能畫質上會有所差異,哪個方法比較好可能要看實際狀況才能判斷。

ImageMagick參考資料:
http://www.imagemagick.org/Usage/anim_mods/#crop

以上需要有ImageMagick套件(convert 這隻程式屬於ImageMagick套件成員之一)

2012年5月2日 星期三

變數值樣式比對


變數值樣式比對 (參考http://www.suse.url.tw/sles10/lesson10.htm)

 另外一種字串運算符的型態,是比對指定的樣式 ( pattern ) 跟變數值,然後才根據比對的結果來決定傳回的變數值。
比對算符代 表 意 義
${var#pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的前面部分比對起,如果有符合之處,就刪除變數值中最短的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/dir/file
suse:~ # echo ${var#/*/}
barry/dir/file
${var##pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的前面部分比對起,如果有符合之處,就刪除變數值中最長的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/dir/file
suse:~ # echo ${var##/*/}
file
${var%pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的後面部分比對起,如果有符合之處,就刪除變數值中最短的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/dir/
suse:~ # echo ${var%/*/}
/home/barry
${var%%pattern}把 pattern 與 var 變數值做比對時,是從 var 變數值的後面部分比對起,如果有符合之處,就刪除變數值中最長的部分,並傳回其餘的變數值。
suse:~ # var=/home/barry/test.tar.gz
suse:~ # echo ${var%%.*}
/home/barry/test
${var/pat1/pat2}若變數值中含有 pat1,就將第一個 pat1用 pat2 作替代 。
suse:~ # var=/home/barry/barrydir/barryfile
suse:~ # echo ${var/barry/mary}
/home/mary/barrydir/barryfile
${var//pat1/pat2}若變數值中含有 pat1,就將全部的 pat1用 pat2 作替代 。
suse:~ # var=/home/barry/barrydir/barryfile
suse:~ # echo ${var//barry/mary}
/home/mary/marydir/maryfile


還是搞不大懂...