国产肉体XXXX裸体137大胆,国产成人久久精品流白浆,国产乱子伦视频在线观看,无码中文字幕免费一区二区三区 国产成人手机在线-午夜国产精品无套-swag国产精品-国产毛片久久国产

新聞中心

EEPW首頁(yè) > 設(shè)計(jì)應(yīng)用 > 40個(gè)簡(jiǎn)單但有效的LinuxShell腳本示例

40個(gè)簡(jiǎn)單但有效的LinuxShell腳本示例

作者: 時(shí)間:2023-08-15 來(lái)源: 收藏

本文引用地址:http://m.ptau.cn/article/202308/449650.htm

史上,shell一直是類(lèi)的本地命令行解釋器。它已被證明是的主要功能之一,并發(fā)展成為一個(gè)全新的主題。

提供了各種功能強(qiáng)大的shell,包括Bash、Zsh、Tcsh和Ksh。這些外殼最令人驚訝的特性之一是其可編程性。創(chuàng)建簡(jiǎn)單而有效的 shell來(lái)處理日常工作非常容易。

截屏2023-08-15 22.01.59.png

1. Hello World

程序員經(jīng)常通過(guò)學(xué)習(xí)hello world程序來(lái)學(xué)習(xí)新語(yǔ)言。這是一個(gè)簡(jiǎn)單的程序,將字符串“HelloWorld”打印到標(biāo)準(zhǔn)輸出中。然后,使用vim或nano等編輯器創(chuàng)建hello-world.sh文件,并將以下行復(fù)制到其中。

#!/bin/bashecho "Hello World"

保存并退出文件。接下來(lái),您需要使用以下命令使該文件可執(zhí)行。

$ chmod a+x hello-world.sh

可以使用以下兩個(gè)命令中的任何一個(gè)來(lái)運(yùn)行此命令。

$ bash hello-world.sh$ ./hello-world.sh

它將打印出傳遞給內(nèi)部回顯的字符串。

2. 使用echo打印

echo命令用于在bash中打印信息。它類(lèi)似于C函數(shù)“printf”,并提供了許多常見(jiàn)選項(xiàng),包括轉(zhuǎn)義序列和重定向。將以下行復(fù)制到名為echo.sh的文件中,并使其可執(zhí)行,如上所述。

#!/bin/bashecho "Printing text"echo -n "Printing text without newline"echo -e "nRemoving t special t charactersn"

運(yùn)行以查看其功能。-e選項(xiàng)用于告訴echo傳遞給它的字符串包含特殊字符,需要擴(kuò)展功能。

3. 使用注釋

注釋對(duì)文檔很有用,是高質(zhì)量代碼庫(kù)的要求。將注釋放在處理關(guān)鍵邏輯的代碼中是一種常見(jiàn)的做法。要注釋掉一行,只需在其前面使用#(hash)字符。例如,請(qǐng)查看下面的bash腳本

#!/bin/bash# Adding two values((sum=25+35))#Print the resultecho $sum

此腳本將輸出數(shù)字60。首先,在某些行之前使用#檢查注釋的使用方式。不過(guò),第一行是一個(gè)例外。它被稱(chēng)為shebang,讓知道在運(yùn)行這個(gè)腳本時(shí)要使用哪個(gè)解釋器。

4. 多行注釋

許多人使用多行注釋來(lái)記錄他們的shell腳本。在下一個(gè)名為comment.sh的腳本中檢查這是如何完成的。

#!/bin/bash: 'This script calculatesthe square of 5.'((area=5*5))echo $area

注意多行注釋是如何放置在內(nèi)部的:“和”字符。

5. While循環(huán)

while循環(huán)構(gòu)造用于多次運(yùn)行某些指令。查看以下名為while.sh的腳本,以更好地理解此概念。

#!/bin/bashi=0while [ $i -le 2 ]doecho Number: $i((i++))done

因此,while循環(huán)采用以下形式。

while [ condition ]docommands 1commands ndone

方括號(hào)周?chē)目崭袷潜靥畹摹?/span>

