一捧书、shell腳本簡介
vi /etc/shells 查看Linux系統(tǒng)支持的shell僵驰,直接輸入shell名稱即可進(jìn)入相應(yīng)shell
!/bin/bash 這條語句不是注釋炫狱,用來標(biāo)識(shí)這個(gè)以下內(nèi)容是shell腳本
執(zhí)行方法
1、chmod 755 hello.sh
./hello.sh 通過相對路徑或絕對路徑的方式調(diào)用執(zhí)行
2、通過bash調(diào)用執(zhí)行腳本
bash hello.sh 可以不賦予執(zhí)行權(quán)限就可以執(zhí)行
從windows腳本轉(zhuǎn)換為linux腳本
dos2unix 文件名 dos2unix命令可以通過手動(dòng)安裝軟件包 yum -y install dos2unix
unix2dos 文件名 從linux轉(zhuǎn)換為windows
二院塞、shell的基本功能
1顿肺、history [選項(xiàng)][歷史命令保存文件]
-c清空歷史命令
-w把緩存中的歷史命令寫入保存文件~/.bash_history
歷史命令默認(rèn)會(huì)保存1000條戏溺,可以在環(huán)境變量配置文件/etc/profile中修改
歷史命令的調(diào)用
上下箭頭調(diào)用
渣蜗!n :執(zhí)行第n條歷史命令
2、命令別名
alias 別名=‘原命令
unalias 別名 刪除別名
alias 查看別名
讓別名永久生效
vi /~/.bashrc
3于购、常用快捷鍵
ctrl+c :終止當(dāng)前執(zhí)行的命令
ctrl+l :清屏
ctrl+u :清除或剪切光標(biāo)左邊的命令
ctrl+y :粘貼之前剪切的命令
ctrl+r :搜索
ctrl+d :退出當(dāng)前終端
4袍睡、輸入輸出重定向
輸出重定向
命令 > 文件 命令結(jié)果覆蓋到文件中
命令 >> 文件 命令結(jié)果追加到文件中
命令 2> 文件 命令錯(cuò)誤結(jié)果覆蓋到文件中
命令 2>> 文件 命令錯(cuò)誤結(jié)果追加到文件中 2和>之間不能有空格
將正確輸出和錯(cuò)誤輸出保存到同一個(gè)文件中
命令 > 文件 2>&1
命令 >>文件 2>&1
命令 &>文件
命令 &>>文件
將正確輸出保存到文件1中,錯(cuò)誤輸出保存到文件2中
命令 >>文件1 2>>文件2
例:ls >>def 2>>efg
輸入重定向(不常用)
改變命令的輸入方向肋僧,從原來由鍵盤輸入斑胜,改變?yōu)橛晌募鳛檩斎?br>
命令 < 文件 把文件作為命令的輸入
wc [選項(xiàng)][文件名]
-c 統(tǒng)計(jì)字節(jié)數(shù)
-w 統(tǒng)計(jì)單詞數(shù)
-l 統(tǒng)計(jì)行數(shù)
例:wc 隨意輸入
ctrl + d退出隨意輸入,統(tǒng)計(jì)行數(shù)嫌吠、單詞止潘、字節(jié)
wc < 文件名 通過wc統(tǒng)計(jì)文件中的字符,其中文件作為wc命令中所需要輸入的內(nèi)容
wc << hello 進(jìn)入隨意輸入狀態(tài)辫诅,知道再次碰到hello這個(gè)單詞時(shí)退出凭戴,統(tǒng)計(jì)兩個(gè)hello符號(hào)之間的內(nèi)容。其中hello可用任意符號(hào)代替
5炕矮、多命令順序執(zhí)行
; && ||
; 表示命令從左到右依次執(zhí)行么夫,不論前面的命令是否正確執(zhí)行,都繼續(xù)執(zhí)行下去
&&表示當(dāng)前面的命令正確執(zhí)行后肤视,再執(zhí)行后面的命令
|| 表示當(dāng)前面命令沒有正確執(zhí)行時(shí)档痪,才執(zhí)行后面的命令
例:命令 && echo yes || echo no 用來判斷一個(gè)命令是否正確執(zhí)行
6、管道符
命令1 | 命令2 命令1的正確輸出結(jié)果作為命令2的操作對象
grep [選項(xiàng)] "搜索內(nèi)容" 文件名
-i 忽略大小寫
-n 輸出行號(hào)
-v 反向查找
--colour=auto 搜索出的關(guān)鍵字用顏色顯示
例:netstat -an | grep "ESTABLISHED"
7邢滑、通配符
腐螟? 匹配一個(gè)字符
- 匹配0個(gè)字符或任意多個(gè)字符
[ ] 匹配中括號(hào)中,任意一個(gè)字符
8困后、bash中的特殊符號(hào)
‘ ‘ 單引號(hào)乐纸,在單引號(hào)中所有的特殊符號(hào),都沒有特殊含義
” “ 雙引號(hào)摇予,大多數(shù)特殊符號(hào)沒有特殊含義汽绢,除 $ ` \ ,這三個(gè)符號(hào)除外,表示”調(diào)用變量的值“ ”引用命令“ ”轉(zhuǎn)義符“
反引號(hào)侧戴,反引號(hào)括起來的內(nèi)容是系統(tǒng)命令宁昭,和 $() 功能一樣
$() 引用系統(tǒng)命令,括號(hào)內(nèi)部表示系統(tǒng)命令,先執(zhí)行括號(hào)內(nèi)的命令救鲤,再將執(zhí)行結(jié)果再賦給變量
在shell腳本中久窟,以#開頭的表示注釋
$ 調(diào)用變量的值
\ 轉(zhuǎn)義符,取消特殊符號(hào)的特殊做用本缠,變?yōu)槠胀ㄗ址敵?/p>
例:
name=ws
echo $name
echo '$name'
echo "$name"
abc=date
或 $(date)
echo $abc
echo $abc 取消 $ 的特殊含義斥扛,作為普通字符輸出