linux命令sh指的是什么

本篇內(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ù)。

1. 可能需要的執(zhí)行方式

linux下執(zhí)行.sh文件的方法

.sh文件就是文本文件,如果要執(zhí)行,需要使用chmod a+x xxx.sh來給可執(zhí)行權(quán)限。

2. 開頭:#!/bin/sh

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)密。

3. 變量

在其他編程語言中必須使用變量。在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"

4. Shell命令和流程控制

在shell腳本中可以使用以下命令:

Unix命令

雖然在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 #顯示用戶輸入,并將輸入賦值給變量

概念:管道,重定向和backtick(反斜線)

  1. 管道 | 將一個(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é)果為空
  1. 重定向:將命令的結(jié)果輸出到文件,而不是標(biāo)準(zhǔn)輸出(屏幕)。
    >寫入文件并覆蓋舊文件
    >>追加到文件的尾部,保留舊文件內(nèi)容。

  2. 反短橫線 “`”:使用反短橫線可以將一個(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`

流程控制

if
if 表達(dá)式,如果條件為真則執(zhí)行 then 后面的部分:

 if ….; then
 …. elif ….; then
 …. else
 …. fi #注意是以fi結(jié)尾

大多數(shù)情況下,可以使用測試命令來對條件進(jìn)行測試。比如可以比較字符串、判斷文件時(shí)都存在以及是否可讀等等…

while
while 循環(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)

營銷型網(wǎng)站建設(shè)