本篇內(nèi)容主要講解“l(fā)inux命令sh指的是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“l(fā)inux命令sh指的是什么”吧!
創(chuàng)新互聯(lián)建站長期為數(shù)千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為鶴山企業(yè)提供專業(yè)的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì),鶴山網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
linux命令sh是linux中運(yùn)行shell的命令,是shell的解釋器,shell腳本是linux中殼層與命令行界面,用戶可以在shell腳本輸入命令來執(zhí)行各種各樣的任務(wù)。
.sh文件就是文本文件,如果要執(zhí)行,需要使用chmod a+x xxx.sh來給可執(zhí)行權(quán)限。
shell程序必須以“#!/bin/sh”開始。shell中#一般表示注釋的意思,所以很多時(shí)候認(rèn)為"#!"也是注釋,但實(shí)際上并不是。
"#!/bin/sh"是對shell的聲明,說明你所用的是哪種類型的shell及其路徑所在。
#!/bin/是指此腳本使用.bin/sh來執(zhí)行。
#!是特殊的表示符,其后面跟的是解釋此腳本的shell的路徑,如果沒有聲明,則腳本將在默認(rèn)的shell中執(zhí)行,默認(rèn)shell是由用戶所在的系統(tǒng)定義為執(zhí)行shell腳本,如果腳本被編寫為在Kornshell ksh中運(yùn)行,而默認(rèn)運(yùn)行shell腳本的為C shell csh,則腳本在執(zhí)行過程中很可能失敗。所以建議大家就把"#!/bin/sh"當(dāng)成C 語言的main函數(shù)一樣,寫shell必須有,以使shell程序更嚴(yán)密。
在其他編程語言中必須使用變量。在shell編程中,所有變量都由字符串組成,并且不需要對變量進(jìn)行聲明。要賦值給一個(gè)變量,可以這樣寫:
#!/bin/sh #對變量賦值: a=”hello world”# 現(xiàn)在打印變量a的內(nèi)容: echo “A is:” echo $a
有時(shí)候變量名很容易與其他文字混淆,比如:
num=2 echo “this is the $numnd”
這并不會打印出”this is the 2nd",而僅僅打印"this is the ",因?yàn)閟hell會去搜索變量numnd的值,但是這個(gè)變量是沒有值的。因此,可以使用花括號來告訴shell我們要打印的是num變量:
num=2 echo “this is the ${num}nd”
這樣才會打印”this is the 2nd"
在shell腳本中可以使用以下命令:
雖然在shell腳本中可以使用任意的unix命令,但還是有一些相對更常用的命令。這些命令通常是用來進(jìn)行文件和文字操作的。
如:
echo "some text" #將文字內(nèi)容打印在屏幕上 ls #文件列表 cp sourcefile destfile #文件拷貝 mv oldname newname #重命名文件或移動文件 rm file #刪除文件 grep 'pattern' file #在文件內(nèi)搜索字符串,如:grep 'searchstring' file.txt cat file.txt #輸出文件內(nèi)容到標(biāo)準(zhǔn)輸出設(shè)備(屏幕)上 read var #顯示用戶輸入,并將輸入賦值給變量
管道 |
將一個(gè)命令的輸出作為另外一個(gè)命令的輸入。
grep "hello" file.txt | wc -l
上述代碼表示為:在 file.txt 中搜索包含有 “hello” 的行并計(jì)算其行數(shù)。在這里grep命令的輸出作為wc命令的輸入。
需要注意的是,管道后的命令是子命令,并不會出現(xiàn)在接下來的命令中(有點(diǎn)像C++在{}
內(nèi)和{}
外賦值的區(qū)別),如以下命令:
#!/bin/shecho 1 2 3 | { read a b c ; echo $a $b $c ; } # 打印結(jié)果為: 1 2 3echo $a $b $c # 打印結(jié)果為空
重定向
:將命令的結(jié)果輸出到文件,而不是標(biāo)準(zhǔn)輸出(屏幕)。
>寫入文件并覆蓋舊文件
>>追加到文件的尾部,保留舊文件內(nèi)容。
反短橫線 “`”:使用反短橫線可以將一個(gè)命令的輸出作為另一個(gè)命令的一個(gè)命令行參數(shù)。
find . -mtime -1 -type f -print
上述語句用來查找過去24小時(shí)(-mtime -2則表示過去48小時(shí))內(nèi)修改過的文件。如果想將所有查找到的文件打一個(gè)包,則可以使用一下linux腳本:
#!/bin/sh # The ticks are backticks (`) not normal quotes (‘): tar -zcvf lastmod.tar.gz `find . -mtime -1 -type f -print`
ifif
表達(dá)式,如果條件為真則執(zhí)行 then
后面的部分:
if ….; then …. elif ….; then …. else …. fi #注意是以fi結(jié)尾
大多數(shù)情況下,可以使用測試命令來對條件進(jìn)行測試。比如可以比較字符串、判斷文件時(shí)都存在以及是否可讀等等…
whilewhile
循環(huán)的語法結(jié)構(gòu)為:
# expression 1# while循環(huán):當(dāng)expresssion成立的時(shí)候,執(zhí)行cmdwhile (expresssion)do cmddone# expression 2,可以直接使用truewhile true(或 :)do cmddone
該命令配合可以配合管道使用,如:
# 尋找 ${path} 路徑下唯一首字母為‘E’的子目錄,并 cd 到該目錄find ${path}/E* -type d | while read corresp_pathdo cd ${corresp_path}done
測試條件
通常使用“[ ]”來表示測試條件。注意這里的空格很重要,要確保方括號里的空格。
[ -f "somefile" ] #判斷文件是否存在 [ -d "testResults/" ] #判斷目錄testResults/是否存在 [ -x "/bin/ls" ] #判斷/bin/ls文件是否存在并有可執(zhí)行權(quán)限 [ -n "$var" ] #判斷$var變量是否有值 [ "$a" = "$b" ] #判斷$a和$b是否相等
快捷操作符
熟悉C語言可能會喜歡一下表達(dá)式:
[ -f "/etc/shadow" ] && echo “This computer uses shadow passwors”
這里“&&”就是一個(gè)快捷操作符,如果左邊的表達(dá)式為真則執(zhí)行右邊的語句。當(dāng)然也可以將上述表達(dá)式認(rèn)為是邏輯運(yùn)算中的與操作。
同樣或操作“||”在shell編程中也是可用的:
#!/bin/sh mailfolder=/var/spool/mail/james [ -r "$mailfolder" ]‘ ‘{ echo “Can not read $mailfolder” ; exit 1; } #感覺這里的‘’應(yīng)該是|| echo “$mailfolder has mail from:” grep “^From ” $mailfolder
該腳本首先判斷mailfolder是否可讀。如果可讀則打印該文件中的”From” 一行。如果不可讀則或操作生效,打印錯誤信息后腳本退出。這里有個(gè)問題,那就是我們必須有兩個(gè)命令:
◆打印錯誤信息
◆退出程序
我們使用花括號以匿名函數(shù)的形式將兩個(gè)命令放到一起作為一個(gè)命令使用。一般函數(shù)將在下文提及。
不用‘與’和‘或’操作符,我們也可以用if表達(dá)式作任何事情,但是使用與或操作符會更便利很多。
到此,相信大家對“l(fā)inux命令sh指的是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
當(dāng)前題目:linux命令sh指的是什么
標(biāo)題鏈接:http://muchs.cn/article22/pdjjjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、用戶體驗(yàn)、網(wǎng)站營銷、網(wǎng)站設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)