6. For循環(huán)

for循環(huán)是另一種廣泛使用的bashshell構(gòu)造,它允許用戶(hù)高效地迭代代碼。下面演示了一個(gè)簡(jiǎn)單的。

#!/bin/bashfor (( counter=1; counter<=10; counter++ ))doecho -n "$counter "doneprintf "n"

7. 接收用戶(hù)輸入

#!/bin/bashecho -n "Enter Something:"read somethingecho "You Entered: $something"

8. If語(yǔ)句

if CONDITION thenSTATEMENTSfi

只有當(dāng)條件為真時(shí),才會(huì)執(zhí)行這些語(yǔ)句。fi關(guān)鍵字用于標(biāo)記if語(yǔ)句的結(jié)尾。下面顯示了一個(gè)快速。

#!/bin/bash

echo -n "Enter a number: "

read num

if [[ $num -gt 10 ]]

then

echo "Number is greater than 10."

fi

如果通過(guò)輸入提供的數(shù)字大于10,上述程序?qū)H顯示輸出。-gt表示大于;類(lèi)似地-lt表示小于-le表示小于等于;且-ge表示大于等于。此外,還需要[[]]。

9. 使用If Else進(jìn)行更多控制

將else構(gòu)造與if結(jié)合起來(lái),可以更好地控制腳本的邏輯。下面顯示了一個(gè)簡(jiǎn)單的示例。

#!/bin/bashread nif [ $n -lt 10 ];thenecho "It is a one digit number"elseecho "It is a two digit number"fi

其他部分需要放在if的動(dòng)作部分之后和fi之前。

10. 使用AND運(yùn)算符

AND運(yùn)算符允許我們的程序檢查是否同時(shí)滿(mǎn)足多個(gè)條件。由AND運(yùn)算符分隔的所有部分必須為true。否則,包含AND的語(yǔ)句將返回false。查看下面的bash腳本示例,以更好地了解AND的工作原理。

#!/bin/bashecho -n "Enter Number:"read numif [[ ( $num -lt 10 ) && ( $num%2 -eq 0 ) ]]; thenecho "Even Number"elseecho "Odd Number"fi

AND運(yùn)算符由&&符號(hào)表示。

11. 使用OR運(yùn)算符

OR運(yùn)算符是另一個(gè)關(guān)鍵的構(gòu)造,它允許我們?cè)谀_本中實(shí)現(xiàn)復(fù)雜、健壯的編程邏輯。與AND相反,當(dāng)OR運(yùn)算符的任一操作數(shù)為真時(shí),由OR運(yùn)算符組成的語(yǔ)句返回真。僅當(dāng)由OR分隔的每個(gè)操作數(shù)為假時(shí),它才返回假。

#!/bin/bashecho -n "Enter any number:"read nif [[ ( $n -eq 15 || $n -eq 45 ) ]]thenecho "You won"elseecho "You lost!"fi

這個(gè)簡(jiǎn)單的示例演示了OR運(yùn)算符如何在shell腳本中工作。只有當(dāng)用戶(hù)輸入數(shù)字15或45時(shí),它才會(huì)宣布用戶(hù)為獲勝者。||符號(hào)表示OR運(yùn)算符。

12. 使用El if

elif語(yǔ)句代表else if,并為實(shí)現(xiàn)鏈邏輯提供了一種方便的方法。通過(guò)評(píng)估以下示例,了解elif的工作原理。

#!/bin/bashecho -n "Enter a number: "read numif [[ $num -gt 10 ]]thenecho "Number is greater than 10."elif [[ $num -eq 10 ]]thenecho "Number is equal to 10."elseecho "Number is less than 10."fi

上面的程序是不言自明的,所以我們不會(huì)逐行剖析它。相反,更改腳本中的變量名稱(chēng)和值等部分,以檢查它們?nèi)绾我黄鸸ぷ鳌?/span>

13. case條件

