linux下的shell指令碼

2021-08-20 17:49:29 字數 4792 閱讀 6894

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...