乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      LINUX快速入門(mén)第八章:Shell基礎(chǔ)

       jingxin95 2019-01-22

      我們平時(shí)所說(shuō)的 Shell 可以理解為 Linux 系統(tǒng)提供給用戶的使用界面。Shell 為用戶提供了輸入命令和參數(shù)并可得到命令執(zhí)行結(jié)果的環(huán)境。當(dāng)一個(gè)用戶登錄 Linux 之后,系統(tǒng)初始化程序 init 就根據(jù) /etc/passwd 文件中的設(shè)定,為每個(gè)用戶運(yùn)行一個(gè)被稱為 Shell(外殼)的程序。

      確切地說(shuō),Shell 是一個(gè)命令行解釋器,它為用戶提供了一個(gè)向 Linux 內(nèi)核發(fā)送請(qǐng)求以便運(yùn)行程序的界面系統(tǒng)級(jí)程序,用戶可以用 Shell 來(lái)啟動(dòng)、掛起、停止甚至編寫(xiě)一些程序。

      Shell 處在內(nèi)核與外層應(yīng)用程序之間,起著協(xié)調(diào)用戶與系統(tǒng)的一致性、在用戶與系統(tǒng)之間進(jìn)行交互的作用。圖 1 是 Linux 系統(tǒng)層次結(jié)構(gòu)圖,Shell 接收用戶輸入的命令,并把用戶的命令從類似 abed 的 ASCII 碼解釋為類似 0101 的機(jī)器語(yǔ)言,然后把命令提交到系統(tǒng)內(nèi)核處理;當(dāng)內(nèi)核處理完畢之后,把處理結(jié)果再通過(guò) Shell 返回給用戶。

      換句話說(shuō):

      Shell 是一個(gè)用 C 語(yǔ)言編寫(xiě)的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語(yǔ)言,又是一種程序設(shè)計(jì)語(yǔ)言。

      Shell 是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過(guò)這個(gè)界面訪問(wèn)操作系統(tǒng)內(nèi)核的服務(wù)。

      Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個(gè)典型的圖形界面 Shell。

      LINUX快速入門(mén)第八章:Shell基礎(chǔ)

      Linux系統(tǒng)層次結(jié)構(gòu)圖

      Shell 與其他 Linux 命令一樣,都是實(shí)用程序,但它們之間還是有區(qū)別的。一旦用戶注冊(cè)到系統(tǒng)后,Shell 就被系統(tǒng)裝入內(nèi)存并一直運(yùn)行到用戶退出系統(tǒng)為止;而一般命令僅當(dāng)被調(diào)用時(shí),才由系統(tǒng)裝入內(nèi)存執(zhí)行。

      與一般命令相比,Shell 除了是一個(gè)命令行解釋器,同時(shí)還是一門(mén)功能強(qiáng)大的編程語(yǔ)言,易編寫(xiě),易調(diào)試,靈活性較強(qiáng)。作為一種命令級(jí)語(yǔ)言,Shell 是解釋性的,組合功能很強(qiáng),與操作系統(tǒng)有密切的關(guān)系,可以在 Shell 腳本中直接使用系統(tǒng)命令。大多數(shù) Linux 系統(tǒng)的啟動(dòng)相關(guān)文件(一般在 /etc/rc.d 目錄下)都是使用 Shell 腳本編寫(xiě)的。

      同傳統(tǒng)的編程語(yǔ)言一樣,Shell 提供了很多特性,這些特性可以使 Shell 腳本編程更為有用,如數(shù)據(jù)變量、參數(shù)傳遞、判斷、流程控制、數(shù)據(jù)輸入和輸出、子程序及中斷處理等。

      說(shuō)了這么多,其實(shí)我們?cè)?Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我們的圖形界面是 Shell 嗎?其實(shí)從廣義講,圖形界面當(dāng)然也是 Shell,因?yàn)樗瑯佑脕?lái)接收用戶的操作,并傳遞到內(nèi)核進(jìn)行處理。不過(guò),這里的 Shell 主要指的是 Bash。

      Shell 腳本

      Shell 腳本(shell script),是一種為 shell 編寫(xiě)的腳本程序。

      業(yè)界所說(shuō)的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個(gè)不同的概念。

      由于習(xí)慣的原因,簡(jiǎn)潔起見(jiàn),本文出現(xiàn)的 "shell編程" 都是指 shell 腳本編程,不是指開(kāi)發(fā) shell 自身。


      Shell的分類

      目前 Shell 的版本有很多種,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它們各有特點(diǎn),下面簡(jiǎn)要介紹一下。

      最重要的 Shell 是 Bourne Shell,這個(gè)命名是為了紀(jì)念此 Shell 的發(fā)明者 Steven Bourne。從 1979 年起,UNIX 就開(kāi)始使用 Boume Shell。Bourne Shell 的主文件名為 sh,開(kāi)發(fā)人員便以 sh 作為 Bourne Shell 的主要識(shí)別名稱。

      雖然 Linux 與 UNIX 一樣,可以支持多種 Shell,但 Boume Shell 的重要地位至今仍然沒(méi)有改變,許多 UNIX 系統(tǒng)中仍然使用 sh 作為重要的管理工具。它的工作從開(kāi)機(jī)到關(guān)機(jī),幾乎無(wú)所不包。在 Linux 中,用戶 Shell 主要是 Bash,但在啟動(dòng)腳本、編輯等很多工作中仍然使用 Bourne Shell。

      C Shell 是廣為流行的 Shell 變種。C Shell 主要在 BSD 版的 UNIX 系統(tǒng)中使用,發(fā)明者是柏克萊大學(xué)的 Bill Joy。C Shell 因?yàn)槠湔Z(yǔ)法和 C 語(yǔ)言類似而得名,這也使得 UNIX 的系統(tǒng)工程師在學(xué)習(xí) C Shell 時(shí)感到相當(dāng)方便。

      Bourne Shell 和 C Shell 形成了 Shell 的兩大主流派別,后來(lái)的變種大都吸取這兩種 Shell 的特點(diǎn),如 Korn、 tcsh 及 Bash。

      Bash Shell 是 GNU 計(jì)劃的重要工具之一,也是 GNU 系統(tǒng)中標(biāo)準(zhǔn)的 Shell。Bash 與 sh 兼容,所以許多早期開(kāi)發(fā)出來(lái)的 Bourne Shell 程序都可以繼續(xù)在 Bash 中運(yùn)行?,F(xiàn)在使用的 Linux 就使用 Bash 作為用戶的基本 Shell。

      Bash 于 1988 年發(fā)布,并在 1995-1996年推出Bash 2.0。在這之前,廣為使用的版本是1.14,Bash 2.0增加了許多新的功能,以及具備更好的兼容性。表 2 中詳細(xì)列出了各版本的具體情況。

      LINUX快速入門(mén)第八章:Shell基礎(chǔ)

      Shell 版本列表

      注意,Shell 的兩種主要語(yǔ)法類型有 Bourne 和 C,這兩種語(yǔ)法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的語(yǔ)法)。

      本章講述的腳本編程就是在 Bash 環(huán)境中進(jìn)行的。不過(guò),在 Linux 中除了可以支持 Bash,還可以支持很多其他的 Shell。我們可以通過(guò) /etc/shells 文件來(lái)査詢 Linux 支持的 Shell。命令如下:

      [root@localhost ~]# vi /etc/shells
      /bin/sh
      /bin/bash
      /sbin/nologin

      /bin/tcsh
      /bin/csh

      在 Linux 中,這些 Shell 是可以任意切換的,命令如下:

      [root@localhost ~]# sh
      #切換到sh
      sh-4.1#
      #sh的提示符界面
      sh-4.1# exit
      exit
      #退回到Bash中
      [root@localhost ~]# csh
      #切換到csh

      [root@localhost ~]#
      #csh的提示符界面,和Bash一致

      用戶信息文件 /etc/passwd 的最后一列就是這個(gè)用戶的登錄 Shell。命令如下:

      [root@localhost ~]# vi /etc/passwd
      root:x:0:0:root:/root:/bin/bash
      bin:x: 1:1 :bin:/bin:/sbin/nologin
      daemon:x:2:2:daemon:/sbin:/sbin/nologin
      …省略部分輸出…

      大家可以看到,root 用戶和其他可以登錄系統(tǒng)的普通用戶的登錄 Shell 都是 /bin/bash,也就是 Linux 的標(biāo)準(zhǔn) Shell,所以這些用戶登錄之后可以執(zhí)行權(quán)限允許范圍內(nèi)的所有命令。不過(guò),所有的系統(tǒng)用戶(偽用戶)因?yàn)榈卿?Shell 是 /sbin/ndogin,所以不能登錄系統(tǒng)。

      筆記:

      sh/bash/csh/Tcsh/ksh/pdksh等shell的區(qū)別

      • sh(全稱 Bourne Shell): 是UNIX最初使用的 shell,而且在每種 UNIX 上都可以使用。
      • Bourne Shell 在 shell 編程方面相當(dāng)優(yōu)秀,但在處理與用戶的交互方面做得不如其他幾種 shell。
      • bash(全稱 Bourne Again Shell): LinuxOS 默認(rèn)的,它是 Bourne Shell 的擴(kuò)展。 與 Bourne Shell 完全兼容,并且在 Bourne Shell 的基礎(chǔ)上增加了很多特性??梢蕴峁┟钛a(bǔ)全,命令編輯和命令歷史等功能。它還包含了很多 C Shell 和 Korn Shell 中的優(yōu)點(diǎn),有靈活和強(qiáng)大的編輯接口,同時(shí)又很友好的用戶界面。
      • csh(全稱 C Shell): 是一種比 Bourne Shell更適合的變種 Shell,它的語(yǔ)法與 C 語(yǔ)言很相似。
      • Tcsh: 是 Linux 提供的 C Shell 的一個(gè)擴(kuò)展版本。
      • Tcsh 包括命令行編輯,可編程單詞補(bǔ)全,拼寫(xiě)校正,歷史命令替換,作業(yè)控制和類似 C 語(yǔ)言的語(yǔ)法,他不僅和 Bash Shell 提示符兼容,而且還提供比 Bash Shell 更多的提示符參數(shù)。
      • ksh (全稱 Korn Shell): 集合了 C Shell 和 Bourne Shell 的優(yōu)點(diǎn)并且和 Bourne Shell 完全兼容。
      • pdksh: 是 Linux 系統(tǒng)提供的 ksh 的擴(kuò)展。
      • pdksh 支持人物控制,可以在命令行上掛起,后臺(tái)執(zhí)行,喚醒或終止程序。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多