Linux腳本學習筆記

1. 執(zhí)行腳本文件的方法

  • 先給文件添加可執(zhí)行權限,再執(zhí)行
# 假設uad.sh為要執(zhí)行文件
~$: chmod +x uad.sh  
~$: ./uad.sh
  • 使用 sh命令:
~$: sh uad.sh
  • 使用 source命令:
~$: source uad.sh

2. 查找文件

# 查找 /etc 目錄下以 “.conf” 后綴的文件
~$: find  /etc  -name  "*.conf"  -type  f  
# 統(tǒng)計查找到的文件數(shù)目
~$: find  /etc  -name  "*.conf"  -type  f  | wc  -l

3. 重定向操作

重定向名 重定向符號 描述
重定向輸入 < 從指定文件讀取原在,不從鍵盤輸入
重定向輸出 > , >> 將結果覆蓋 友扰; 追加到文件
標準錯誤輸出 2> , 2>> 將錯誤信息覆蓋,追加到文件
混合輸出 &> , &>> 將標準輸出與錯誤輸出覆蓋晤斩,追加到文件

邏輯名 :邏輯符號

  • 與 : &&
  • 或 : ||
  • 順序執(zhí)行 : 焕檬;
~$: mkdir   /mulu/a  2>  /dev/null  && echo  "成功"
# 只有創(chuàng)建成功才會輸出 “成功”
~$: mkidr  /mulu/a  2>  /dev/null  || echo  "失敗"
# 只有創(chuàng)建失敗才會輸出
~$: cd /boot/grub ;  ls -lh grub.conf

4. 變量

  • 變量的定義與賦值:變量名 = 變量值
  • 引用變量:$變量名 、${變量名}
~$:  Title = BeiDa
~$:  echo $Title
BeiDa
  • 雙引號:允許引用澳泵、轉義
  • 單引號':禁止引用实愚、轉義
  • 反撇號 ` 或 $( ) :以命令輸出進行替換
~$: echo "$Title Group"
BeiDa Group
~$: echo '$Title Group'
$Title Group
# 輸出當前l(fā)inux內(nèi)核版本號
~$: uname -r
2.6.18-194.e15
# 使用反撇號
~$: ver=`uname -r`
~$: echo $ver
2.6.18-194.e15
  • 環(huán)境變量、記錄或設置運行參數(shù)
    • 系統(tǒng)賦值:USER, LOGNAME, HOME, SHELL.....
    • 用戶操作:PATH, LANG, CLASSPATH.....
# 輸出當前所有環(huán)境變量
~$: env
# 輸出內(nèi)容兔辅。腊敲。。维苔。
~$: echo $USER $HOME SHELL
zhangsan  /root  SHELL
~$: echo $LANG
zh_CN.UTF-8
  • 其他特殊變量:由操作系統(tǒng)賦值碰辅,不可直接賦值
    變量符號 | 描述
    -- |--
    $? | 前一條命令的狀態(tài)值,0為正常介时,非0為異常
    $0 | 腳本自身的程序名
    $1--$9 | 第1到第9個位置參數(shù)
    $* | 命令行的所有位置參數(shù)的內(nèi)容
    $# | 命令行位置參數(shù)的個數(shù)

5. 數(shù)值運算

  • expr命令:expr 數(shù)值1 操作符 數(shù)值2
  • $[ ]表達式:$[ 數(shù)值1 操作符 數(shù)值2 ]
  • *號需要轉義没宾! 在 $[]中可不用轉義
~$: expr 2 \* 3
6
~$: x=45; y=12; expr $x+$y
66
~$: echo $[45+12]–<table></table><td></td>
66
~$: echo $[45 * 21]
945
~$: echo $[x-y] ; echo $[$x-$y] # 可加$ 也可不加
24 24
  • 遞增處理:let 變量名++ 凌彬、let 變量名--
  • 使用隨機數(shù):RANDOM 變量名
  • 生成數(shù)值序列:seq 首數(shù) 末數(shù) 、seq 首數(shù) 增量 末數(shù)
~$: x=45 ; let x++; echo $x
46
~$: x=45; let x+=2;  echo $x
47
~$: echo $RANDOM
4411
~$: echo $[RANDOM % 100]
54
~$: seq 3
1
2
3
~$: seq 3  5
3
4
5
~$: seq  3  2 10
3
5
7
9
  • 小數(shù)運算:使用 bc 命令處理循衰,將表達式結果傳給 bc
~$: echo "45.67 - 21.05" | bc
24.62
# scale=n 約束小數(shù)位數(shù)
~$: echo "scale=4;  10/3 " |bc
3.333

6. 字符串操作

  • 字符串截取
    • 路徑截炔病: dirname , basename 命令
    • expr命令:expr substr $var 起始位置 截取長度 ,起始位置從 1 開始
    • ${ } 命令 :`${ var : 起始位置 : 截取長度 } 会钝, 起始位置從 0 開始
