shell也是作業系統中的乙個軟體,它包在linux核心的外面,為使用者和核心之間的互動提供了乙個介面,系統中的命令用shell去解釋shell接受系統回應的輸出並顯示其到螢幕中
什麼是shell指令碼
指令碼是一種解釋型語言,用shell指令碼儲存執行動作,用指令碼判定命令的執行條件,用指令碼來實現動作的批量執行
3.
指令碼示例
yum install gcc -y #安裝gcc編譯器
vim hello.c #編輯c語言檔案
#includevoid main()
gcc hello.c #編譯
./a.out #執行c指令碼
vim /etc/vimrc 編輯主配置檔案
若將配置檔案中的資訊改為如下圖所示,則每次開啟乙個新的指令碼檔案就會自動生成上述資訊
(1)diff命令
diff命令是用來比較兩個檔案或目錄的不同
vim westos
hello
vim westos1
hello
123diff westos westos1 #比較兩個檔案的不同
diff -u westos westos1 > westos.path #建立補丁檔案
diff -r /linux /unix #比較兩個目錄的不同
比較兩個檔案的不同
建立補丁檔案
patch westos westos.path #打補丁
(3)cut命令
cut命令多用於字元擷取
cut -d #指定分割符
cut -f 1,7|1-7 #指定擷取的列
cut -c 1,4|1-4 #指定擷取的字元位置
(4)sort命令
多用於字元排序
sort -n #純數字排序
sort -r #倒序
sort -u #去掉重複數字
sort -o #輸出到指定檔案中
sort -t #指定分隔符
sort -k #指定要排序的列
對重複字元做相應的處理
uniq -u #顯示唯一的行
uniq -d #顯示重複的行
uniq -c #每行顯示一次並統計重複次數
(6)&&和||
&&用來執行條件成立後執行的命令
||來執行條件不成立後執行的命令
ping -c1 -w1 172.25.254.65 &> /dev/null && echo up #若可以ping通172.25.254.65 則顯示up
ping -c1 -w1 172.25.254.65 &> /dev/null || echo down #若不能ping通172.25.254.65 則顯示down
(7)test
test命令是shell環境中測試條件表示式的實用工具
test(選項)
-b《檔案》:如果檔案為乙個塊特殊檔案,則為真;
-c《檔案》:如果檔案為乙個字元特殊檔案,則為真;
-d《檔案》:如果檔案為乙個目錄,則為真;
-e《檔案》:如果檔案存在,則為真;
-f《檔案》:如果檔案為乙個普通檔案,則為真;
-g《檔案》:如果設定了檔案的sgid位,則為真;
-g《檔案》:如果檔案存在且歸該組所有,則為真;
-k《檔案》:如果設定了檔案的粘著位,則為真;
-o《檔案》:如果檔案存在並且歸該使用者所有,則為真;
-p《檔案》:如果檔案為乙個命名管道,則為真;
-r《檔案》:如果檔案可讀,則為真;
-s《檔案》:如果檔案的長度不為零,則為真;
-s《檔案》:如果檔案為乙個套接字特殊檔案,則為真;
-u《檔案》:如果設定了檔案的suid位,則為真;
-w《檔案》:如果檔案可寫,則為真;
-x《檔案》:如果檔案可執行,則為真。
判斷字串
test –n 字串 #字串的長度非零
test –z 字串 #字串的長度是否為零
test 字串1=字串2 #字串是否相等,若相等返回true
test 字串1!=字串2 #字串是否不等,若不等返回false
判斷整數
test 整數1 -eq 整數2 #整數相等
test 整數1 -ge 整數2 #整數1大於等於整數2
test 整數1 -gt 整數2 #整數1大於整數2
test 整數1 -le 整數2 #整數1小於等於整數2
test 整數1 -lt 整數2 #整數1小於整數2
test 整數1 -ne 整數2 #整數1不等於整數2
判斷檔案
test file1 –ef file2 兩個檔案是否為同乙個檔案,可用於硬連線。主要判斷兩個檔案是否指向同乙個inode。
test file1 –nt file2 判斷檔案1是否比檔案2新
test file1 –ot file2 判斷檔案1比是否檔案2舊
test –b file #檔案是否塊裝置檔案
test –c file #檔案並且是字元裝置檔案
test –d file #檔案並且是目錄
test –e file #檔案是否存在 (常用)
test –f file #檔案是否為正規檔案 (常用)
test –g file #檔案是否是設定了組id
test –g file #檔案屬於的有效組id
test –h file #檔案是否是乙個符號鏈結(同-l)
test –k file #檔案是否設定了sticky bit位
test –b file #檔案存在並且是塊裝置檔案
test –l file #檔案是否是乙個符號鏈結(同-h)
test –o file #檔案的屬於有效使用者id
test –p file #檔案是乙個命名管道
test –r file #檔案是否可讀
test –s file #檔案是否是非空白檔案
test –t fd #檔案描述符是在乙個終端開啟的
test –u file #檔案存在並且設定了它的set-user-id位
test –w file #檔案是否存在並可寫
test –x file #檔案屬否存在並可執行
(8)tr
tr命令可以對來自標準輸入的字元進行替換、壓縮和刪除。它可以將一組字元變成另一組字元,經常用來編寫優美的單行命令,作用很強大
vim test.sh
word=`echo $1 | tr 'a-z' 'a-z'`
[ "$word" = "hello" ] && ||
Linux下Shell指令碼
shell 指令碼 shell script 是一種為 shell 編寫的指令碼程式。從業界所說的 shell 通常都是指 shell 指令碼,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。由於習慣的原因,簡潔起見,本文出現的 shell程式設計 都是指 shell ...
LINUX下的shell指令碼 shell簡介篇
什麼是shell?1.shell是linux的一外殼,它包在linux核心的外面,為使用者和核心之間的互動提供了乙個介面 2.當使用者下達指令給作業系統的時候,實際上是把指令告訴shell,經過shell解釋,處理後讓核心做出相應的動作 3.系統的回應和輸出的資訊也由shell處理,然後顯示在使用者...
linux下的shell指令碼程式設計
程式語言分為兩種,一種是整個 進行編譯然後進行執行 另一種就是shell這種通過直譯器一行一行轉換為 linux常用的一些命令此處不再贅述 直接進入主題 我們來寫第乙個程式 hello world bin bash 上面的 告訴了直譯器採用bash直譯器來執行 echo hello world ec...