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

下載本文檔

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

文檔簡介

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

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

進入:主菜單|應用程序|附件|終端退出:單擊SHELL提示窗口右上角的關閉按鈕提示符下輸入exit按Ctrl+D組合鍵8.2.3遠程登錄SHELL

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

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

sudoapt-getinstallopenssh-serverOpenSSH服務器端設置

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

root@ubuntu:-$ssh03

使用sftp命令

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

sftp

username@

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

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

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

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

8.3.3定位文件和目錄locate

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

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

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

activeroot389foo.txt

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

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

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

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

hangupippp0

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

aliasshortcut=‘command’8.4.4shell快捷方式

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

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

例:cd

a;ls

將先進入到a目錄,再顯示a目錄。&&

使用方式:command1&&command2

只有當command1正確運行完畢后,才執(zhí)行command2例:cd

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

less$(locateREADME.mouse)

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

語法:command1$(command2)

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

pidof

gThumb256kill256

還可以試試:

kill‘pidof

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

命令jobs將顯示在這個終端窗口中運行著哪些命令與程序:

~$jobs[1]+Runninggqview&

當要關閉終端窗口中進,這一點就很重要,因為關閉終端將導致所有在其中運行機制的作罷針被中止,在此例子中,如果關閉了終端,由這個終端開啟的GQview程序也將被關閉。但如何將前臺運行的一個程序放到后臺去?可以使用bg命令。

~$gqview

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

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

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

~/.bashrc:

對于個人喜好的bash設定是最重要的,在這里設定個人變量.

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

~/.bash_logout:

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

一般來說,最后一個字符可以標識是普通用戶($),還是root(#)。但對于一些用戶來說,默認設定可能有些不友好,因為提示符只顯示當前目錄的最后一部分。能不能用Shell自動提示當前目錄呢?

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

PS1="Pleaseenteracommand"

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

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

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

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

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

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

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

第二點是變量名有時候以'$'開頭,但有時又不是。當設置一個變量時,您直接用名稱,而不需要加'$':

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

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

echo$PATH

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

否則的話,變量名就會被當作普通文本了:

echoPATH

PATH

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

PATH=$PATH:/some/directory

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

到目前為止,您只為當前終端設置了新的$PATH變量。如果您打開一個新的終端,運行echo$PATH,將返回舊的$PATH值,而看不到您剛才添加的新目錄。因為您先前定義的是一個局部環(huán)境變量(僅限于當前的終端)。

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

exportPATH=$PATH:/some/directory

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

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

echo用于顯示變量內(nèi)容語法:user@ubuntuer

溫馨提示

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

評論

0/150

提交評論