国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

這篇具有很好參考價(jià)值的文章主要介紹了【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Shell程序分類

Shell程序有很多, 如Korn shell(ksh)、Bourne Again shell(bash)、C shell(包括csh與tcsh)等等,
各主要操作系統(tǒng)下缺省的shell:

  • AIX下是Korn Shell
  • Solaris缺省的是Bourne shell
  • FreeBSD缺省的是C shell
  • HP-UX缺省的是POSIX shell
  • Linux缺省的是Bourne Again shell

1、系統(tǒng)中sh命令是bash的軟鏈接

sh=bash
file /usr/bin/sh
sh --version
/usr/bin/bash --version

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

 whereis sh

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
但這種在命令行中的命令是即時(shí)輸出結(jié)果的,不能重復(fù)使用(重復(fù)輸入可以重復(fù)使用,但如果是要多行輸入的命令則極不方便),要想方便重復(fù)使用同一個(gè)功能就把多行的命令放到一個(gè)標(biāo)準(zhǔn)格式的文件中,這就是shell編程了。
所以所謂shell編程就是一行或多行不同功能的shell命令的集合!這個(gè)shell命令集合的文件叫shell script(shell腳本)。

2、Shell腳本標(biāo)準(zhǔn)格式之文件后綴

Shell腳本文件一般是以.sh為后綴,如下圖顯示的文件fin是系統(tǒng)上默認(rèn)存在的shell腳本文件

find /-name *.sh

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

3、Shell腳本標(biāo)準(zhǔn)格式之文件內(nèi)容首行

首行通常是#!/bin/sh#!/bin/bash#!/usr/bin/sh或#!/usr/bin/bash開(kāi)頭(或者你還會(huì)看到其它的路徑,或者全部有之)。該行的意思是,它告訴系統(tǒng)這個(gè)腳本需要什么解釋器(即是什么shell,本系統(tǒng)是bash)來(lái)執(zhí)行。
【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
從第二行開(kāi)始,凡是以#開(kāi)頭的行,說(shuō)明該行均不會(huì)被執(zhí)行,多用來(lái)作注釋、說(shuō)明。

注意:是以行為單位的。

到不是#開(kāi)頭的行開(kāi)始,才是有效的命令、代碼。
因篇幅原因,本截圖省了后面很多內(nèi)容,請(qǐng)自行在系統(tǒng)上查看該文件完整內(nèi)容。

4、Shell腳本的運(yùn)行方法

一、作為可執(zhí)行程序

#!/bin/sh
ip addr | grep -v 127.0.0.1 | grep -v inet6 | grep inet | awk '{print $2}' | cut -d / -f 1
解釋

這段Shell腳本的作用是獲取本機(jī)的IPv4地址,并將其輸出。

讓我來(lái)一步一步解釋這段腳本的具體內(nèi)容:

  1. #!/bin/sh:這是一個(gè)shebang(也稱為hashbang),用于指定腳本使用哪個(gè)解釋器來(lái)執(zhí)行。在這里,#!/bin/sh表示腳本將使用默認(rèn)的shell解釋器來(lái)執(zhí)行,通常是Bash或類似的shell。

  2. ip addr:這個(gè)命令用于獲取關(guān)于網(wǎng)絡(luò)接口的信息,包括IP地址和其他網(wǎng)絡(luò)配置。

  3. grep -v 127.0.0.1:這個(gè)命令用于過(guò)濾掉IP地址中包含 127.0.0.1 的行,即過(guò)濾掉環(huán)回地址。

  4. grep -v inet6:這個(gè)命令用于過(guò)濾掉IP地址中包含 inet6 的行,即過(guò)濾掉IPv6地址。

  5. grep inet:這個(gè)命令用于篩選出包含 inet(IPv4地址)的行。

  6. awk '{print $2}':這個(gè)命令使用awk來(lái)提取每一行的第二個(gè)字段(IPv4地址),并進(jìn)行打印輸出。

  7. cut -d / -f 1:這個(gè)命令使用cut來(lái)根據(jù) / 進(jìn)行分隔,提取分隔后的第一個(gè)字段(IPv4地址的主機(jī)部分),并進(jìn)行打印輸出。

