第8章 SHELL環(huán)境基礎(chǔ)及設(shè)置_第1頁
第8章 SHELL環(huán)境基礎(chǔ)及設(shè)置_第2頁
第8章 SHELL環(huán)境基礎(chǔ)及設(shè)置_第3頁
第8章 SHELL環(huán)境基礎(chǔ)及設(shè)置_第4頁
第8章 SHELL環(huán)境基礎(chǔ)及設(shè)置_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第八章SHELL環(huán)境基礎(chǔ)及設(shè)置一、shell基本概述1.Shell——是用戶與操作系統(tǒng)內(nèi)核之間的接口,起著協(xié)調(diào)用戶與系統(tǒng)的一致性和在用戶和系統(tǒng)之間進(jìn)行交互的作用。Shell在Linux中具有及其重要的地位,如圖8.1命令行SHELL圖8-2shell的角色用戶shellkernel硬件2.Shell基礎(chǔ)Shell——如同其名所示,它就像是一個(gè)殼,而這個(gè)殼介于用戶和操作系統(tǒng)(Kernel)中間,負(fù)責(zé)將用戶的命令解釋為操作系統(tǒng)可以接受的低級(jí)語言,同時(shí)將操作系統(tǒng)響應(yīng)的信息以用戶了解的方式來顯示,如此可避免用戶執(zhí)行不當(dāng)?shù)拿疃鴮?duì)系統(tǒng)產(chǎn)生危害。每個(gè)用戶在登錄Linux后,系統(tǒng)會(huì)出現(xiàn)不同的提示符號(hào),例如#,$或~等,之后您就可以開始輸入需要的命令了。如果命令正確,系統(tǒng)就可根據(jù)命令的要求來執(zhí)行,直到用戶退出系統(tǒng)為止。在登錄到退出期間,用戶輸入的每個(gè)命令都會(huì)經(jīng)過解釋及執(zhí)行,而這個(gè)負(fù)責(zé)的機(jī)制就是Shell。3shell分類一般用戶的命令可分為兩大類:程序和Shell內(nèi)置命令。如果該命令為程序類型,則Shell會(huì)找出該程序,然后將控制權(quán)交給內(nèi)核,并由內(nèi)核負(fù)責(zé)執(zhí)行該程序,而在內(nèi)核將程序執(zhí)行完畢后,再將控制權(quán)交回給Shell。但如果是Shell內(nèi)置命令,則由Shell直接響應(yīng),因此速度較快。8.2進(jìn)入SHELL8.2.1啟動(dòng)默認(rèn)進(jìn)入SHELL

在系統(tǒng)啟動(dòng)的時(shí)候,核心程序會(huì)被加載到內(nèi)存,負(fù)責(zé)管理系統(tǒng)的工作,直到系統(tǒng)關(guān)閉為止。當(dāng)用戶登錄(login)時(shí),一個(gè)交互式的shell會(huì)跟著啟動(dòng),并提示輸入命令。8.2.2桌面終端SHELL

進(jìn)入:主菜單|應(yīng)用程序|附件|終端退出:?jiǎn)螕鬝HELL提示窗口右上角的關(guān)閉按鈕提示符下輸入exit按Ctrl+D組合鍵8.2.3遠(yuǎn)程登錄SHELL

