日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

马哥linux2020博客,马哥linux学习(bash shell学习)

發(fā)布時(shí)間:2025/3/21 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 马哥linux2020博客,马哥linux学习(bash shell学习) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Shell原理

在操作系統(tǒng)中,最底層是硬件,而硬件上面是內(nèi)核(kemel),內(nèi)核上面是庫,庫上面是應(yīng)用程序,在眾多的應(yīng)用程序當(dāng)中,有一個(gè)shell的應(yīng)用程序,俗稱外殼,用戶是無法直接和內(nèi)核交互的,那么就必須借助shell來實(shí)現(xiàn)系統(tǒng)的調(diào)用。圖:

shell是工作在操作系統(tǒng)的最外層,而內(nèi)核(kernel)則是工作在操作系統(tǒng)的最里層,由于內(nèi)核聽不懂人類語言,而我們也記不住內(nèi)核語言,而兩者的溝通就需要shell的支持了。

2、Bash:編程

程序控制結(jié)構(gòu),調(diào)用機(jī)器上命令程序文件進(jìn)行程序編寫;

外部命令:各應(yīng)用程序提供;

程序:指令+數(shù)據(jù)

算法+數(shù)據(jù)結(jié)構(gòu)

過程式編程:以指令為中心,設(shè)計(jì)算法,數(shù)據(jù)服務(wù)于算法;

對(duì)象式編程:以數(shù)據(jù)為中心,設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)(類),程序服務(wù)于數(shù)據(jù)結(jié)構(gòu);

bash過程式編程:

順序執(zhí)行:逐個(gè)執(zhí)行

選擇執(zhí)行:只執(zhí)行其中一個(gè)分支

循環(huán)執(zhí)行:一段代碼要執(zhí)行0,1或多遍

編程元素:變量、流程、函數(shù)

變量:可變化的量,命名內(nèi)存空間

bash環(huán)境:

本地變量:當(dāng)前shell進(jìn)程;

環(huán)境變量:當(dāng)前shell進(jìn)程及其子進(jìn)程;

局部變量:某個(gè)函數(shù)執(zhí)行過程;

位置參數(shù)變量:在腳本中引用傳遞給腳本的參數(shù);在函數(shù)中引用傳遞給函數(shù)的參數(shù);

特殊變量:$?, $*, $@, $#, $$

變量類型:

數(shù)值,字符;

數(shù)值:

整數(shù)

浮點(diǎn)數(shù)

字符:

ASCII

120:

字符:1, 2, 0

數(shù)值:120 -->

變量類型的作用:

存儲(chǔ)空間

運(yùn)算

存儲(chǔ)格式

語言對(duì)變量類型的支持力度:

強(qiáng)類型:

弱類型:變量類型不嚴(yán)格區(qū)分;

默認(rèn)存儲(chǔ)機(jī)制:bash為字符

bash的變量使用特點(diǎn):弱類型、無須事先聲明;

本地變量:

name=value

name: 變量名

=:賦值符號(hào)

value:值

變量名:只能包含數(shù)字、字母和下劃線;且不能以數(shù)字開頭;

引用變量:${name}, $name

引用:

弱引用: "", 其內(nèi)部的變量引用會(huì)被替換為變量值;

強(qiáng)引用:'',其變量的變量引用會(huì)保持原有字符;

命令引用:`COMMAND`, $(COMMAND),引用命令的執(zhí)行結(jié)果;

聲明為整型:

declare -i name[=value]

let name=value

查看所有變量:set

生命周期:

創(chuàng)建

銷毀:

自動(dòng)銷毀:shell進(jìn)程終止;

手動(dòng)銷毀:unset name

環(huán)境變量:

被"導(dǎo)出"的本地變量

export name[=value]

declare -x name[=value]

查看所有環(huán)境變量:env, printenv, export

銷毀:

unset name

腳本:文本文件

運(yùn)行腳本:事實(shí)上是運(yùn)行一個(gè)bash進(jìn)程,此進(jìn)程負(fù)責(zé)從腳本文件中讀取一個(gè)執(zhí)行邏輯,而后由bash進(jìn)程負(fù)責(zé)解析并運(yùn)行此邏輯;

啟動(dòng)腳本:

(1) # bash /PATH/TO/SCRIPT_FILE

(2) 一個(gè)執(zhí)行權(quán)限,

# ./PATH/TO/SCRIPT_FILE

shebang:

#!/bin/bash

第一行:頂格給出shebang

注釋行:#

bash的常用選項(xiàng):

-n: 檢查腳本中的語法錯(cuò)誤;

-x:調(diào)試執(zhí)行腳本;

命令狀態(tài)結(jié)果:

bash進(jìn)程用于追蹤執(zhí)行的命令成功與否的狀態(tài):

0: 成功

1-255:失敗

特殊變量:

$?:上一條命令的執(zhí)行狀態(tài)結(jié)果;

布爾型:

"真":成功

"假":失敗

自定義腳本的狀態(tài)結(jié)果:

exit [n]

注意:腳本中任何位置執(zhí)行了exit命令即會(huì)終止當(dāng)前shell進(jìn)程;

條件測試:

界定程序執(zhí)行環(huán)境;

(1) 根據(jù)運(yùn)行的命令的狀態(tài)結(jié)果;

(2) 測試表達(dá)式

test EXPRESSION

[ EXPRESSION ]

[[ EXPRESSION ]]

整數(shù)測試:隱含著做數(shù)值大小比較,所以不要給變量引用加引用;

$A -gt $B:是否大于;是則為"真",否則為"假";

$A -ge $B: 是否大于等于;

$A -lt $B:是否小于;

$A -le $B: 是否小于等于;

$A -eq $B: 是否等于;

$A -ne $B:是否不等于;

字符串測試:ASCII數(shù)值越大,字符比較時(shí)其值越大;

"$A" > "$B":是否大于;

"$A" < "$B":是否小于;

"$A" == "$B":是否等于;

"$A" != "$B":是否不等于;

-z "$A":是否為空;空則為"真",否則為"假"

-n "$A":是否不空;不空則"真",空則為"假"

注意:應(yīng)該使用[[ EXPRESSION ]]

文件測試:測試文件的存在性以及屬性;

-e $file: 是否存在;存在則為"真",否則為"假";

-a $file: 同上;

-f $file:文件是否存在且為普通文件;

-d $file:文件是否存在且為目錄;

-h $file:是否存在且為符號(hào)鏈接文件;

-L $file: 同上

-b $file:是否存在且為塊設(shè)備文件;

-c $file:是否存在且為字符設(shè)備文件;

-S $file:是否存在且為套接字文件;

-p $file: 是否存在且為管道文件;

-r $file: 當(dāng)前用戶對(duì)文件是否擁有讀權(quán)限;

-w $file:當(dāng)前用戶對(duì)文件是否擁有寫權(quán)限;

-x $file:當(dāng)前用戶對(duì)文件是否擁有執(zhí)行權(quán)限;

-u $file:文件是否擁有SUID權(quán)限;

-g $file:文件是否擁有SGID權(quán)限;

-k $file

總結(jié)

以上是生活随笔為你收集整理的马哥linux2020博客,马哥linux学习(bash shell学习)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。