標籤:conf profile 存在 天前 else passwd lis 間隔 時鐘
1、Regex
1)^開始 *前一個字元重複0次以上
+ 1次以上
? 0次或者1次
. 一個任一字元(.*連用)
{m,n} m到n次
[0-9][a-z] 任一數字或字母
$結束字元
2)sed和awk命令
sed ‘匹配條件/執行的動作‘ /etc/passwd sed ‘s/old/new/g‘
awk -F: ‘{print $1}‘ /etc/passwd 1表示第一列,2表示第二列 -F:表示分隔字元為:
2、變數
1)環境變數 系統內容變數(/etc/profile) 使用者環境變數(/home/使用者名稱/.bash_profile)
set查看
2)位置變數 $0-9
$0 指令碼名稱
$1-9 位置參數
3)預定義變數
$! 後台啟動並執行最後一個進程的PID號
$? 程式退出的代表(0成功)
$* 所有參數的內容
$$ 當前進程的ID號碼
$# 當前shell的參數個數
[email protected] 所有參數內容(逐個讀取)
4)自訂變數
name=[value] ps:等號兩邊不能有空格,變數名對大小敏感
$變數名 取值
3、算術運算
+ - * / %
$((運算式))
$[運算式]
expr expression expr 5 + 2 變數間有空格
4、內建測試判斷
Test 測試運算式
[ 測試運算式 ] ps:測試運算式與[]間一定有空格
數值比較
-lt 小於 ex:test &a -lt &b echo $?
-gt 大於
-eq 等於
-ne 不等於
-le 小於等於
-ge 大於等於
字串測試
= 等於
!= 不等於
-z 字串 字串長度偽(為0)則真
-n 字串 字串長度不偽則真
檔案測試
-e 檔案名稱 檔案存在則真
-r 檔案名稱 檔案存在且可讀為真
-w 檔案名稱 可寫
-x 檔案名稱 可執行
-s 檔案名稱 檔案中至少存在一個字元
-d 檔案名稱 檔案存在且為目錄
-f 檔案名稱 檔案存在且為普通檔案
!(非)>>-a(與)>>-o(或)
5、命令間的邏輯符合
&& 邏輯與
cmd1 && cmd2 cmd1執行成功才執行cmd2
|| 邏輯或
cmd1 || cmd2 cmd1失敗了才執行cmd2
; 無邏輯關係
6、常用命令
date -s "2016-04-12 15:20:13" 修改系統時間
date ‘+Y%m%d‘ 按照年月日格式輸出系統時間
date -d ‘7 day ago‘ ‘+Y%m%d‘ 輸出7天前的時間
7、取字串
${變數名:offset:length} echo ${a%.*}
8、書寫規範
#!/bin/bash 聲明運行環境
運行方式 a.賦予許可權直接運行
b.通過運行環境運行 bash 1.sh sh 1.sh
c. . 1.sh source 1.sh
9、控制語句
1)for語句
a. for 變數 in 值1 值2...值N 變數依次取值1...值N
do
命令集合 {1..50} `seq 50` 取值1到50
done
b. for((初始設定變數;結束迴圈條件;變數運算))
2)while迴圈
a. while [ 條件 ] let i=i+1---i=$[i+1] i自增1
b. while read -r line
do
echo $line
done < /etc/passwd 從路徑中逐行讀取並賦值給line
3)if語句
if 條件
then
命令序列
elif 條件
then
命令序列
else
命令序列
fi
4)case語句
a. case $變數名稱 in
條件1)
命令序列
;;
條件2)
命令序列
;;
*) 以上都不滿足
esac
10、函數
a. name(){
命令序列
}
b. function name{
命令序列
}
11、計劃任務
1)一次性計劃任務
at 時間 ctrl+d結束輸入
at -l 列出當前計劃任務
2)周期性計劃任務 service crond start(status,restart)
a.開機自啟動
chkconfig --list 列出系統服務是否開機自啟動(3和5)
b.制定計劃任務內容
crontab -e(ENTER) >> 進入vi命令
時間和命令 分 時 日 月 周(沒有用*代替 -表示連續時間 ,表示若干不連續時間 /表示間隔時間) cmd命令 */10 * * * * ntpdate 時間伺服器IP 每10分鐘同步一次時鐘
c.重啟服務 service crond restart
Linux shell編程命令-Linux基礎環境命令學習筆記