假如當(dāng)前主機(jī)的系統(tǒng)已經(jīng)具有ssh服務(wù)或telnet服務(wù),那就可以直接使用系統(tǒng)的ssh或telnet命令登錄到遠(yuǎn)程的主機(jī)上。如果是在Windows下想要登錄到遠(yuǎn)程的Linux主機(jī),有兩種方式。第一種可以打開“命令提示符”,使用Windows內(nèi)置的telnet命令來登錄。第二種就是使用遠(yuǎn)程登錄軟件PUTTY(http://putty.nl/download.html)或使用pieTTY(/~piaip/pietty/)

如果遠(yuǎn)程主機(jī)沒有提供SSH服務(wù),那么就需要安裝和配置SSHEBTL。一般情況下,我們OpenSSH來實(shí)現(xiàn)遠(yuǎn)程主機(jī)的SSH功能。OpenSSH介紹及安裝默認(rèn)情況下,UBUNTU是不會(huì)安裝OpenSSH的,因此用戶OpenSSH用戶之前必須先安裝。在命令行終端輸入:

sudoapt-getinstallopenssh-serverOpenSSH服務(wù)器端設(shè)置

OpenSSH守護(hù)進(jìn)程sshd使用/etc/ssh/sshd_config配置文件。UBUNTU安裝的置信配置文件在多數(shù)情況下應(yīng)該是相當(dāng)完備,可以直接使用。但也可以修改,修改完配置文件,注意重啟ssh服務(wù),以便修改能及時(shí)生效。OpenSSH客戶端應(yīng)用要從客戶端連接到OpenSSH服務(wù)器上,必須在客戶機(jī)器上裝有openssh-clients或者符合ssh標(biāo)準(zhǔn)的客戶端軟件。啟動(dòng)OpenSSH服務(wù)root@ubuntu:-$/etc/init.d/sshstart停止OpenSSH服務(wù)root@ubuntu:-$/etc/init.d/sshstop重啟OpenSSH服務(wù)root@ubuntu:-$/etc/init.d/sshrestart使用ssh命令例:要登錄到一個(gè)IP地址為03的遠(yuǎn)程機(jī)器上,在shell提示下輸入下面的命令:

root@ubuntu:-$ssh03

使用sftp命令

sftp工具可以用來打開一次安全互動(dòng)的FTP會(huì)話。它與ftp相似,只不過它使用安全、加密的連接。它的一般語法是:

sftp

username@

然后輸入密碼,一旦通過驗(yàn)證,就可以使用一組和FTP相似的命令。OpenSSH使用幫助我們可以參考以下網(wǎng)站:http://8.3SHELL簡(jiǎn)單使用在使用SHELL之前,建議大家平常應(yīng)用中不要用root賬號(hào)運(yùn)行Shell,如果還是新手,這上點(diǎn)非常要注意。作為普通用戶,不管有意還是無意,都無法破壞系統(tǒng)。8.3.1初次面對(duì)Shell

當(dāng)?shù)侨胂到y(tǒng)或打開一個(gè)xterm窗口,首先看到的是提示符。UBUNTU的標(biāo)準(zhǔn)提示符包括用戶名、登入的主機(jī)名,當(dāng)前所在的目錄和提示符號(hào)。例如,以用戶名user登入名為ubuntuer的主機(jī),當(dāng)前的用戶的主目錄——/home/user中。提示符如下:

user@ubuntuer:~$Root的提示符如下:

root@ubuntuer:~#8.3.2基本命令體驗(yàn)pwd、cd、ls使用pwd查看當(dāng)前路徑當(dāng)輸入pwd時(shí),系統(tǒng)便會(huì)在Shell提示窗口中打印當(dāng)前目錄名作為回應(yīng)。使用cd命令改變所在目錄使用ls查看目錄內(nèi)容

8.3.3定位文件和目錄locate

有時(shí)候,知道某一文件或目錄存在,但卻不知該到哪里去找到它??梢允褂胠ocate命令來搜尋文件或目錄。8.3.4從命令行中打印

lpr命令緊跟著一個(gè)文件名,會(huì)把指定的文件發(fā)送到打印隊(duì)列中。如,lpr

foo.txt會(huì)打印foo.txt文件。要查看在打印隊(duì)列中等待的作業(yè),在命令行中輸入lpq。輸入lpq后,會(huì)看到和以下相似的輸出

activeroot389foo.txt

取消作業(yè)輸入lprm,再跟打印作業(yè)的號(hào)碼。8.3.5清除和重設(shè)終端清除終端用clear命令8.4Shell應(yīng)用技巧TAB自動(dòng)補(bǔ)齊如何用‘cd’(改變目錄,changedirectory)最快地從您當(dāng)前所在的home目錄跳到‘/usr/local/games’呢?cd/u<TAB>lo<TAB>g<TAB>

這稱為‘命令行自動(dòng)補(bǔ)齊’(automaticcommandlinecompletion),這在平常應(yīng)用中是不可缺少的。讓我們仔細(xì)看看這個(gè)例子:cd/u<TAB>擴(kuò)展成了cd/usr/,很簡(jiǎn)單吧。下面的cd/u<TAB>sr<TAB>擴(kuò)展為cd/usr/src/。如果您只敲了cd/u<TAB>s<TAB>,‘/usr’下匹配的(‘cd/u*/s*’)三個(gè)子目錄將列出供您選擇:‘/usr/sbin’、‘/usr/share’和‘/usr/src’。因此,<TAB>鍵可以很方便地用于根據(jù)前幾個(gè)字母,來查找匹配的文件或子目錄。比如,ls/usr/bin/zip<TAB>將列出所有‘/usr/bin’下面,以字符串‘zip’開頭的文件或子目錄。當(dāng)然,完成這類任務(wù)還有更厲害的命令,但這個(gè)方法確實(shí)很管用。

