• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
 Script Programming @HackingCamp 2011
 

Script Programming @HackingCamp 2011

on

  • 1,319 views

 

Statistics

Views

Total Views
1,319
Views on SlideShare
1,125
Embed Views
194

Actions

Likes
1
Downloads
12
Comments
0

4 Embeds 194

http://hychen.wuweig.org 186
http://translate.googleusercontent.com 3
http://www.linkedin.com 3
http://feeds.feedburner.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

     Script Programming @HackingCamp 2011 Script Programming @HackingCamp 2011 Presentation Transcript

    • Script Programming Linux Power User 的利器 陳信屹 (Hychen) HackingCamp 2011, 大溪國小本簡報採用 創用 CC 「姓名標示 - 非商業性」 3.0 台灣條款本簡報圖檔下載於網際網路者,特別聲明為自由軟體推廣演講中進行「合理使用」,請讀者不要任意移置他用。
    • Hychen● 現為 Canonical 軟體工程師 ● Canonical 為 Ubuntu GNU/Linux 的主要商業贊助商● 曾為 Lazyscripts Project 開發人員 ● 架構設計 , 程式開發● 大一開始接觸 Linux, Linux 使用經驗 9 年● http://about.me/hychen
    • 開始之前 ...
    • Script 很難 ? Power User 才會 ???
    • 我也不是一開始就是 Linux Power User 的 !Picture:http://www.flickr.com/photos/55524309@N05/5519745603/sizes/z/in/photostream/
    • Script何時用 ?處理任何可以自動化的事時
    • 少做多玩
    • Script是什麼 ?將許多指令彙整寫在一起,處理複雜的動作。
    • 指令 ??? cp ls mv grep awk mkdir rm top ps cat wc echo who bzr git apt-get apt-cache apt-filecut wget tee pstree dmesg lspci lsusb aticonfig reportbug gpg mount df du fdisk
    • 指令 去買中餐 去繳信用卡帳單 買 LV 包包送我 回家後洗衣服 , 丟垃圾
    • 托人買 iPAD2怎麼下指令 ??
    • I dont care
    • 幫我買白色的 ipad2 ( 單一指令 )如果沒有白色的 32G, 就買白色 64G, 否則就買黑色 32G ( 條件式指令 ) 在買到以前 , 每天都幫我去商店看有沒有現貨( 重複指令 )
    • 函數 ?拖人買 iPad2 { 幫我買白色的 ipad2 ( 單一指令 )如果沒有白色的 32G, 就買白色 64G, 否則就買黑色 32G ( 條件式指令 ) 在買到以前 , 每天都幫我去商店看有沒有現貨} ( 重複指令 )
    • 變數 ?拖人買 A___ { 幫我買 A___ ( 單一指令 ) 如果沒有 A___, 就買白色 64G, 否則就買黑色 32G ( 條件式指令 ) 在買到以前 , 每天都幫我去商店看有沒有現貨 ( 重複指令 )}
    • Script?指令 變數 迴圈函數 條件式
    • 君有令 電腦不敢不從
    • rm -rf / NEVER DO THIS!
    • Terminal 是power User 的好朋友 !!
    • 指令不會 問男人user@host$ man cmd
    • 你好世界 First Example
    • GNU Bash Bash is the shell, or command language interpreter, that willappear in the GNU operating system. Shell 也是一種使用者介面 , 只是沒圖形化介面那麼華麗罷了
    • PerlPython
    • 編輯器有差嗎 ? 當然有差
    • 好的編輯器帶你上天堂爛的編輯器帶你住套房 By c9s
    • Gedit 編輯器
    • VIM編輯器之神
    • VIM Hacks – c9shttp://www.slideshare.net/c9s/vim-hacks
    • Emacs 神之編輯器a.k.a 偽裝成編輯器的作業系統
    • ./script.sh bash script.shsource script.sh
    • 變數
    • 字串
    • name=hychen 直接賦值
    • name=`whoami` 賦值指令結果
    • 一個空格的慘劇rm /usr /share/application/example
    • $name ${name} 取得變數的值
    • 數字
    • X=1直接賦值
    • $((1+1))數字運算
    • $((X+1))數字運算
    • 陣列
    • X=(1 2 3) 允許數字字串混用 以空白隔開 Index 由 0 開始
    • X[0]=4設定第 1 個元素
    • X[1]=4 設定第 2 個元素[1] 的 1 可被替換成任意數字
    • ${X[0]}取得第 1 個元素
    • ${X[1]} 取得第 2 個元素[1] 的 1 可被替換成任意數字
    • X=(1 2 3) ${X[3]} Wrong注意邊界問題 !
    • ${VAR/str1} ${VAR#} ${VAR##} ${VAR%} ${VAR%%}${VAR/str1/str2}
    • 輸入
    • $0 檔名./script 1 2 3 4 #!/bin/sh echo $0 # script
    • $N 第 N 個參數./script 1 2 A 4 #!/bin/sh echo $1 # 1 echo $3 # A
    • $# 參數個數./script 1 2 A 4 #!/bin/sh echo $# # 4
    • $@ 所有參數 字串./script 1 2 A 4 #!/bin/sh Echo $@ # 1 2 3 4
    • < 標準輸入導向./script < input_file.txt
    • 輸出
    • | PIPE / 管線dpkg -l | grep vimdpkg -l | grep vim | grep tiny
    • > 標準輸出導向 ( 覆蓋 ) echo Hello > test.txt Hello echo World > test.txt World
    • >> 標準輸出導向 ( 添加 ) echo Hello > test.txt Hello echo World >> test.txt Hello World
    • 2> 錯誤輸出導向 SKIP: 有興趣的人自己研究
    • 環境變數
    • $PATH $PWD $HOME 可執行指令位置 現在位置 家目錄
    • 判斷符號
    • [ -z $HOME ]; echo $? $? 程式執行結果狀態
    • [ -z $HOME ] && echo empty $?! == 1 則執行第二個指令
    • [ -z $HOME ] || echo exist $? != 0 則執行第二個指令
    • 在 [] 內 每個元素都需要有空白鍵來分隔; 變數,最好都以雙引號括號起來;常數,最好都以單或雙引號括號起來。
    • 條件式
    • If 判斷符號 ;then codefi
    • If [ -z $HOME ];then echo emptyfi
    • If 判斷符號 ;then codeelse codefi
    • If 判斷符號 ;then codeelse codefi
    • &&If [ -z $HOME ] [ 1 == 1 ]; ||then echo emptyelse echo existfi && - AND || - OR
    • case $VAR in 第一個內容 ) code ;; 第二個內容 ) code ;; *) code ;;esac
    • for var in $i;do echo $vardone
    • for(( 初始值 ; 限制值 ; 執行步階 ))do codedone
    • while 判斷符號do codedone
    • until 判斷符號do codedone
    • function 函數名 { echo $1 $ 2 $3}
    • Bash 的變數沒有 Scope
    • 正規表示式
    • ^.*w+d+$
    • ^ 行頭
    • . 任意字元
    • * 多次符合( 包含 0 次 )
    • + 多次符合( 至少一次 )
    • w 字串
    • d 數字
    • $ 行尾
    • 很多地方都會用到
    • Sed , awk
    • POSIX,PERL, CREGEX
    • Thanks