awk命令
- 強大的文檔編輯工具,可以以行也可以以列來標記文檔
格式
awk 參數 ‘動作’ 文檔
常用參數
-F :指定行的分隔符
常用動作
- print :顯示內容
- $0,表示當前行的所有看列
- $n,表示當前行的第n列
示例:
模板文件 01_awk.txt
nihao awk1 awk2 awk3
nihao awk4 awk5 awk6
1.輸出第一列的內容
awk '{print $1}' 01_awk.txt
nihao
nihao
2.輸出第1,3兩列的內容
awk '{print $1,$3}' 01_awk.txt
nihao awk2
nihao awk5
3.輸出第1,3兩列的內容,並且顯示行號
awk '{print NR, $1, $3}' 01_awk.txt
1 nihao awk2
2 nihao awk5
4.輸出第一行的第一列和第三列內容
awk 'NR==1 {print $1, $3}' 01_awk.txt
nihao awk2
5.模板文件2:02_awk.txt
you said:lallala 111
i say:hehehe 222
輸出以‘:’分隔的第一列和第2列內容:
之前的語句:
awk '{print $1, $2} 02_awk.txt'
you said:lallala
i say:hehehe
會發現不符合要求,此時需要使用參數-F
awk -F ':' '{print $1,$2}' 02_awk.txt
you said lallala 111
i say hehehe 222
find命令
- 用來查找文件的命令
格式
find 路徑 選項 關鍵字
路徑
- 路徑可以使相對路徑,也可以是絕對路徑
選項
- -name :以文件名查找
- -type :以文件類型來找
- d:目錄
- f:普通文件
- p:管道文件
- l:符號鏈接文件
- perm 按照文件權限來查找文件。
- user 按照文件屬主來查找文件。
- group 按照文件所屬的組來查找文件。
關鍵字
- 使用 -name選項查找時,需要加引號,可以使用正則
實例
# 查找當前目錄下的所有 .txt文件
find ./ -name '*.txt'
# 查找桌面上的所有普通文件
find /Users/.../Desktop/ -type f
# 查找桌面上的所有普通文件中爲.py類型的文件
find /Users/.../Desktop/ -type f -name '*.py'
* 注意,查找爲遞歸查找
流程控制
分支
單分支if
格式
if [ 條件 ]
then
指令
fi
示例
#!/bin/bash
# 單if
if [ '$1' == 'nan' ]
then
echo "男"
fi
雙分支if
格式
if [ 條件 ]
then
指令1
else
指令2
fi
示例
#!/bin/bash
# 雙if
if [ "$1" == "nan" ]
then
echo "男"
else
echo "nv"
fi
多分支if
格式
if [ 條件1 ]
then
指令1
elif [ 條件2 ]
then
指令2
else
指令3
fi
示例
#!/bin/bash
if [ "$1" == "nan" ]
then
echo "男"
elif [ "$1" == "nv" ]
then
echo "女"
else
echo "性別不明"
fi
case
格式
case 變量名 in
值1)
指令1
;;
值2)
指令2
;;
...
值n)
指令n
;;
esac
示例
#!/bin/bash
# case 服務啓動腳本
case "$1" in
"start")
echo "服務啓動中..."
;;
"stop")
echo "服務關閉中..."
;;
"restart")
echo "服務重啓中..."
;;
*)
echo "腳本 $0 使用方式: /bin/bash $0 [ start|stop|restart ]"
;;
esac
循環
for
格式
for 值 in 列表
do
執行語句
down
示例
#!/bin/bash
# for 結構
# 輸出當前目錄下的所有文件名
for i in $(ls)
do
echo "當前目錄下有文件${i}"
done
while
格式
while [ 條件 ]
do
執行語句
done
示例
#!/bin/bash
# while語句的使用
# 輸出1,2,3,4四個數字
a=1
while [ "${a}" -lt 5 ]
do
echo "${a}"
a=$((a+1))
done
until
格式
until [ 條件 ]
do
執行語句
done
示例
#!/bin/bash
# 測試until的語法
# 輸出1,2,3,4四行數字
a=1
until [ "${a}" -eq 5 ]
do
echo "${a}"
let a=a+1
done
場景:
單if: 一條件 一結果 雙if: 一條件 兩結果
多if: n 條件 n+1結果 case: 生產服務用
for: 遍歷列表 while: 條件滿足,循環
until: 條件不滿足,循環
函數
簡單函數
函數的定義和調用
格式:
函數名(){
函數體
}
調用函數
函數名
示例:
#!/bin/bash
# 函數的定義和調用
# 輸出12345
fun(){
echo "12345"
}
函數傳參
函數名傳參
格式
函數名(){
函數體 $n
}
調用函數:
函數名 參數
示例
#!/bin/bash
# 測試函數傳參
# 給函數輸入’Michael‘ 並且輸出
fun1(){
echo "$1"
}
fun1 "Michael"
腳本傳參
格式
腳本傳參數
/bin/bash 腳本名 參數
函數體調用參數
函數名(){
函數體 $1
}
函數名 $1
示例
#!/bin/bash
# 測試腳本傳參
# 給腳本傳遞‘Michael’,輸出
fun2(){
echo $1
}
fun2 $1
注意此處函數內調用的依然是函數名傳給他的參數
測試,函數名傳遞的參數和腳本傳遞的不同即可
#!/bin/bash
# 測試腳本傳參
# 給腳本傳遞‘Michael’,輸出 jackson
fun2(){
echo $1
}
fun2 'jackson'
代碼發佈
什麼是代碼發佈
- 代碼,平臺,效果
- 是指將功能完善,測試完畢的代碼,上傳部署到在有公網ip的服務器上(可以是遠程虛擬主機,如阿里雲,騰訊雲,等各種雲),通過瀏覽器/移動端可以查看展示效果的過程
發佈方式
- 手動發佈
- 自動發佈,手工是自動發佈的前提
發佈的流程
- 1.獲取代碼
- 2.打包代碼
- 3.傳輸代碼
- 4.關閉服務
- 5.解壓代碼
- 6.放置代碼
- 7.啓動服務
- 8.測試效果
- 9.正式發佈代碼
流程詳解
1.獲取代碼
從哪裏獲取?
- 代碼倉庫獲取
- 代碼倉庫有集中式的SVN和分佈式的git
- svn的幾乎所有的操作命令都需要讓客戶機和主機保持網絡連接狀態
- git是每一臺客戶機都可以有完整的代碼倉庫,都可以充當主機,不要與所謂的主機保持鏈接
- 需要考慮倉庫的訪問權限和代碼的訪問權限(開發,管理,查看)
提交的方式
- 以版本號的形式提交
2.打包代碼
- 將所有的代碼統一打包,方便整體快速傳輸, 使用 tar命令
- 常見的打包方式:
- windows:zip, rar
- linux: tar, zip
3.傳輸代碼
- 將打包後的代碼傳到需要部署的服務器上
- 常見的傳輸方式
- 有網:scp, git, ftp
- 無網:U盤,硬盤
4.關閉應用
- 停止與發佈的相關代碼有關的服務,不能關閉網站
- 注意關閉應用要由近到遠,即先關閉離用戶最近的頁面,發出友好提示,再關閉後端的服務,這樣是考慮到用戶體驗,否則,用戶體驗會很糟糕。
5.解壓代碼
- 將傳遞過來的壓縮代碼包進行解壓處理
- 使用tar xf
6.放置代碼
- 將新的代碼替換舊的代碼
- 注意,爲了防止新代碼可能會有問題,導致該功能塊沒有優化好,反而不能像之前一樣正常運行,需要先進行備份舊代碼,再放置新代碼
- 使用rm -rf + data 時間戳進行備份
7.打開應用(相關服務)
- 只打開之前關閉的應用(相關服務)
- 注意打開的順序是先遠後近,因爲要讓用戶感覺在點點擊相關服務頁面的時候,就有反應,這就需要先把後端的相關服務開起來
8.測試
- 使用瀏覽器或者移動端進行各項功能性,穩定性測試
9.正式發佈代碼
- 宣佈正式發佈代碼
技術關鍵點
文件的壓縮和解壓縮
壓縮
tar zcvf 壓縮後的文件名 將要壓縮的文件
示例
tar zcvf ./scripts.tar.gz ./scripts
解壓縮
- tar xf 壓縮後的文件名
- 示例
tar xf scripts.tar.gz
- 查看壓縮文件的內容: zcat 壓縮文件(以二進制的形式查看)
zcat scripts.tar.gz
linux中可正常查看
文件的傳輸
- 格式:scp 要傳輸的文件 要放置的位置
- 1.推送:本地-遠端
scp scripts.tar.gz [email protected]:/home/
- 2.拉取:遠端-本地
scp [email protected]:/home/scripts.tar.gz ./
- 關鍵點:因爲scp的底層是SSH,所以遠端主機都需要用戶名@公網IP
文件備份
- 時間戳:date +%Y%m%d%H%M%S
- 備份命令 :
mv scripts.tar.gz scripts.tar.gz-$(date +%Y%m%d%H%M%S)
小結
- 代碼發佈:安全可靠的代碼部署到服務器上
- 代碼發佈的方式:手工+腳本
- 代碼發佈流程:
- 獲取代碼:權限
- 打包:tar
- 傳輸:scp
- 停止應用:先近後遠
- 解壓代碼: tar
- 放置代碼:備份 mv date時間按戳
- 開啓代碼:先遠後近