另外,碰到長(zhǎng)文件名時(shí)就顯得特別方便。假設(shè)您要安裝一個(gè)名為‘boomshakalakwhizbang--mdk586.rpm’的RPM包,您輸入rpm-iboom<TAB>,如果目錄下沒有其他文件能夠匹配,那shell就會(huì)自動(dòng)幫忙補(bǔ)齊。

cd/u<TAB>sr<TAB>l<TAB>8.4.2命令行的歷史記錄通過按向上方向鍵,您可以向后遍歷近來在該控制臺(tái)下輸入的命令。用向下方向鍵可以向前遍歷。與SHIFT鍵連用的話,您還可以遍歷以往在該控制臺(tái)中的輸出。您也可以編輯舊的命令,然后再運(yùn)行。按<CTRL+R>后,shell就進(jìn)入“reverse-i(ncremental)-search”(向后增量搜索)模式?,F(xiàn)在輸入您要找的命令的首字母:(reverse-i-search)`':.敲入‘i’可能會(huì)變成:(reverse-i-search)`i':isdnctrl

hangupippp0

如果您再按<ENTER>鍵,上面的命令將再次執(zhí)行。而如果您按了向右、向左方向鍵或<ESC>,上面的命令將回到普通的命令行,這樣您就可以進(jìn)行適當(dāng)編輯。例如,用命令mkdir/homezcq/a/b新建了一個(gè)目錄,現(xiàn)在想用命令cd進(jìn)入到該目錄,可以用cd!$,shell將把子前一個(gè)命令mkdir的參數(shù)添加到現(xiàn)在的cd后面。8.4.3命令的別名在使用shell的過程中記住所有的命令及各自帶的可選項(xiàng),然后每次一一輸入,這確實(shí)前點(diǎn)枯燥。但幸運(yùn)的是,可以為常用命令定義快捷方式。這些快捷方式可以用較簡(jiǎn)單的命令別名或復(fù)雜一些的shell函數(shù)的語法來定義。例,用下面的命令來上傳MUO中的文件:

user@ubuntuer:~$rsync–essh–z–t–vv–progress/home/learner/web/muo/rsmuo/docs

muo://www/mandrakeuser/docs顯然,如果每次都要逐一輸入,那真是太痛苦了!因此我們可以在~/.bashrc中定義了別名。Aliasupmuo=‘rsync–essh–z–t–vv–progress/home/learner/web/muo/rsmuo/docs

muo://www/mandrakeuser/docs’現(xiàn)在,只要輸入upmuo就可以完成上傳任務(wù)了。定義別名的語法是:

aliasshortcut=‘command’8.4.4shell快捷方式

~就是home/user目錄的簡(jiǎn)寫。例:把一個(gè)名為bb的文件復(fù)制到home目錄下的a子目錄中。方法一:cpbb/home/user/a方法二:cpbb~/a8.4.5多命令執(zhí)行在shell的使用中,有時(shí)候用戶希望在一次執(zhí)行中使用多個(gè)命令,然后在執(zhí)行過程中把注意力轉(zhuǎn)移到其他地方。這都是沒問題的,shell允許在不同的命令之間放上特殊的排列字符,實(shí)現(xiàn)多命令執(zhí)行。常用的有以下兩種:分號(hào)使用方式:command1;command2

先執(zhí)行command1,不管command1是否出錯(cuò),接下來執(zhí)行command2

例:cd

a;ls

將先進(jìn)入到a目錄,再顯示a目錄。&&

使用方式:command1&&command2

只有當(dāng)command1正確運(yùn)行完畢后,才執(zhí)行command2例:cd

a&&ls8.4.6命令的替換命令替換是一項(xiàng)很實(shí)用的功能。假設(shè)用戶想看看XFree86文檔中的.mouse文件,但不知道這個(gè)文件的位置。如果你已經(jīng)聽說了locate命令,也安裝了slocate包,就可以用locateREADME.mouse,發(fā)現(xiàn)那個(gè)文件在/usr/X11R6/lib/X11/doc中,現(xiàn)在就可以在終端用less或在文件管理器中進(jìn)入那個(gè)目錄然后讀取文件。而命令替換可以給帶來一些便捷。如:

less$(locateREADME.mouse)