switch構(gòu)造是Linux bash腳本提供的另一個(gè)強(qiáng)大功能。它可以用于需要嵌套條件的地方,但不希望使用復(fù)雜的if-else elif鏈??纯聪乱粋€(gè)例子。

#!/bin/bashecho -n "Enter a number: "read numcase $num in100)echo "Hundred!!" ;;200)echo "Double Hundred!!" ;;*)echo "Neither 100 nor 200" ;;esac

條件寫(xiě)在case和esac關(guān)鍵字之間。*)用于匹配除100和200以外的所有輸入。

14. 命令行參數(shù)

在許多情況下,直接從命令shell獲取參數(shù)是有益的。下面的示例演示了如何在bash中執(zhí)行此操作。

#!/bin/bashecho "Total arguments : $#"echo "First Argument = $1"echo "Second Argument = $2"

運(yùn)行此腳本時(shí),在其名稱(chēng)后添加兩個(gè)附加參數(shù)。我將其命名為test.sh,調(diào)用過(guò)程概述如下。

$ ./test.sh Hey Howdy

因此,$1用于訪問(wèn)第一個(gè)參數(shù),$2用于訪問(wèn)第二個(gè)參數(shù),依此類(lèi)推。最后,$#用于獲取參數(shù)總數(shù)。

15. 使用名稱(chēng)獲取參數(shù)

下面的示例顯示了如何獲取帶有名稱(chēng)的命令行參數(shù)。

#!/bin/bashfor arg in "$@"doindex=$(echo $arg | cut -f1 -d=)val=$(echo $arg | cut -f2 -d=)case $index inX) x=$val;;Y) y=$val;;*)esacdone((result=x+y))echo "X+Y=$result"

將此腳本命名為test.sh,并按如下所示調(diào)用它。

$ ./test.sh X=44 Y=100

它應(yīng)該返回X+Y=144。這里的參數(shù)存儲(chǔ)在“$@”中,腳本使用Linuxcut命令獲取它們。

16. 連接字符串

字符串處理對(duì)于廣泛的現(xiàn)代bash腳本來(lái)說(shuō)非常重要。值得慶幸的是,它在bash中更加舒適,并允許以更精確、簡(jiǎn)潔的方式實(shí)現(xiàn)這一點(diǎn)。請(qǐng)參見(jiàn)下面的示例,了解bash字符串連接。

#!/bin/bashstring1="Ubuntu"string2="Pit"string=$string1$string2echo "$string is a great resource for Linux beginners."

17. 字符串截取

與許多編程語(yǔ)言不同,bash不提供任何用于剪切字符串部分的內(nèi)置函數(shù)。然而,下面的示例演示了如何使用參數(shù)展開(kāi)來(lái)實(shí)現(xiàn)這一點(diǎn)。

#!/bin/bashStr="Learn Bash Commands from UbuntuPit"subStr=${Str:0:20}echo $subStr

該腳本應(yīng)打印出“學(xué)習(xí)Bash命令”作為其輸出。參數(shù)展開(kāi)形式為${VAR_NAME:S:L}。這里,S表示起始位置,L表示長(zhǎng)度。

18. 使用cut做截取

可以在腳本中使用Linux cut命令來(lái)截取字符串的一部分,也就是子字符串。下一個(gè)示例顯示了如何做到這一點(diǎn)。

#!/bin/bashStr="Learn Bash Commands from UbuntuPit"#subStr=${Str:0:20}subStr=$(echo $Str| cut -d ' ' -f 1-3)echo $subStr

19. 添加兩個(gè)值

在Linux shell腳本中執(zhí)行算術(shù)運(yùn)算非常容易。下面的示例演示了如何從用戶(hù)接收兩個(gè)數(shù)字作為輸入并將它們相加。

#!/bin/bashecho -n "Enter first number:"read xecho -n "Enter second number:"read y(( sum=x+y ))echo "The result of addition=$sum"

如您所見(jiàn),在bash中添加數(shù)字相當(dāng)簡(jiǎn)單。

20. 添加多個(gè)值

