bashell基礎,bashell
身為一個iOS程式員,雖然iOS相關技術十分重要,但是bash也是不可不瞭解的,因為技能的成長,除了深度,還需要廣度。下面就來介紹下bash。
Shell是C語言編寫的,所以他是解釋性語言,運行在Linux系統下,在Mac下,一般使用的是bashell。
bashell都是運行在Terminal下,本文的所有指令碼也都是運行在Terminal下的。
常用的命令列
pwd //當前路徑ls -l //列出目前的目錄下所有檔案mkdir TestFolder //建立檔案夾touch file.txt file1.txt file2.txt //建立3個檔案,空格分隔ls -l | grep txt | wc -l //列出所有檔案,然後尋找檔案名稱包含txt的檔案,然後計算總共有多少個結果
註:|就是將左邊的結果作為右邊的輸入
man command //man後面接命令則顯示該命令的所有協助資訊,再輸入q則返回history //顯示之前輸入的所有曆史資訊clear //清空所有行du 檔案 //顯示檔案大小cat 檔案 //顯示檔案內容less 檔案 //分頁顯示檔案內容,適合大檔案cp 檔案 新檔案 //複製檔案到新檔案mv 檔案 目錄 //移動檔案到目錄rm 檔案1 檔案2 檔案3 //刪除檔案1,檔案2,檔案3rm -rf /* 或者 rm -rf / //刪除所有檔案,千萬不要執行這一句!!!!!千萬不要!!!!sudo su //成為root使用者chomd +x 檔案 //給檔案執行許可權,在做shell的時候十分有用
wc -m << END //從鍵盤讀入資料並統計讀入資料的大小,以END符號來結束ps -ef //顯示所有進程列表top //顯示進程動態列表kill 進程PID //結束一個進程tar -cvf archive.tar file1.txt file2.txt file3.txt //歸檔tar -xvf tutorial.tar //解檔gzip tutorial.tar //壓縮gunzip tutorial.tar.gz //解壓縮unzip archive.zip //解壓縮
基礎的命令列就介紹到這裡,下面開始shell
Shell基礎
在介紹shell之前,需要先瞭解vim
輸入vim,然後會進入操作介面,這個操作介面分三種模式:互動式,插入式,命令式。其中互動式和命令式我個人覺得比較接近,都是通過命令來作為輸入,區別是命令式需要先輸入:
我們先輸入
vim 檔案 //一般以.sh結尾,你用txt結尾也可以然後按下i,就進入插入模式了,就可以開始寫shell了
我們輸入一些代碼來分別講講基礎shell文法:
#指明運行shell的解譯器#!/bin/bash #輸出文本echo "your name" #格式化方式輸入文本printf "%d %s" 123 "abcds" #從鍵盤輸入read PERSON #列印輸入的內容echo "hello $PERSON" #val是變數,expr是運算子,反引號表示val可以將內容先存到記憶體中,以後使用再將結果從記憶體中讀出來;等號左右都不能有空格,expr後面空格不能少val=`expr 2 + 2` #$引用變數,雙引號和單引號用法相同,不過如果含有變數,要用雙引號 echo "value : $val" #if文法,空格不能少;eq表示相等,fi表示if結束if [ 10 -eq 100 ] then echo "equal"else echo "not equal"fi file="test.sh"#-f 表示是否普通檔案if [ -f $file ] then echo "ordinary file"else echo "not ordinary file"fistring="79838924kfdsldjslfjdslfs"#字串長度echo ${#string} #字串第1到5位,輸出98389echo ${string:1:5} name[0]="a"name[1]="b"name[2]="c"#列印數組name的成員echo ${name[*]} length=${#name[*]}#列印數組長度echo "array length is $length" #for文法,./*是目前的目錄所有檔案,mm表示迴圈體內單個檔案for mm in ./* do echo $mmdone count=0#while文法結構, -lt表示less thanwhile [ $count -lt 5 ] do count=`expr $count + 1` echo $countdone #case文法結構aNum=1case $aNum in 1) echo 'abc' ;; *) echo 'default' ;;esac#shell函數,帶參數的寫法,$1表示第一個參數,$2表示第二個#注意,$10 不能擷取第十個參數,擷取第十個參數需要${10}。當n>=10時,需要使用${n}來擷取參數functionWithParam(){ echo "first param $1" echo "second param $2" return 123}#函數傳參functionWithParam 1 2#擷取函數傳回值ret=$?echo $ret#$# 傳遞給函數的參數個數#$* 顯示所有傳遞給函數的參數#接收.sh的第一個參數option="${1}"
當這些指令碼都輸入完畢以後,按下esc鍵,然後輸入:wq 表示儲存並退出vim的意思
然後輸入:
chmod +x test.sh //給sh檔案以執行許可權
./test.sh //開始執行指令碼 ./為執行路徑,如果你的指令碼放在/bin, /sbin, /usr/bin,/usr/sbin等PATH裡,才可以省略./
如果想要調試執行,則輸入:
bash -x test.sh
基本的命令列和基本的bash就介紹到這裡
參考文章:
http://www.jianshu.com/p/7c3a4f56f671
http://c.biancheng.net/cpp/view/6994.html