Shell入門01

Shell入門

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 ----大於

bash的基本特性

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}

dateclockhwclock

基於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:]]*$-----匹配空白行

相關文章
相關標籤/搜索