您可以使用循環(huán)獲取多個(gè)用戶(hù)輸入并將其添加到腳本中。以下示例顯示了這一點(diǎn)。

#!/bin/bashsum=0for (( counter=1; counter<5; counter++ ))doecho -n "Enter Your Number:"read n(( sum+=n ))#echo -n "$counter "doneprintf "n"echo "Result is: $sum"

但是,省略(())將導(dǎo)致字符串串聯(lián)而不是相加。所以,在你的程序中檢查類(lèi)似的情況。

21. Bash中的函數(shù)

與任何編程方言一樣,函數(shù)在Linux shell腳本中扮演著重要角色。它們?cè)试S管理員創(chuàng)建自定義代碼塊以供頻繁使用。下面的演示將概述函數(shù)如何在Linux bash腳本中工作。

#!/bin/bashfunction Add(){echo -n "Enter a Number: "read xecho -n "Enter another Number: "read yecho "Adiition is: $(( x+y ))"}Add

這里我們像以前一樣添加了兩個(gè)數(shù)字。但在這里,我們使用了一個(gè)名為Add的函數(shù)來(lái)完成這項(xiàng)工作。因此,每當(dāng)您需要再次添加時(shí),只需調(diào)用此函數(shù),而不必再次編寫(xiě)該部分。

22. 具有返回值的函數(shù)

最神奇的功能之一是允許數(shù)據(jù)從一個(gè)函數(shù)傳遞到另一個(gè)函數(shù)。它在各種場(chǎng)景中都很有用。查看下一個(gè)示例。

#!/bin/bashfunction Greet() {str="Hello $name, what brings you to UbuntuPit.com?"echo $str}echo "-> what's your name?"read nameval=$(Greet)echo -e "-> $val"

這里,輸出包含從Greet()函數(shù)接收的數(shù)據(jù)。

23. 從Bash腳本創(chuàng)建目錄

使用shell腳本運(yùn)行命令的能力使開(kāi)發(fā)人員的工作效率大大提高。下面的簡(jiǎn)單示例將向您展示如何在shell腳本中創(chuàng)建目錄。

#!/bin/bashecho -n "Enter directory name ->"read newdircmd="mkdir $newdir"eval $cmd

該腳本只需調(diào)用標(biāo)準(zhǔn)shell命令mkdir,并在仔細(xì)查看時(shí)將目錄名傳遞給它。這個(gè)程序應(yīng)該在文件系統(tǒng)中創(chuàng)建一個(gè)目錄。您還可以傳遞命令以在backticks(“)內(nèi)部執(zhí)行,如下所示。

`mkdir $newdir`

24. 確認(rèn)存在后創(chuàng)建目錄

如果當(dāng)前工作目錄中已包含同名文件夾,則上述程序?qū)o(wú)法運(yùn)行。例如,下面的程序?qū)z查是否存在名為$dir的文件夾,如果找不到,則只創(chuàng)建一個(gè)。

#!/bin/bashecho -n "Enter directory name ->"read dirif [ -d "$dir" ]thenecho "Directory exists"else`mkdir $dir`echo "Directory created"fi

使用eval編寫(xiě)此程序以提高bash腳本編寫(xiě)技能。

25. 讀取文件

Bash腳本允許用戶(hù)非常有效地讀取文件。下面的示例將展示如何使用shell腳本讀取文件。首先,創(chuàng)建一個(gè)名為editors.txt的文件,其中包含以下內(nèi)容。

1. Vim 2. Emacs 3. ed 4. nano 5. Code

此腳本將輸出上述5行中的每一行。

#!/bin/bashfile='editors.txt'while read line; doecho $linedone < $file

26. 刪除文件

以下程序?qū)⒀菔救绾卧贚inux shell腳本中刪除文件。程序?qū)⑹紫纫笥脩?hù)提供文件名作為輸入,如果文件名存在,則將其刪除。Linux rm命令在此處執(zhí)行刪除操作。

#!/bin/bashecho -n "Enter filename ->"read namerm -i $name