一步到位。命令locateREADME.mouse的輸出(=/usr/X11R6/lib/X11/doc/README.mouse

語法:command1$(command2)

除了$(),還可以用后引號(hào)(backquote)command1,‘command2’除此之外,還有一個(gè)例子,假設(shè)打算結(jié)束一個(gè)gThumb的程序,須用命令pidof找出相應(yīng)的進(jìn)程號(hào),然后以這個(gè)進(jìn)程號(hào)為參數(shù),這樣就可以結(jié)束gThumb程序了。

pidof

gThumb256kill256

還可以試試:

kill‘pidof

gThumb’8.4.7命令的任務(wù)調(diào)度當(dāng)在終端運(yùn)行一個(gè)命令或開啟一個(gè)程序時(shí),終端要等到命令或程序運(yùn)行完畢后,才能再被使用,在Linux中,我們稱這樣的命令或程序在前臺(tái)運(yùn)行。如果想在終端下運(yùn)行另一個(gè)命令,則需要打開一個(gè)新的終端。有一個(gè)便捷的辦法,即任務(wù)調(diào)度。當(dāng)運(yùn)用任務(wù)的高度或?qū)⒚钪糜诤笈_(tái),終端就立即解放了,這樣一來,終端立即就可以接收新的輸入。我們只需在后面添加一個(gè)&。如:~gqview&

命令jobs將顯示在這個(gè)終端窗口中運(yùn)行著哪些命令與程序:

~$jobs[1]+Runninggqview&

當(dāng)要關(guān)閉終端窗口中進(jìn),這一點(diǎn)就很重要,因?yàn)殛P(guān)閉終端將導(dǎo)致所有在其中運(yùn)行機(jī)制的作罷針被中止,在此例子中,如果關(guān)閉了終端,由這個(gè)終端開啟的GQview程序也將被關(guān)閉。但如何將前臺(tái)運(yùn)行的一個(gè)程序放到后臺(tái)去?可以使用bg命令。

~$gqview

按Ctrl+Z[2]+stoppedgqview~$bg[2]+gqview&

組合鍵Ctrl+Z將掛起終端中正在運(yùn)行的程序,然后就可以用bg命令將其放到后臺(tái)去執(zhí)行了。8.5BashShell的配置文件在使用Shell時(shí),可以通過對(duì)用戶的Shell環(huán)境進(jìn)行一定的設(shè)置,以滿足個(gè)性化或習(xí)慣上的要求。8.5.1Bash配置文件

Bash文件在用戶的主目錄下。在用戶的主目錄下運(yùn)行l(wèi)s.bash*,如下:ls.bash*.bash_history.bash_logout.bash_profile.bashrc~/.bash_profile:定義了個(gè)人路徑(PATH)與環(huán)境變量的文件名稱.

~/.bashrc:

對(duì)于個(gè)人喜好的bash設(shè)定是最重要的,在這里設(shè)定個(gè)人變量.

~/.bash_history:此文件用于記錄曾經(jīng)用過的命令.

~/.bash_logout:

此文件是在注銷shell時(shí)bash要為你做的事情.區(qū)別:.bash_profile只在會(huì)話開始時(shí)被讀取一次,而.bashrc則每次打開新的終端時(shí),都要被讀取。按照傳統(tǒng),須將定義的變量,如PATH,放到.bash_profile中,而像aliases和函數(shù)之類,則放在.bashrc中。但由于.bash_profile經(jīng)常被設(shè)置成先讀取.bashrc的內(nèi)容,如果圖省事的話,就把所有配置都放進(jìn).bashrc。這些文件是每一位用戶的設(shè)置。系統(tǒng)級(jí)的設(shè)置存儲(chǔ)在/etc/profile、/etc/bashrc及目錄/etc/profile.d下的文件中,但最好用各自的配置文件,這樣編輯不需要root權(quán)限,還可以使設(shè)置更有個(gè)性,同時(shí)也不會(huì)受到別人設(shè)置的影響。當(dāng)系統(tǒng)級(jí)與用戶級(jí)的設(shè)置發(fā)生沖突時(shí),將采用用戶的設(shè)置。8.5.2提示符設(shè)置在默認(rèn)設(shè)置下,提示符將顯示的是用戶名、主機(jī)名和當(dāng)前所在目錄,如usr@hostname~$

一般來說,最后一個(gè)字符可以標(biāo)識(shí)是普通用戶($),還是root(#)。但對(duì)于一些用戶來說,默認(rèn)設(shè)定可能有些不友好,因?yàn)樘崾痉伙@示當(dāng)前目錄的最后一部分。能不能用Shell自動(dòng)提示當(dāng)前目錄呢?

Shell的大部分設(shè)定,包括提示符,一般都包含在文件/etc/bashrc中,可以通過編輯各自主目錄下的.bash_profile和.bashrc來改變?cè)O(shè)置你可以通過改變bash的PS1變量的值來改變你的缺省提示符,例如:

