一、什么是Shell?
shell是外殼的意思,就是操作系統的外殼。我們可以通過shell命令來操作和控制操作系統,比如Linux中的Shell命令就包括ls、cd、pwd等等。總結來說,Shell是一個命令解釋器,它通過接受用戶輸入的Shell命令來啟動、暫停、停止程序的運行或對計算機進行控制。
二、什么是腳本?
腳本就是由Shell命令組成的文件,這些命令都是可執行程序的名字,腳本不用編譯即可運行。它通過解釋器解釋運行,所以速度相對來說比較慢。
三、Linux中有哪些腳本解釋器?
有dash和bash兩種,但dash沒有bash功能全面,所以通常使用bash。
可以通過命令來查看系統中的腳本解釋器: ls -l /bin/*sh
注意:執行之前首先要為腳本文件添加可執行權限,不然就得用root權限才能執行!
添加可執行權限: chmod +x name.sh 回車
四、shell腳本的執行方式
1) ./name.sh 這種方式腳本第一行一定要加#!/bin/bash
2) /bin/bash name.sh
3) bash name.sh
4) sh name.sh
在編譯的時候用空格分割 依次傳入參數 ./name.sh 1234 abcd 參數1 參數2
shell 腳本 常用參數
#!/bin/sh # 在腳本第一行腳本頭 # sh為當前系統默認shell,可指定為bash等shell sh -x # 執行過程 sh -n # 檢查語法 (a=bbk) # 括號創建子shell運行 basename /a/b/c # 從全路徑中保留最后一層文件名或目錄 dirname # 取路徑 $RANDOM # 隨機數 $$ # 進程號 source FileName # 在當前bash環境下讀取並執行FileName中的命令 # 等同 . FileName sleep 5 # 間隔睡眠5秒 trap # 在接收到信號后將要采取的行動 trap "" 2 3 # 禁止ctrl+c $PWD # 當前目錄 $HOME # 家目錄 $OLDPWD # 之前一個目錄的路徑 cd - # 返回上一個目錄路徑 local ret # 局部變量 yes # 重復打印 yes |rm -i * # 自動回答y或者其他 ls -p /home # 區分目錄和文件夾 ls -d /home/ # 查看匹配完整路徑 time a.sh # 測試程序執行時間 echo -n aa;echo bb # 不換行執行下一句話 將字符串原樣輸出 echo -e "s\tss\n\n\n" # 使轉義生效 echo $a | cut -c2-6 # 取字符串中字元 echo {a,b,c}{a,b,c}{a,b,c} # 排列組合(括號內一個元素分別和其他括號內元素組合) echo $((2#11010)) # 二進制轉10進制 echo aaa | tee file # 打印同時寫入文件 默認覆蓋 -a追加 echo {1..10} # 打印10個字符 printf '%10s\n'|tr " " a # 打印10個字符 pwd | awk -F/ '{ print $2 }' # 返回目錄名 tac file |sed 1,3d|tac # 倒置讀取文件 # 刪除最后3行 tail -3 file # 取最后3行 outtmp=/tmp/$$`date +%s%N`.outtmp # 臨時文件定義 :(){ :|:& };: # 著名的 fork炸彈,系統執行海量的進程,直到系統僵死 echo -e "\e[32m顏色\e[0m" # 打印顏色 echo -e "\033[32m顏色\033[m" # 打印顏色 echo -e "\033[0;31mL\033[0;32mO\033[0;33mV\033[0;34mE\t\033[0;35mY\033[0;36mO\033[0;32mU\e[m" # 打印顏色
if語句的使用
一、比較數字的大小----雙括號
二、判斷目錄是否存在 -d
三、判斷文件是否存在
四、多個if判斷
邏輯運算符解析:
邏輯運算符解析: -f 判斷文件是否存在 eg: if [ -f filename ] -d 判斷目錄是否存在 eg: if [ -d dir ] -eq 等於 應用於:整型比較 -ne 不等於 應用於:整型比較 -lt 小於 應用於:整型比較 -gt 大於 應用於:整型比較 -le 小於或等於 應用於:整型比較 -ge 大於或等於 應用於:整型比較 -a 雙方都成立(and) 邏輯表達式 –a 邏輯表達式 -o 單方成立(or) 邏輯表達式 –o 邏輯表達式 -z 空字符串