讓我們輸入editors.txt作為文件名,并在要求確認(rèn)時(shí)按y。它應(yīng)該刪除該文件。

27. 附加到文件

下面的shell腳本示例將向您展示如何使用bash腳本將數(shù)據(jù)附加到文件系統(tǒng)上的文件。它向早期的editors.txt文件添加了一行。

#!/bin/bashecho "Before appending the file"cat editors.txtecho "6. NotePad++" >> editors.txtecho "After appending the file"cat editors.txt

現(xiàn)在您應(yīng)該注意到,我們直接從Linux bash腳本使用日常終端命令。

28. 測(cè)試文件存在

下一個(gè)shell腳本示例顯示如何檢查bash程序中文件的存在。

#!/bin/bashfilename=$1if [ -f "$filename" ]; thenecho "File exists"elseecho "File does not exist"fi

我們直接從命令行傳遞文件名作為參數(shù)。

29. 從腳本發(fā)送郵件

從bash腳本發(fā)送電子郵件非常簡(jiǎn)單。下面的簡(jiǎn)單示例將演示一種從bash應(yīng)用程序執(zhí)行此操作的方法。

#!/bin/bashrecipient=”admin@example.com”subject=”Greetings”message=”Welcome to UbuntuPit”`mail -s $subject $recipient <<< $message`

它將向收件人發(fā)送包含給定主題和消息的電子郵件。

30. 解析日期和時(shí)間

下一個(gè)bash腳本示例將向您展示如何使用腳本處理日期和時(shí)間。同樣,Linuxdate命令用于獲取必要的信息,我們的程序執(zhí)行解析。

#!/bin/bashyear=`date +%Y`month=`date +%m`day=`date +%d`hour=`date +%H`minute=`date +%M`second=`date +%S`echo `date`echo "Current Date is: $day-$month-$year"echo "Current Time is: $hour:$minute:$second"

運(yùn)行此程序以了解其工作原理。此外,嘗試從終端運(yùn)行date命令。

31. sleep命令

sleep命令允許shell腳本在指令之間暫停。它在許多場(chǎng)景中都很有用,例如執(zhí)行系統(tǒng)級(jí)作業(yè)。下一個(gè)示例顯示了shell腳本中的sleep命令。

#!/bin/bashecho "How long to wait?"read timesleep $timeecho "Waited for $time seconds!"

該程序暫停最后一條指令的執(zhí)行,直到$time秒,在本例中,用戶(hù)提供了這一點(diǎn)。

32. wait命令

wait命令用于暫停Linux bash腳本中的系統(tǒng)進(jìn)程。查看下面的示例,詳細(xì)了解這在bash中的工作方式。

#!/bin/bashecho "Testing wait command"sleep 5 &pid=$!kill $pidwait $pidecho $pid was terminated.

33. 顯示上次更新的文件

有時(shí),您可能需要為某些操作查找最后更新的文件。下面的簡(jiǎn)單程序向我們展示了如何在bash中使用awk命令執(zhí)行此操作。它將列出當(dāng)前工作目錄中最近更新或創(chuàng)建的文件。

#!/bin/bashls -lrt | grep ^- | awk 'END{print $NF}'

為了簡(jiǎn)單起見(jiàn),我們將避免在本示例中描述awk的功能。相反,您可以簡(jiǎn)單地復(fù)制此代碼來(lái)完成任務(wù)。

34. 添加批處理擴(kuò)展

下面的示例將對(duì)目錄中的所有文件應(yīng)用自定義擴(kuò)展名。創(chuàng)建一個(gè)新目錄,并將一些文件放在其中以供演示。我的文件夾共有五個(gè)文件,每個(gè)文件名為test,后跟(0-4)。我已將此腳本編程為在文件末尾添加(.UP)。您可以添加所需的任何擴(kuò)展名。

#!/bin/bashdir=$1for file in `ls $1/*`domv $file $file.UPdone

首先,不要從任何常規(guī)目錄嘗試此腳本;相反,請(qǐng)從測(cè)試目錄運(yùn)行此命令。此外,您需要提供文件的目錄名作為命令行參數(shù)。對(duì)當(dāng)前工作目錄使用句點(diǎn)(.)。