~$: var="/etc/httpd/conf/httpd.conf"
~$: dirname $var
/etc/httpd/conf
~$: basename $var
httpd.conf
~$: var=BeiDaQingNiao
~$: expr  substr  $var  4  6
DaQing
~$: echo ${ var :4 :6 }
aQingN
#從開頭開始截取時可以省略起始位置
~$: echo ${ var : :5}
BeiDa
  • 字符串替換
    • ${var/old/new } :將第一個 old 替換為 new伐蒋,中間沒有空格
    • ${var //old /new } :將所有 old 替換為 new,中間沒有空格
~$: var=BeiDaQingNiao; echo ${var/i/##}
Be##DaQingNiao
~$: var=BeiDaQingNiao; echo ${var//i/##}
Be##DaQ##ngN##ao
  • 獲取隨機字符串
    • /dev/urandom/usr/bin/md5sum/bin/cut
    • 隨機設備 → MD5轉換 → 截取字符串
    • cut命令:cut -b 起始位置-結束位置迁酸,起始位置為開先鱼,或結束位置為最后時可省略
# 隨機字符 到 ASCII 字符 ,使用cut命令截取從第4個位置到第8個位置間的字符串
~$: head -1 /dev/urandom | md5summ | cut -b 4-8
53364
  • 字符串轉數(shù)字
# 轉成16進制的數(shù)字后 再加4
temp1=400d7c
echo $((16#${temp1}+4)) 

# 轉成10進制數(shù)字
temp1="123"
echo $((10#${temp1}))

7. 條件測試

  • 格式:test 條件表達式[ 條件表達式]
  • 文件狀態(tài):
    • -e : 目標是否存在(Exist)
    • -d:目標是否為目錄(directory)
    • -f:是否為文件(File)
  • 權限檢測:
    • -r:是否可讀(Read)
    • -w:是否可寫(Write)
    • -x:是否可執(zhí)行(eXcute)
  • 整數(shù)比較:
    • -eq:等于(Equal)
    • -ne:不等于(No Equal)
    • -gt:大于(Greater Than)
    • -lt:小于(Lesser Than)
    • -ge:大于或等于(Greater or Equal)
    • -le:小于或等于(Lesser or Equal)
# 統(tǒng)計當前用戶數(shù)
~$: who  |  wc -l
2
~$: [$(who | wc -l) -eq 2] && echo YES
YES
  • 字符串匹配
    • =:兩字符串相同
    • !=:兩字符串不同

附錄

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奸鬓,一起剝皮案震驚了整個濱河市焙畔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌全蝶,老刑警劉巖闹蒜,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抑淫,居然都是意外死亡,警方通過查閱死者的電腦和手機姥闪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門始苇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筐喳,你說我怎么就攤上這事催式。” “怎么了避归?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵荣月,是天一觀的道長。 經(jīng)常有香客問我梳毙,道長哺窄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任账锹,我火速辦了婚禮萌业,結果婚禮上,老公的妹妹穿的比我還像新娘奸柬。我一直安慰自己生年,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布廓奕。 她就那樣靜靜地躺著抱婉,像睡著了一般档叔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒸绩,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天衙四,我揣著相機與錄音,去河邊找鬼侵贵。 笑死届搁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的窍育。 我是一名探鬼主播卡睦,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼漱抓!你這毒婦竟也來了表锻?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乞娄,失蹤者是張志新(化名)和其女友劉穎瞬逊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體仪或,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡确镊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了范删。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾域。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖到旦,靈堂內(nèi)的尸體忽然破棺而出旨巷,到底是詐尸還是另有隱情,我是刑警寧澤添忘,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布采呐,位于F島的核電站,受9級特大地震影響搁骑,放射性物質(zhì)發(fā)生泄漏斧吐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一靶病、第九天 我趴在偏房一處隱蔽的房頂上張望会通。 院中可真熱鬧,春花似錦娄周、人聲如沸涕侈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽裳涛。三九已至木张,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間端三,已是汗流浹背舷礼。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留郊闯,地道東北人妻献。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像团赁,于是被迫代替她去往敵國和親育拨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 個人學習批處理的初衷來源于實際工作欢摄;在某個迭代版本有個BS(安卓手游模擬器)大需求熬丧,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,718評論 0 11
  • 基礎命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,096評論 0 0
  • SHELL腳本學習筆記 標簽(空格分隔): linux shell腳本 1. 常用命令匯總 alias 設置別名u...
    浩浩來了閱讀 745評論 0 3
  • 基礎 頭文件 #!/bin/bash 或者#!/bin/sh #!約定的標記,如IOS的Import 執(zhí)行文件時需...
    ZMJun閱讀 1,232評論 1 2
  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,167評論 2 33