国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Shell介紹

2019-11-18 17:25:36
字體:
供稿:網(wǎng)友
#版權(quán)宣告:1999CopyrightOLS3Allrightsreserved.

#作者:OLS3(臥龍小三)
#本講義僅供臺南縣87學(xué)年度網(wǎng)路管理進階研習(xí)班上課之用.
#學(xué)員可保存一份自用,供日後網(wǎng)管時參考備查.
#作者保有一切形式的著作權(quán).
#欲作其它用途者,需經(jīng)作者授權(quán)同意.
#未經(jīng)作者授權(quán)同意之前,請勿轉(zhuǎn)載刊登.

Shell

當我們登入linux之後,第一個接觸到的,便是Shell.我們必須對它有點初步的認識才行.

一.Shell簡介.

Linux系統(tǒng)分成三個重要的部份

核心
Shell
工具程式
核心的部份相當?shù)碗A,操作者不易和它直接溝通,因此,必須要有一個友善的介面(interface),使得操作時能更為方便,這個介面便是Shell.

換言之,Shell就是一個居於核心和操作者之間的一層使用者介面.

那麼,為何稱它為Shell呢?Shell的本意是"殼"的意思呢!

沒錯,在核心的外面,包覆著一層外殼,用來負責接收使用者輸入的指令,然後將指令解譯成核心能夠了解的方式,傳給核心去執(zhí)行,再將結(jié)果傳回至預(yù)設(shè)的輸出周邊.

如圖所示:



例如:鍵入

ls-l

shell給你以下回應(yīng):


檔有
案檔
種案檔案大小最近修改的
類檔案權(quán)限數(shù)擁有人組別(byte單位)日期及時間檔案名稱
drwxr-xr-x14rootroot1024Jul2121:31.
drwxr-xr-x17rootroot1024APR1112:01..
drwxr-xr-x882821024Feb2519:23apache
-rw-r--r--1rootroot1335460Feb2517:45apache_1_3_4.tar.gz
drwxr-xr-x6rootroot1024Aug311998ftp
drwxr-xr-x5rootroot1024Aug311998httpd
drwx------2jamesjames1024Apr2306:47james
drwxr-xr-x2rootroot12288Aug311998lost found
drwxr-xr-x2msqlnobody1024Dec281998msql
drwxr-xr-x28ols3ols32048Jul1921:38ols3
drwxr-xr-x31022nobody1024Jan2523:40ols3cgi
drwxrwxr-x3perlols31024Feb207:11perl
-rw-------1rootroot2097152Jul2118:39quota.group
-rw-------1rootroot1278656Jul2118:39quota.user
drwxrwxr-x2rootnobody1024May111998samba
drwxr-xr-x3apachenobody1024Feb2516:58temp
drwxrwxr-x2webadmnobody1024Mar1416:34webadm



其實不只是Linux有這一層Shell,其它作業(yè)系統(tǒng)也有.
比如DOS的command.com,Windows的GUI(GraphicalUserInterface),Mac的GUI.

Shell按著表現(xiàn)的方式與讀取使用者輸入種類的不同,可分為二大類:

Textbase:文字導(dǎo)向
Graphbase:圖型導(dǎo)向
所謂"讀取使用者輸入種類不同"是指:讀取自鍵盤,或讀取自滑鼠,其它serialinput,螢?zāi)挥|控等.

這樣說來,Shell好像只是命令直譯器罷了?!
嗯,這倒要按不同的OS所附給的Shell其功能和選擇性的自由度而定.

以DOS的COMMAND.COM而言,它就是一個十足的命令直譯器,除了一點點batch檔的能力之外,它的功能并不多.Win平臺的GUI,則是一個圖型式的命令直譯器,介面十分友善.不過,這二種OS,不能讓你自由而簡單地選擇Shell.(以前DOS有4dos可選用)

Linux的shell,除了做為命令直譯器之外,它也是一個不錯的程式語言,是系統(tǒng)管理維護時的重要工具.

由於Unix家族,對Shell的處理,采獨立自由開放的方式,因此,Shell的種類相當?shù)囟?更可以讓人自由地更換(chsh).

目前流行的shell有:

Bourneshell:sh
Cshell:csh
Kornshell:ksh(商業(yè)軟體)
tcsh(free)
BourneAgainshell:bash(GNU)
Linux的標準shell是采用bash.它也是我們要學(xué)習(xí)的主要對象.

二.Shell的簡史