綜合起來(lái),這個(gè)腳本的作用是獲取本機(jī)的IPv4地址(除了本地回環(huán)地址和IPv6地址),并將其輸出。

請(qǐng)注意,這段腳本在Linux環(huán)境下執(zhí)行,可能需要確保你的系統(tǒng)中已經(jīng)安裝了所需的命令(如ip、grep、awk、cut)。

將上面內(nèi)容保存了/root目錄下的showip.sh文件中,并cd到/root目錄下。

chmod +x ./showip.sh  	#使腳本具有執(zhí)行權(quán)限
./showip.sh 		 #執(zhí)行腳本

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

二、作為解釋器(bash)參數(shù)

本系統(tǒng)的解釋器(shell)是bash,而我們知道sh是bash的軟連接(類似于windows下的快捷方式),則最常用的方法就是“sh 腳本文件名”。
【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

  • 后面兩種,只是故意演示出來(lái)而已。請(qǐng)使用上面的方法。理由是:輸入少因而效率高。
  • 我們知道sh是命令,而命令后面跟的就叫該命令參數(shù)。所以本方法叫“作為解釋器的參數(shù)”運(yùn)行腳本。
  • 而該方法運(yùn)行腳本,會(huì)無(wú)視腳本內(nèi)的首行(即首行寫(xiě)與不寫(xiě)都沒(méi)關(guān)系)。為什么?! 因?yàn)橹苯诱{(diào)用了解釋器!

5、find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk的常用命令

當(dāng)涉及到文本處理和數(shù)據(jù)操作時(shí),下面是一些find、grep、xargs、sort、uniq、tr、cut、paste、wc、sedawk的常用命令:

1. find:用于在文件系統(tǒng)中搜索文件或目錄。

  • find /path/to/directory -name "filename":按照文件名在指定目錄下搜索文件。
  • find /path/to/directory -type f:找出指定目錄下的所有文件。
  • find /path/to/directory -type d:找出指定目錄下的所有目錄。

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

2. grep:用于在文件或輸入中查找特定模式。

  • grep "pattern" file.txt:在文件中搜索包含指定模式的行。
  • cat file.txt | grep "pattern":在輸入流中搜索包含指定模式的行。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

3. xargs:用于從標(biāo)準(zhǔn)輸入中讀取參數(shù)并將其傳遞給其他命令。

  • find /path/to/directory -name "*.txt" | xargs rm:找到所有以 .txt 結(jié)尾的文件并刪除它們。

  • find /path/to/directory -name "*.txt" | xargs cat:找到所有以 .txt 結(jié)尾的文件并查看它們。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

4. sort:用于對(duì)文本進(jìn)行排序。

  • sort file.txt:對(duì)文件中的行按字母順序進(jìn)行排序。

  • sort -n file.txt:對(duì)文件中的行按數(shù)值大小進(jìn)行排序。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

5. uniq:用于從排序后的輸入中篩選出唯一的行。

  • sort file.txt | uniq:對(duì)文件中的行排序并消除重復(fù)行。

  • sort file.txt | uniq -c:計(jì)算每個(gè)唯一行的出現(xiàn)次數(shù)。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

6. tr:用于字符替換和刪除。

  • cat file.txt | tr 'a' 'b':將輸入中的所有字母 ‘a(chǎn)’ 替換為 ‘b’。
  • cat file.txt | tr -d 'a':刪除輸入中的所有字母 ‘a(chǎn)’。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

7. cut:用于從文本中提取指定字段。

  • cut -d ',' -f 1,3 file.csv:以逗號(hào)為分隔符,提取CSV文件中的第1和第3個(gè)字段。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

8. paste:用于將多個(gè)文件的內(nèi)容合并為一行。

  • paste file1.txt file2.txt:將兩個(gè)文件的內(nèi)容并排合并。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

9. wc:用于計(jì)算文件或文本的行數(shù)、字?jǐn)?shù)和字符數(shù)。

  • wc -l file.txt:計(jì)算文件中的行數(shù)。
  • echo "Hello, World!" | wc -w:計(jì)算輸入內(nèi)容的字?jǐn)?shù)。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

