1.基於硬件的虛擬化python
2.基於平臺的虛擬化linux
3.基於服務的虛擬化git
4.基於庫的虛擬化正則表達式
5.基於操做系統的虛擬化算法
管理員使用Shell程序與操做系統進行交互,以前學習的shell腳本都是以單行命令來執行的,缺少邏輯關係,將單行的命令統一併創建邏輯關係的過程,就是shell腳本編程。shell
Sum _ = 0編程
For I in range(1,101):數組
Sum_ += ibash
Print(sum_)編程語言
--------------------------------------------------------------------
sum_= 0
for i in $(seq 100);do
…………..
done
輸出echo
格式化輸出 awk – printf
與其餘編程語言的區別:使用shell來實現linux的批量管理,而不是去開發應用程序
學習內容:shell(python、perl、)
Pip install ipython----交互式工具執行單行命令比較方便
1.bash的基本特性
python能夠經過調用庫來實現各類行業的需求
ctrl + l
上鍵
History
2.IO重定向與管道符---shell的功能特性 命令是一個可執行的二進制程序
Which ls
3.編程基礎
程序是什麼?----程序是執行以某個功能的代碼,而算法是程序中的其中一種。
#/!bin/bash ------制定解釋器
Path路徑來執行shell ./aa.txt
變量:是指一段命名的內存空間
數據有變量來提供
指令---命令
程序必須包含 指令 + 數據 + (邏輯關係)
編程原理----面向對象()和麪向過程
4.!!!!!!!!!!!!!!!!grep和正則表達式!!!!!!!!!!!!!
Linux三劍客 **grep過濾(行)
Pattern「模式」
5.語句的邏輯關係
分支
if
循環
for 工做中經常使用—不容易進入死循環 放入for循環的列表
while 指定初始值,循環條件爲True 不要進入死循環
until 與while相反 循環條件爲False不要進入死循環
case------**編寫linux的程序啓動腳本**
打斷循環的語句
break 跳出循環
continue跳出當前循環
exit 退出當前程序,指定程序的返回值
echo $? 命令執行狀況
read –--input()
echo---print()
unix bsd
6.**變量**
network:宣告路由,讓路由器發送helllo包,攜帶路由信息,組播
Linux三劍客
**sed---編輯器 stream edit d。。 流編輯器
數據存儲在磁盤裏就是「流」
換行 輸出數據時手動添加/n,計算機識別後展現
流設備基於流編輯器。。。
兩種模式的切換
**awk 報告生成器-----一個獨立的編程語言
函數 ----- 一段固定功能的代碼塊
數組 ---- 列表、元組、字典
字符串----- 字符串的處理太複雜 方法多
重複:必須連續且相同的數據 先排序再去重(Sort 去重)
練習:
line = `wc –l /etc/inittab | cat –d’ ’ –f1 ` 查看行數
echo $line
cat –n /etc/inittab
if test $line -gt 100 ;then if [ $line -gt 100 ];then
echo 「 /etc/inittab is a big file 」 echo 「 /etc/inittab is a big file 」
else else
echo 「/etc/inittab is a small file」 echo 「/etc/inittab is a small file」
fi fi
test 至關於一個[] test $line –gt 100 ==[$line –gt 100]
-gt ----大於
linux的時間:系統時鐘和硬件時鐘
系統時間—date
硬件時間---clock hwclock
1.命令歷史 根----加載驅動
做用:查看以前使用的命令
關於命令歷史的文件------每一個用戶家目錄下面的.bash_history
在關機的時候,會自動寫入一次
history是內置命令 history –r 將內存中的命令歷史寫入文件
useradd xls –l
echo 「123456」 | passwd –stdin(標準輸入) 「xls -l」
cd /home/xls-l
ls
ls -a
關於命令歷史的變量(環境變量) path只是環境變量的一種 chroot 切換文件根目錄
Env //查看環境變量
Set //查看更加詳細的環境變量參數
HISTSIZE = 1000 總量是1000條歷史命令。超過1000刪除重存
HISTCONTROL = ignoredups/ignorespace/ignoreboth
Set|grep「HIST」
History的常見操做
查看命令歷史
!+編號----!#---執行#號行的命令(#表示數值)
!+string----匹配最近一次的字符串
!!-------上一條命令
*!$*------- 上一條命令的最後一個參數
ls /etc == ls !$
ESC+.---上一條命令的最後一個參數
常見的選項:
-a 追加歷史行到歷史文件
-d 刪除
-c 清空
History # 顯示最近#行的命令
2.命令補全
Tab :擴展:製表符 \t 四個空格鍵
1.提示2.自動補全
3.目錄補全
Tab 1.提示2.自動補全
4.命令展開—date命令
{}
Linux的目錄遵循的規則------FHS(文件系統層次化標準)目錄規則
Mkdir –pv mylinux{bin,boot/grub,dev,etc{/rc.d/init.d,sysconfig/network-scripts},lib/modules,lib64,proc,sbin,sys}
屬性一 屬性二
A 1
B 2
Mkdir –pv /var/{a,b}-{1,2}
date、clock、hwclock
基於date命令來建立目錄文件
date +%F---改變date輸出的格式 –日期格式 年-月-日 CCYY-mm-dd
date+%F-%H-%M-%S
%H---小時 hh
%M---分鐘 MM
%S---秒 ss
%T---hh:MM:ss
%D---mm/dd/CCYY(月/日/年)
%Y---顯示年份CCYY %y
練習:
經過for語句循環建立一個月的日誌文件;.log 2019-08-06.log
Crontab –e * * * * *(分、時、日、月、星期)
touch `date +%F`.http.log
for i in {1..30};do
touch `date +%Y-%m-$i`.http.log
done
for i in {1..30};do touch `date +%Y-%m-$i`.http.log; done --- 一行執行
tar
歸檔命令 壓縮解壓縮
壓縮工具 gzip、bzip、xz、zcat(不解壓查看壓縮文件)
文本文件壓縮效果較好,壓縮只能對文件進行操做,不能對目錄進行操做
Tar的常見參數:
歸檔工具
-j bzip2
-J xz
-z gzip
-c create(壓縮)
-x extract (解壓)//能夠不用指定解壓的工具
-f 指定文件名
-v 顯示詳細信息 verbose
-t 不解壓查看內容和zcat同樣
Tar歸檔工具能夠對目錄進行操做
gzip /etc/inittab
壓縮 tar cjvf 2019-08.http.log.bz2 2019-08-*.http.log
解壓 tar xvf 2019-08.http.log.bz2 –C abc
解壓能夠不選擇解壓方式
.*---正則表達式 *---不是正則表達式
crontab –e * * * * *(分、時、日、月、星期) 寫全路徑 除/之外的符號均可以看成文件名
20 02 * * * /root/xxx.sh
編寫xxx.sh腳本文件
Vim xxx.sh
#!/bin/bash
#
tar cJvf /var/`date +%F` .xz /etc/
chmod +x xxx.sh
補充:
clock、hwclock ---- 查看硬件時鐘(如何同步系統時鐘和硬件時鐘,以哪個爲準)
cal 日曆 cal 1997
5.命令的執行狀態
在linux中,每一條命令執行後都會有兩個結果:
命令自己放回的內容
其次,命令執行的結果狀態
$? 變量,就是用來存放命令執行狀態的變量;
0 表示成功的狀態(與python相反)
1-255 表示失敗的狀態
[$? –eq 0] && exit 0|| exit 1
在程序執行中,咱們可使用exit來手動制定返回的狀態碼
6.命令的快捷鍵
Ctrl + l //清屏
Ctrl + c
Ctrl + u //刪除光標前的字符
Ctrl + k //刪除光標後的字符
Ctrl + a //光標頭
Ctrl + e //光標尾
Ctrl + e
Ctrl + w //以空格爲分隔符,去刪除文件
Ctrl + r //搜索命令(進入交互式界面,搜索最近一次使用的命令要輸入字符串)
7.alias別名
系統啓動時讀取一些特殊文件的順序;
alias 文件別名
alias cdnet=」cd /etc/sysconfig/network-scripts」 //這種方式定義的alias只能在當前shell使用
pstree
若是想要別名全部人均可以使用,寫入下面兩個文件中
/etc/profile
/etc/bashrc
若是想要別名本身使用,寫入下面兩個文件中
~ /.bash_profile
~/.bashrc
PEP代碼標準
8.文件通配符
**文件通配符不是正則表達式**
? 任意單個字符
* 任意長度的任意字符
[] 指定範圍內的任意字符
^ 1.以什麼開頭
2.[^]指定範圍之外的任意一個字符
[^0-9A-Za-z] [0-9] [A-Z] [a-zA-Z]
指定字符類:
1.[:alnum]----- [^0-9A-Za-z]字母+數字
2.[:upper:]-----字母大小寫
3.[:digit:]-------數字
4.[:punct:]-----特殊字符
5.[:space:]-----空格 ^*[[:space:]]*$-----匹配空白行