35. 打印文件或目錄的數(shù)量

下面的Linuxbash腳本查找給定目錄中存在的文件或文件夾的數(shù)量。它使用Linux find命令來(lái)執(zhí)行此操作。首先,需要傳遞目錄名以從命令行搜索文件。

#!/bin/bashif [ -d "$@" ]; thenecho "Files found: $(find "$@" -type f | wc -l)"echo "Folders found: $(find "$@" -type d | wc -l)"elseecho "[ERROR] Please retry with another folder."exit 1fi

如果指定的目錄不可用或存在權(quán)限問(wèn)題,程序?qū)⒁笥脩?hù)重試。

36. 清理日志文件

下一個(gè)簡(jiǎn)單的示例演示了在現(xiàn)實(shí)生活中使用shell腳本的簡(jiǎn)便方法。該程序只需刪除/var/log目錄中的所有日志文件。您可以更改保存此目錄的變量以清理其他日志。

#!/bin/bashLOG_DIR=/var/logcd $LOG_DIRcat /dev/null > messagescat /dev/null > wtmpecho "Logs cleaned up."

請(qǐng)記住以root身份運(yùn)行此Linuxshell腳本。

37. 使用Bash備份腳本

腳本提供了一種強(qiáng)大的方法來(lái)備份文件和目錄。以下示例將備份過(guò)去24小時(shí)內(nèi)修改的每個(gè)文件或目錄。該程序使用find命令執(zhí)行此操作。

#!/bin/bashBACKUPFILE=backup-$(date +%m-%d-%Y)archive=${1:-$BACKUPFILE}find . -mtime -1 -type f -print0 | xargs -0 tar rvf "$archive.tar"echo "Directory $PWD backed up in archive file "$archive.tar.gz"."exit 0

備份過(guò)程成功后,它將打印文件和目錄的名稱(chēng)。

38. 檢查你是否是root用戶(hù)

下面的示例演示了通過(guò)Linux bash腳本快速確定用戶(hù)是否為root用戶(hù)的方法。

#!/bin/bashROOT_UID=0if [ "$UID" -eq "$ROOT_UID" ]thenecho "You are root."elseecho "You are not root"fiexit 0

此腳本的輸出取決于運(yùn)行它的用戶(hù)。它將根據(jù)$UID匹配根用戶(hù)。

39. 從文件中刪除重復(fù)行

文件處理需要相當(dāng)長(zhǎng)的時(shí)間,并在許多方面阻礙了管理員的工作效率。例如,在文件中搜索重復(fù)項(xiàng)可能會(huì)成為一項(xiàng)艱巨的任務(wù)。幸運(yùn)的是,您可以使用一個(gè)簡(jiǎn)短的shell腳本來(lái)完成此操作。

#! /bin/shecho -n "Enter Filename-> "read filenameif [ -f "$filename" ]; thensort $filename | uniq | tee sorted.txtelseecho "No $filename in $pwd...try again"fiexit 0

上面的腳本逐行遍歷文件并刪除所有重復(fù)的行。然后,它將新內(nèi)容放入新文件,并保持原始文件的完整性。

40. 系統(tǒng)維護(hù)

我經(jīng)常使用一個(gè)小的Linuxshell腳本來(lái)升級(jí)我的系統(tǒng),而不是手動(dòng)升級(jí)。下面的簡(jiǎn)單shell腳本將向您展示如何做到這一點(diǎn)。

#!/bin/bashecho -e "n$(date "+%d-%m-%Y --- %T") --- Starting workn"apt-get updateapt-get -y upgradeapt-get -y autoremoveapt-get autocleanecho -e "n$(date "+%T") t Script Terminated"

該腳本還處理不再需要的舊包。您需要使用sudo運(yùn)行此腳本,否則它將無(wú)法正常工作。



關(guān)鍵詞: Linux Shell 腳本 示例 Unix 系統(tǒng)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