PS1="Pleaseenteracommand"

把bashshell的提示符該為指定的字符串。如果退出剛剛設(shè)定的變量讀取系統(tǒng)默認(rèn)的變量的話,暫時(shí)沒有什么好辦法,crtl+d

退出再次登陸讀取系統(tǒng)默認(rèn)變量。

第二級(jí):當(dāng)bash期待輸入更多的信息以完成命令時(shí)顯示第二級(jí)提示符。缺省的第二級(jí)提示符是>。如果你要改變第二級(jí)提示符,可以通過設(shè)置PS2變量的值來實(shí)現(xiàn):

PS2="Ineedmoreinformation"8.6Shell環(huán)境命令

'$PATH'與'$PS1'一樣,也是環(huán)境變量。輸入set將列出所有當(dāng)前定義的環(huán)境變量。您看到的這些環(huán)境變量在shell的配置文件中定義,可能是用戶自己的配置文件,也可能是由'root'通過'/etc'下面的系統(tǒng)級(jí)文件定義的。如果您使用X,更多的一些變量將由X、您的窗口管理器或桌面環(huán)境的啟動(dòng)文件配置。

如果對(duì)這些設(shè)置不很清楚,您暫時(shí)最好不要隨便改動(dòng)。了解如何改變$PATH變量很有用,因?yàn)檫@個(gè)變量決定了shell將到哪些目錄中尋找命令或程序。如果要執(zhí)行的命令的目錄在$PATH中,您就不必輸入這個(gè)命令的完整路徑,直接輸入命令就可以了。一些第三方軟件沒有將可執(zhí)行文件放到Linux的標(biāo)準(zhǔn)目錄中。因此,將這些非標(biāo)準(zhǔn)的安裝目錄添加到$PATH是一種解決的辦法。此外,您也將看到如何處理一般的環(huán)境變量。

首先,作為慣例,所有環(huán)境變量名都是大寫。由于Linux區(qū)分大小寫,這點(diǎn)您要留意。當(dāng)然,您可以自己定義一些變量,如'$path'、'$pAtH',但shell不會(huì)理睬這些變量。

第二點(diǎn)是變量名有時(shí)候以'$'開頭,但有時(shí)又不是。當(dāng)設(shè)置一個(gè)變量時(shí),您直接用名稱,而不需要加'$':

PATH=/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

要獲取變量值的話,就要在變量名前加'$':

echo$PATH

/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin

否則的話,變量名就會(huì)被當(dāng)作普通文本了:

echoPATH

PATH

處理$PATH變量要注意的第三點(diǎn)是:您不能只替換變量,而是要將新的字符串添加到原來的值中。在大多數(shù)情況下,您不能用'PATH=/some/directory',因?yàn)檫@將刪除$PATH中其他的所有目錄,這樣您在該終端運(yùn)行程序時(shí),就不得不給出完整路徑。所以,只能作添加:

PATH=$PATH:/some/directory

這樣,PATH被設(shè)成當(dāng)前的值(以$PATH來表示)+新添的目錄。

到目前為止,您只為當(dāng)前終端設(shè)置了新的$PATH變量。如果您打開一個(gè)新的終端,運(yùn)行echo$PATH,將返回舊的$PATH值,而看不到您剛才添加的新目錄。因?yàn)槟惹岸x的是一個(gè)局部環(huán)境變量(僅限于當(dāng)前的終端)。

要定義一個(gè)全局變量,使在以后打開的終端中生效,您需要將局部變量輸出(export),可以用'export'命令:

exportPATH=$PATH:/some/directory

現(xiàn)在如果您打開一個(gè)新的終端,輸入echo$PATH,也能看到新設(shè)置的$PATH了。請(qǐng)注意,命令'export'只能改變當(dāng)前終端及以后運(yùn)行的終端里的變量。對(duì)于已經(jīng)運(yùn)行的終端沒有作用。為了將目錄永久添加到您的$PATH,只要將'export'的那行添加到您的'.bash_profile'文件中。

請(qǐng)不要在'.bashrc'中設(shè)置PATH,否則會(huì)導(dǎo)致PATH中目錄的意外增長(zhǎng)。您每次打開一個(gè)新的shell,'.bashrc'都會(huì)作用。所以如果在該文件中添加目錄,您每次打開一個(gè)終端,目錄又會(huì)被添加。這將導(dǎo)致PATH變量由于目錄復(fù)制,不斷地增長(zhǎng)。8.6.1echo指令

echo用于顯示變量?jī)?nèi)容語法:user@ubuntuer

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論