顯示具有 scripts 標籤的文章。 顯示所有文章
顯示具有 scripts 標籤的文章。 顯示所有文章

2008年9月15日 星期一

useful shell scripts (smart extract)


M$ 的 DOS command 和 *nixshell 相比,真是小巫見大巫,其語言特性已經接近一個正式的程式言,而且可以輕易的調用其他 *nix 工具,配合 pipe 可謂神乎奇技,這是其中一個:自動判斷檔案內容決定解壓縮是否要放在一資料夾內 ##ReadMore##

#!/bin/sh usage(){ echo "$0 *.(zip|7z|rar|001)" } if [ -z "$1" ] ; then usage else case "$1" in *.[Rr][Aa][Rr] ) cnt=`unrar vb "$1" | sed 'sx/.*xxg' | sort | uniq | wc -l ` if [ $cnt -le 1 ] ; then unrar x "$1" else dir=`echo "$1" | sed 'sx\.001$xxg' | sed 'sx\(.*\)\..*x\1xg'` mkdir "$dir" unrar x "$1" "$dir/" fi ;; *.7[Zz] | *.[Zz][Ii][Pp] | *.7[Zz].001 ) cnt=`7z l -slt "$1" | grep '^Path = ' | sed 'sx^Path = xxg' | sort | uniq | wc -l` if [ $cnt -le 1 ] ; then 7z x "$1" else dir=`echo "$1" | sed 'sx\.001$xxg' | sed 'sx\(.*\)\..*x\1xg'` 7z x "-o$dir" "$1" fi ;; *) usage esac fi

複製、存檔、加執行屬性、丟至 /usr/loca/bin or /usr/bin/ 就可以懶人解壓了:

[user]$ extract file.rar [user]$ extract file.7z [user]$ extract file.zip [user]$ extract file.part1.rar
方便又好記。(>ω<)♪♪
而這次就不需要使用 kde UI 介面,完全文字指令,並且不會有效率問題,只是有時可能要對加密檔打兩次密碼。

  • 其實這個 wireless script tool 也是這樣寫出來的,有興趣可以把它拆解開來研究

2008年8月12日 星期二

Console Wireless Script Tool


這是一個簡單的無線網路偵測及儲存設定的 script 檔案,主要就是把一連串麻煩的動作進行偷懶而已...好處是完全使用指令行就能完成動作,不需要安裝額外 GUI 程式介面,輕巧又不失便利(>ω<)♪♪
注意:請先確認自己無線驅動安裝完成 ##ReadMore##

檔案

url,安裝至 /usr/bin 或 /usr/local/bin,建議改名成 wlan 並記得要有執行權限

特色

  • 自動啟動無線尋找,列出可用清單並以對話式詢問
  • 簡單可管理的連線設定檔
  • 可手動指令呼叫
基本上要跑起一個無線網路就是這樣流程:
  1. 啟動設備
  2. 掃描
  3. 指定連線網路
  4. 設定IP
其中IP又有分自動取得 (dhcp) 或手動指定 (static),而這個程式就是把這些動作背後的複雜指令包裝過並簡單地管理而已

使用方法

一個典型的使用流程是這樣的,要用 sudo 執行:(粗字表示鍵盤輸入,Enter 表按 Enter)
[user]$ sudo wlan
密碼:
no list file /home/user/.wlst, create one
<< auto mode, wlan --help for manual help >>
there are:
*"default" Quality=53/100 Signal level=-61 dBm Noise level=-72 dBm
with profiles:
type # to set, or Enter to manual setting: Enter
type "[essid] (key [key])": default key passkeyhere
type "dhcp" for dhcp
"static [IP] [gateway]" for static
dhcp
save to list? [Y/n]Enter
偵測到的無線網路就列在 there are: 的下面,最前面有 '*' 開頭的表示有加密,輸入你要的連線名稱和後面的 key [密碼] ,其後如果是自動偵測 IP 的無線網路就輸入 dhcp (或手動的輸入 static 192.168.1.2 192.168.1.254 之類),最後選擇是否要存下此設定。
使用已存清單的例子:
[user]$ sudo wlan
密碼:
<< auto mode, wlan --help for manual help >>
there are:
*"default" Quality=53/100 Signal level=-61 dBm Noise level=-71 dBm
with profiles:
1 default key passkeyhere # dhcp
type # to set, or Enter to manual setting: 1
輸入數字選取設定檔裡的資料連線即可。 其他的說明請用指令 [user]$ sudo wlan --help 或打開檔案本身查看

連線管理

檔案預設存在 $HOME/.wlst 下,打開他的格式就像這樣:
default key passkeyhere # dhcp
如果多一點的話:
default key passkeyhere # dhcp
WLnopw # dhcp
WLstatic key wpass # static 192.168.1.13 192.168.1.254
'#' 的左邊設定連線的訊號名和密碼,分有無密碼,右邊則是 IP 設定方式,分自動和指定,可以自己用編輯器修改

設定

大部份下情況下都沒有問題才是,在你已經裝好驅動的前提下,不過若你的設定不太一樣的話請打開 wlan.sh 檔修改 wid 和 lstf 這兩個參數

  • 自動介面無法處理 essid 名有空白的狀況,現階段只能以指令方式連線

Smart Extract here


其實這是個老東西...
從我原本的的 Konqueror: Extract Here 所分離出來的兩個 bash script, 如此更可以在不同的平台上自由使用: url,其中的 unrar-gui.sh, p7zip-gui.sh, 下載後可以自行改名 ##ReadMore##

主要特色

  • 自動偵測壓縮檔是否有加密,有會詢問
  • 如果壓縮檔最上層有超過一個檔案,會放到[壓縮檔名]的資料夾下,如:
    haha.zip 內函 a.file, b.file, dir1, dir1/file11, 就會全部解到 haha/ 資料夾下

安裝
放到 /usr/local/bin 或 /usr/bin 即可

使用方法([fn] 指 script file name):

[user]$
[user]$
[fn] x [archive] # 自動做上述動作
[fn] d [archive] # 跳出選擇資料夾對話框

  • 正常使用需要有 kde 環境(kde3/4) 及 p7zip / unrar
  • 可以在檔案管理程式設定關聯,執行程式名稱設「[fn] x」即可
  • 偵測密碼方式是以後端程式第一次無密碼解壓結果判斷,所以時間變兩倍,解費時的大檔時建議還是用指令