第一個重要的shell是Bourneshell(如此命名是為了紀念此shell的發(fā)明者StevenBourne),1979年第一個流行的Unix版本7發(fā)行時,開始使用Bourneshell.

Bourneshell的主檔名為sh,因此,日後人們便以sh為Bourneshell的主要識別名稱.

雖然Unix上的shell有許多種,但Bourneshell的地位至今仍然沒有改變.許多Unix系統(tǒng)中仍然使用sh做為重要的管理工具.(它的工作從開機到關(guān)機,幾乎無所不包)

第一個廣為流行使用的shell變種是Cshell.Cshell主要附在BSD版的Unix系統(tǒng)中.它的作者是柏克萊大學(xué)的BillJoy.Cshell主要是因為其語法和C語言相類似,因而得名.這使得Unix系統(tǒng)的程式師,在學(xué)習(xí)Cshell時,感到相當?shù)胤奖闳菀?

以上這二種形成shell的二大主流,後來的變種shell大都攫取這二種shell的優(yōu)點.

比如Korn,tcsh及bash.

Bashshell是GNU計劃的重要工具軟體之一,也是GNU作業(yè)系統(tǒng)中標準的shell.

Bash相容於sh,因此,許多早期開發(fā)出來的Bourneshell都可以繼續(xù)在bash中運作.現(xiàn)在我們安裝好的RedHatLinux便是完全使用Bash.(/bin/sh->/bin/bash)

Bash在1988年誕生,最初的作者是BrianFox,ChetRamey於1989加入,現(xiàn)在官方正式的維護者是ChetRamey,他的工作便是持續(xù)不斷地增強bash的功能.

1995~1996期間推出bash2.0,在這之前,廣為使用的版本是1.14.x,它增加了許多新的功能,以及更好的相容性.

當然,Bash是完全免費的,它是OpenSource的一員,原始碼全部開放.

二.Bash的功能.

Bash具有以下功能:

相容於Bourneshell(sh)
包含有Cshell以及Kornshell中最好的功能.
具命令列編修的能力(您記得以前DOS中的doskey嗎?)
工作控制(jobcontrol)的能力,可控制前景及背景程式
具shell程式設(shè)計的能力,可讓您自訂shell及設(shè)計程式,管理系統(tǒng).
三.新版的Bash哪里抓取?

若欲抓取新版的bash,可至http://www.gnu.org或其mirror站臺.

中研院FTP也是不錯的選擇.ftp://ftp.sinica.edu.tw或ftp://linux.sinica.edu.tw

三.開始使用Bash

當你login進Linux主機時,便開始和bash互動,一直到你logout主機(下exit,logout,或按^D)為止.

Bash的提示符號為$(代表一般身份使用者),當您具有root權(quán)限時,提示符號則變?yōu)?.

一旦出現(xiàn)提示符號時,您便可以開始鍵入操作命令列(commandline)了.

命令可分為二大類:

bash內(nèi)建的指令
程式
如果是bash內(nèi)建的指令,則由bashshell負責回應(yīng);若是程式,則shell會找出該程式,然後將控制權(quán)交給核心,由核心執(zhí)行該程式,執(zhí)行完之後,再將控制權(quán)交回給shell.

怎麼知道那些指令是bash內(nèi)建的,那些是程式呢?通常用"which指令",若沒有任何回應(yīng),表示是內(nèi)建的指令(除非該指令錯誤、不存在,或該程式不在預(yù)設(shè)的搜尋路徑之內(nèi)),例如下:

[ols3@ols3/ols3]$whichecho   [沒有回應(yīng),表示是內(nèi)建的指令]

[ols3@ols3/ols3]$whichls

/bin/ls

四.命令列的格式.

命令列通常由好幾個字串組成,中間用空白或tab鍵分開.如下所示:

commandoptionsarguments(或稱為parameters)
命令選項參數(shù)
rm-rf/home/ols3

除了空白和tab鍵之外,每一部份,我們稱之為token,比如上面的例子中,便有三個token:rm,-rf,/home/ols3.

當鍵入此一命令列時,shell首先將它分解成個別的token,然後判斷是內(nèi)建的指令,或是程式,再按之前提過的方式去執(zhí)行.

怎麼知道一個命令或程式,它有那些選項和參數(shù)呢?通常man一下該指令,就可以得到了.例如:

manrm

另外,多行指令也可以一下全部寫在同一命令列中,只要中間用;分開,如:

ls;mkdirtest;clear

五.現(xiàn)行目錄和自家目錄.

所謂現(xiàn)行目錄(currentdirectory)是指:你現(xiàn)在所處的位置,又稱為工作目錄(workingdirectory).

欲知現(xiàn)行目錄為何?可下pwd指令便知.

所謂自家目錄(homedirectory)是指:當初root為你建立帳號時,所指定給你的一個私人專用的目錄,也是你登入系統(tǒng)之後,第一個進入的地方.

欲知自家目錄,可用下列方式:

cd   (然後直接按Enter)
cd~  (~代表自家目錄)
cat/etc/passwd|grep您的帳號
相關(guān)的技巧

cd./myway(進入目前目錄下的myway目錄中) 
cd.. (回到上一層目錄)
cd- (回到先前的目錄)
六.萬用字元.

如果命令列的參數(shù)中,含有檔名,那麼萬用字元(wildcards)可以帶來十分便利的操作.(不過若使用不當,也是惡夢的開始)

如果各位以前有過DOS的操作經(jīng)驗,應(yīng)該還記得*及?所代表的意義吧?!

以下是bash中使用的萬用字元:

?代表任何單一字元(character)
*代表任何字串(注意:0個以上的字元,例:*yes將包含yes或yes-or-not)
[字元組合]在中括號中的字元皆符合,如:[a-z]代表所有的小寫字母
[!字元組合]不在中括號中的字元皆符合,如:[!0-9]代表非數(shù)字的字元皆符合



七.輸入和輸出與重新導(dǎo)向.

當Linux系統(tǒng)完成開機之後,預(yù)設(shè)上,便開有三個檔案,這三個檔案是做為輸入、輸出以及顯示錯誤之用的.

我們稱之為:

標準輸入:通常是鍵盤,檔案代碼為0
標準輸出:通常是螢?zāi)?檔案代碼為1
標準錯誤:通常標準輸出相同(也就是螢?zāi)?,檔案代碼為2
雖然系統(tǒng)已幫你設(shè)好了這三個檔案,但我們?nèi)匀豢梢砸曅枰?適時地改變輸入,輸出,及錯誤這三者至不同的地方.這種改變標準輸出入的動作,我們稱之為"I/O重新導(dǎo)向"(I/ORedirection).

例如:

ls-la>myfile就是將查詢的結(jié)果重新導(dǎo)向至myfile中(本來是應(yīng)該出現(xiàn)在螢?zāi)簧系?

catmyfile便可以看見ls-la的結(jié)果.

catyoufile就是將myfile的內(nèi)容拷貝給youfile.

>代表將輸出轉(zhuǎn)向

<代表將輸入轉(zhuǎn)向

另一個會將輸出入轉(zhuǎn)向的機制是"管線"(P<輸入轉(zhuǎn)向
>輸出轉(zhuǎn)向
/路徑分隔號
?萬用字元
!管線邏輯意義上的NOT

九.常用控制組合鍵.

我們在操作Linux時,常會使用一些組合鍵來控制shell的活動.

詳列如下:

組合鍵意義
Ctrl-C中止目前的命令
Ctrl-/同上
Ctrl-D輸入結(jié)束,即EOF之意(如使用mail信件結(jié)束時);或logout登出Linux
Ctrl-Z暫停目前的命令
Ctrl-M相當按Enter
Ctrl-S暫停螢?zāi)惠敵?br>Ctrl-Q恢復(fù)螢?zāi)惠敵?br>Ctrl-U將命令列整列刪除
Ctrl-?刪除最後一個字元,相當於按Del

十.指令練習(xí).

指令選項或參數(shù)意義
ls
pwd
which
more
less
passwd
man
cat
touch
cd
mkdir
rmdir
cp
rm
head
tail
wc
grep
ps





發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 三门县| 光山县| 包头市| 安义县| 鸡泽县| 石林| 陇川县| 洛扎县| 临沧市| 绥中县| 蚌埠市| 逊克县| 睢宁县| 罗源县| 萨嘎县| 密云县| 郓城县| 阿拉善左旗| 共和县| 分宜县| 西安市| 东明县| 天柱县| 林州市| 泾川县| 塔河县| 横峰县| 保康县| 隆昌县| 营山县| 延吉市| 大丰市| 浙江省| 任丘市| 贵德县| 方正县| 衢州市| 罗源县| 红安县| 郑州市| 东宁县|