10. sed:用于流式文本編輯。

  • sed 's/pattern/replacement/g' file.txt:將文件中的所有匹配 pattern 的內(nèi)容替換為 replacement
  • sed '/pattern/d' file.txt:從文件中刪除包含 pattern 的行。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

11. awk:用于處理結(jié)構(gòu)化文本數(shù)據(jù)。

  • awk '{print $1}' file.txt:打印文件中每一行的第一個(gè)字段。
  • awk -F ',' '{print NF}' file.csv:計(jì)算文件中每一行的字段數(shù)。
    【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)

以上只是這些命令中的一些常見(jiàn)用法示例,它們具有更多強(qiáng)大和靈活的功能。你可以查閱命令的文檔或在終端上運(yùn)行 man <command> 來(lái)了解更多詳細(xì)的用法和選項(xiàng)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-514263.html

到了這里,關(guān)于【運(yùn)維工程師學(xué)習(xí)三】Linux中Shell腳本編寫(xiě)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Linux運(yùn)維工程師面試題(9)

    目錄 Linux運(yùn)維工程師面試題(9) 1 pod 的生命周期 2 探針類型 3 探針?lè)绞?4 探針結(jié)果 5 Pod 重啟策略 6 鏡像獲取策略 7 k8s 的服務(wù)類型 8 k8s中 service 和 ingress 的區(qū)別 9 有狀態(tài)和無(wú)狀態(tài)服務(wù)的區(qū)別 10 k8s 中 service 是做什么的? 祝各位小伙伴們?cè)缛照业阶约盒膬x的工作。 持續(xù)學(xué)習(xí)才

    2024年02月09日
    瀏覽(20)
  • Linux運(yùn)維工程師面試題(4)

    目錄 Linux運(yùn)維工程師面試題(4) 1 redis 常用的數(shù)據(jù)類型 2 redis 數(shù)據(jù)持久化有幾種,區(qū)別是什么,如何選擇 3 redis 有哪些架構(gòu)模式 4 什么是緩存雪崩?如何解決? 5 什么是緩存穿透?如何解決? 6 什么是緩存擊穿?如何解決? 7 redis 為什么這么快 8 Redis 常用命令 9 SQL 語(yǔ)句分類

    2024年02月11日
    瀏覽(25)
  • Linux運(yùn)維工程師面試題(6)

    目錄 Linux運(yùn)維工程師面試題(6) 1 數(shù)據(jù)庫(kù)事務(wù)的四個(gè)特性及含義 2 mysql 的 sql 語(yǔ)句怎么優(yōu)化 3 varchar 與 char 的區(qū)別是什么?大小限制?utf8 字符集下 varchar 最多能存多少個(gè)字符? 4 索引有什么用? 5 sql 注入是怎么產(chǎn)生的,如何防止? 6 csrf 是什么?如何防范? 7 如何加強(qiáng) MySQ

    2024年02月10日
    瀏覽(19)
  • Linux運(yùn)維工程師面試題(2)

    Linux運(yùn)維工程師面試題(2)

    目錄 Linux運(yùn)維工程師面試題(2) 1 訪問(wèn)一個(gè)網(wǎng)站的流程 2 TCP 三次握手,四次揮手 3 apache 和 nginx 有哪幾種虛擬主機(jī) 4 TCP 和 UDP 的區(qū)別 5 nginx 和 apache 的區(qū)別 6 什么是反向代理,什么是正向代理,區(qū)別是什么? 7 cookie和session的區(qū)別 8 nginx 調(diào)優(yōu) 9 系統(tǒng)出現(xiàn)大量的 time_wait 問(wèn)題怎么

    2024年02月11日
    瀏覽(20)
  • Linux運(yùn)維工程師面試題(7)

    目錄 Linux運(yùn)維工程師面試題(7) 1 常用的 ansible 模塊有哪些 2 說(shuō)一下 ansible 使用 roles 編排的目錄結(jié)構(gòu) 3 docker 六大命名空間 namespace 4 cgroups 的作用 5 runc 的作用 6 docker 常用的命令 7 docker 存儲(chǔ)引擎有哪些,區(qū)別是什么 8 進(jìn)入 docker 容器有幾種方法,區(qū)別是什么 9 Dockerfile 常用指

    2024年02月10日
    瀏覽(24)
  • Linux運(yùn)維工程師面試題(1)

    Linux運(yùn)維工程師面試題(1)

    目錄 Linux運(yùn)維工程師面試題(1) 1 別名、內(nèi)部命令、外部命令的執(zhí)行順序 2 linux 系統(tǒng)啟動(dòng)流程 3 破解用戶密碼的方法 4 忘記 grub 密碼怎么解決 5 硬盤(pán)空間滿了怎么處理,怎么找到硬盤(pán)中的大文件 6 硬盤(pán)明明有很多空間,為什么無(wú)法存儲(chǔ)文件 7 進(jìn)程使用內(nèi)存問(wèn)題 7.1 內(nèi)存泄露:

    2024年02月11日
    瀏覽(25)
  • 【運(yùn)維工程師學(xué)習(xí)】Debian安裝

    【運(yùn)維工程師學(xué)習(xí)】Debian安裝

    選擇鏡像文件 進(jìn)入安裝選擇界面 graphical install 圖形安裝 Install 安裝系統(tǒng) advanced options 高級(jí)選項(xiàng) Help 幫助 accessible dark contrast installer menu 無(wú)障礙暗色對(duì)比度安裝程序菜單 (旨在為視力有障礙的用戶提供更好的可訪問(wèn)性,提供了: 高對(duì)比度主題、大字體選項(xiàng)、屏幕閱讀器支持) In

    2024年02月12日
    瀏覽(20)
  • 【運(yùn)維工程師學(xué)習(xí)二】OS系統(tǒng)管理

    【運(yùn)維工程師學(xué)習(xí)二】OS系統(tǒng)管理

    操作系統(tǒng)管理著所有的硬件資源,負(fù)責(zé)響應(yīng)各個(gè)應(yīng)用的資源請(qǐng)求。應(yīng)用還沒(méi)有運(yùn)行的時(shí)候就只是一堆各種各樣的文件( 二進(jìn)制文件、文本文件 等等),運(yùn)行的時(shí)候,相對(duì)系統(tǒng)而言就是進(jìn)程。比如你啟動(dòng) apache (linux下知名的web服務(wù)端),在系統(tǒng)中就啟動(dòng)了一個(gè)(或多個(gè),假如

    2024年02月11日
    瀏覽(21)
  • 運(yùn)維工程師第一階段windows的學(xué)習(xí)

    計(jì)算機(jī)歷史 1946-1956 電子管時(shí)代 美國(guó)兵夕法尼亞大學(xué) 5000次/s 1956-1964 晶體管時(shí)代 幾十萬(wàn)次 1964-1972 集成電路時(shí)代 幾百萬(wàn)到幾千萬(wàn) 1972-至今 大規(guī)模和超大規(guī)模集成電路 幾億次到幾百萬(wàn)億次 計(jì)算機(jī)硬件組成 分為內(nèi)設(shè)設(shè)備和外設(shè)設(shè)備。 cpu,主板,cpu散熱器,內(nèi)存,硬盤(pán)和光驅(qū),顯

    2024年02月15日
    瀏覽(28)
  • 【運(yùn)維工程師學(xué)習(xí)五】數(shù)據(jù)庫(kù)之MariaDB

    【運(yùn)維工程師學(xué)習(xí)五】數(shù)據(jù)庫(kù)之MariaDB

    db根據(jù)存儲(chǔ)模型劃分,數(shù)據(jù)庫(kù)類型主要可分為: 網(wǎng)狀數(shù)據(jù)庫(kù)(Network Database)、關(guān)系數(shù)據(jù)庫(kù)(Relational Database)、樹(shù)狀數(shù)據(jù)庫(kù)(Hierarchical Database)、面向?qū)ο髷?shù)據(jù)庫(kù)(Object-oriented Database) 等。商業(yè)應(yīng)用中主要是關(guān)系數(shù)據(jù)庫(kù),而關(guān)系數(shù)據(jù)庫(kù)中常見(jiàn)的軟件有比如Oracle、DB2、Sybase、MS SQL Server、In

    2024年02月16日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包