資源描述:
《Linux Bash Shell入門(mén)教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、BASH的基本語(yǔ)法·最簡(jiǎn)單的例子——HelloWorld!·關(guān)于輸入、輸出和錯(cuò)誤輸出·BASH中對(duì)變量的規(guī)定(與C語(yǔ)言的異同)·BASH中的基本流程控制語(yǔ)法·函數(shù)的使用2.1????最簡(jiǎn)單的例子——HelloWorld!幾乎所有的講解編程的書(shū)給讀者的第一個(gè)例子都是HelloWorld程序,那么我們今天也就從這個(gè)例子出發(fā),來(lái)逐步了解BASH。用vi編輯器編輯一個(gè)hello文件如下:#!/bin/bash?#ThisisaverysimpleexampleechoHelloWorld這樣最簡(jiǎn)單的一個(gè)BASH程序就編寫(xiě)
2、完了。這里有幾個(gè)問(wèn)題需要說(shuō)明一下:一,第一行的#!是什么意思二,第一行的/bin/bash又是什么意思三,第二行是注釋嗎?四,echo語(yǔ)句五,如何執(zhí)行該程序#!是說(shuō)明hello這個(gè)文件的類(lèi)型的,有點(diǎn)類(lèi)似于Windows系統(tǒng)下用不同文件后綴來(lái)表示不同文件類(lèi)型的意思(但不相同)。Linux系統(tǒng)根據(jù)"#!"及該字串后面的信息確定該文件的類(lèi)型,關(guān)于這一問(wèn)題同學(xué)們回去以后可以通過(guò)"manmagic"命令及/usr/share/magic文件來(lái)了解這方面的更多內(nèi)容。在BASH中第一行的"#!"及后面的"/bin/bash"就
3、表明該文件是一個(gè)BASH程序,需要由/bin目錄下的bash程序來(lái)解釋執(zhí)行。BASH這個(gè)程序一般是存放在/bin目錄下,如果你的Linux系統(tǒng)比較特別,bash也有可能被存放在/sbin、/usr/local/bin、/usr/bin、/usr/sbin或/usr/local/sbin這樣的目錄下;如果還找不到,你可以用"locatebash""find/-namebash2>/dev/null"或"whereisbash"這三個(gè)命令找出bash所在的位置;如果仍然找不到,那你可能需要自己動(dòng)手安裝一個(gè)BASH軟件
4、包了。第二行的"#Thisisa..."就是BASH程序的注釋?zhuān)贐ASH程序中從“#”號(hào)(注意:后面緊接著是“!”號(hào)的除外)開(kāi)始到行尾的多有部分均被看作是程序的注釋。的三行的echo語(yǔ)句的功能是把echo后面的字符串輸出到標(biāo)準(zhǔn)輸出中去。由于echo后跟的是"HelloWorld"這個(gè)字符串,因此"HelloWorld"這個(gè)字串就被顯示在控制臺(tái)終端的屏幕上了。需要注意的是BASH中的絕大多數(shù)語(yǔ)句結(jié)尾處都沒(méi)有分號(hào)。如何執(zhí)行該程序呢?有兩種方法:一種是顯式制定BASH去執(zhí)行:$bashhello或$shhello(這
5、里sh是指向bash的一個(gè)鏈接,“l(fā)rwxrwxrwx1rootroot4Aug2005:41/bin/sh->bash”)或者可以先將hello文件改為可以執(zhí)行的文件,然后直接運(yùn)行它,此時(shí)由于hello文件第一行的"#!/bin/bash"的作用,系統(tǒng)會(huì)自動(dòng)用/bin/bash程序去解釋執(zhí)行hello文件的:$chmodu+xhello$./hello此處沒(méi)有直接“$hello”是因?yàn)楫?dāng)前目錄不是當(dāng)前用戶可執(zhí)行文件的默認(rèn)目錄,而將當(dāng)前目錄“.”設(shè)為默認(rèn)目錄是一個(gè)不安全的設(shè)置。需要注意的是,BASH程序被執(zhí)行后,
6、實(shí)際上Linux系統(tǒng)是另外開(kāi)設(shè)了一個(gè)進(jìn)程來(lái)運(yùn)行的。2.2????關(guān)于輸入、輸出和錯(cuò)誤輸出在字符終端環(huán)境中,標(biāo)準(zhǔn)輸入/標(biāo)準(zhǔn)輸出的概念很好理解。輸入即指對(duì)一個(gè)應(yīng)用程序或命令的輸入,無(wú)論是從鍵盤(pán)輸入還是從別的文件輸入;輸出即指應(yīng)用程序或命令產(chǎn)生的一些信息;與Windows系統(tǒng)下不同的是,Linux系統(tǒng)下還有一個(gè)標(biāo)準(zhǔn)錯(cuò)誤輸出的概念,這個(gè)概念主要是為程序調(diào)試和系統(tǒng)維護(hù)目的而設(shè)置的,錯(cuò)誤輸出于標(biāo)準(zhǔn)輸出分開(kāi)可以讓一些高級(jí)的錯(cuò)誤信息不干擾正常的輸出信息,從而方便一般用戶的使用。在Linux系統(tǒng)中:標(biāo)準(zhǔn)輸入(stdin)默認(rèn)為鍵盤(pán)
7、輸入;標(biāo)準(zhǔn)輸出(stdout)默認(rèn)為屏幕輸出;標(biāo)準(zhǔn)錯(cuò)誤輸出(stderr)默認(rèn)也是輸出到屏幕(上面的std表示standard)。在BASH中使用這些概念時(shí)一般將標(biāo)準(zhǔn)輸出表示為1,將標(biāo)準(zhǔn)錯(cuò)誤輸出表示為2。下面我們舉例來(lái)說(shuō)明如何使用他們,特別是標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出。輸入、輸出及標(biāo)準(zhǔn)錯(cuò)誤輸出主要用于I/O的重定向,就是說(shuō)需要改變他們的默認(rèn)設(shè)置。先看這個(gè)例子:$ls>ls_result$ls-l>>ls_result上面這兩個(gè)命令分別將ls命令的結(jié)果輸出重定向到ls_result文件中和追加到ls_result文件中
8、,而不是輸出到屏幕上。">"就是輸出(標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤輸出)重定向的代表符號(hào),連續(xù)兩個(gè)">"符號(hào),即">>"則表示不清除原來(lái)的而追加輸出。下面再來(lái)看一個(gè)稍微復(fù)雜的例子:$find/home-namelost*2>err_result這個(gè)命令在">"符號(hào)之前多了一個(gè)"2","2>"表示將標(biāo)準(zhǔn)錯(cuò)誤輸出重定向。由于/home目錄下有些目錄由于權(quán)限限制不能訪問(wèn),因此會(huì)產(chǎn)生一些標(biāo)