天天看點

Unix/Linux環境C程式設計入門教程(36) 初識shell



1.什麼是Shell

Shell是系統的使用者界面,提供了使用者與核心進行互動操作的一種接口。它接收使用者輸入的指令并把它送入核心去執行。

實際上Shell是一個指令解釋器,它解釋由使用者輸入的指令并且把它們送到核心。不僅

如此,Shell有自己的程式設計語言用于對指令的編輯,它允許使用者編寫由shell指令組成的程式。Shell程式設計語言具有普通程式設計語言的很多特點,比如它也有循環結構和分支控制結構等,用這種程式設計語言編寫的Shell程式與其他應用程式具有同樣的效果。

2.shell有很多種類

/bin/sh (已經被 /bin/bash 所取代)

/bin/bash (就是 Linux 預設的 shell)

/bin/ksh (Kornshell 由 AT&T Bell lab. 發展出來的,相容于 bash)

/bin/tcsh (整合 C Shell ,提供更多的功能)

/bin/csh (已經被 /bin/tcsh 所取代)

/bin/zsh (基于 ksh 發展出來的,功能更強大的 shell)

3.怎麼使用shell

不論是哪一種Shell,它最主要的功用都是解譯使用者在指令列提示符号下輸入的指令。Shell 文法分析指令列,把它分解成以空白區分開的符号(token),在此空白包括了跳位鍵(tab)、空白和換行(New Line)。如果這些字包含了metacharacter,shell 将會評估(evaluate)它們的正确用法。另外,shell 還管理檔案輸入輸出及幕後處理(background processing)。在處理指令列之後,shell 會尋找指令并開始執行它們。

Shell 的另一個重要功用是提供個人化的使用者環境,這通常在 shell 的初始化檔案中完成(.profile、.login、.cshrc、.tcshrc 等等)。這些檔案包括了設定終端機鍵盤和定義視窗的特征;設定變量,定義搜尋路徑、權限、提示符号和終端機類型;以及設定特殊應用程式所需要的變量,例如視窗、文字處理程式、及程式語言的連結庫。Korn shell 和 C shell 加強了個别化的能力:增加曆程、别名、和内建變量集以避免使用者誤殺檔案、不慎簽出、并在當工作完成時通知使用者。

Shell 也能當解譯性的程式語言(interpreted programing language)。Shell 程式,通常叫做指令檔案,它由列在檔案内的指令所構成。此程式在編輯器中編輯(雖然也可以直接在指令列下寫作程式,online scripting),由 UNⅨ指令和基本的程式結構,例如變量的指定、測試條件、和循環所構成。您不需要編譯 shell 指令檔。Shell 本身會解譯指令檔中的每一行,就如同由鍵盤輸入一樣。shell 負責解譯指令,而使用者則必須了解這些指令能做什麼。

4.檢視自己電腦使用的是那種shell

5. Linux shell指令中一個重要的地方是,你可以将指令串起來。這是Unix/Linux從第一天開始就有的巧妙的特點。最簡單的将指令連起來的辦法就是使用“|”,我們稱之為“pipe”。第一個指令的輸出就是下一個指令的輸入。如圖

Linux指令有自己的文法規則:

基本的文法就像這樣:

command -option object

6.Linux下常用指令

ls-檢視檔案資訊

ls是英文單詞list的簡寫,其功能為列出目錄的内容,是使用者最常用的指令之一。

它類似于DOS下的dir指令。

ls [參數] 目錄或檔案

常用參數及含義如下表所示。

使用ls指令檢視桌面目錄下的檔案資訊。在指令提示符下執行如下指令,執行結果如下圖所示。

每一個檔案資訊的含義

檔案類型:“-”表示正常檔案;“d”表示目錄;“c”表示字元裝置檔案;“b”表示塊裝置檔案;“s”表示管道檔案;“l”表示連結檔案。

檔案存取權限:從左到右每3位為一組,依次代表檔案擁有者、同組使用者和其他使用者的存取權限。通常檔案共有3個權限,“r”表示隻讀;“w”表示可寫;“x”表示可執行;“-”表示未設定。檔案的第一列如為-rw-r--r--,可知其為一個普通檔案,檔案所有者的權限是rw-,可讀可寫不可執行,檔案所屬組群的權限是r--,表示可讀不可寫不可執行,其他人的屬性是r--,表示可讀不可寫不可執行。隻有檔案的擁有者或超級使用者才能設定檔案的屬性。

檔案的屬主群組:在Linux下每個檔案都屬于特定的使用者群組,檔案的屬主和超級使用者對檔案使用者最大的存取權限。

more指令

如果使用ls指令來檢視其内容,在資訊過長無法在一屏上顯示時,會出現快速滾屏,使得使用者無法看清檔案的内容,此時可以使用more指令,每次隻顯示一頁,按下空格鍵可以顯示下一頁,按下q鍵退出顯示,按下h鍵可以擷取幫助。

ls | more

cd-進入工作目錄

所謂工作目錄,就是目前操作所在的目錄。

使用者在使用Linux的時候,經常需要更換工作目錄。cd指令可以幫助使用者切換工作目錄。

後面可跟絕對路徑,也可以跟相對路徑。如果省略目錄,則預設切換到目前使用者的主目錄。

還可以使用 “.”和“..”作為目錄名,其中 “.”表示目前目錄,“..”表示目前目錄的上層目錄,即父目錄。

cd  目錄名

pwd-顯示目前路徑

使用pwd指令可以顯示目前的工作目錄,該指令很簡單,直接輸入pwd即可,後面不帶參數。

mkdir-建立目錄

可使用mkdir指令建立一個新的目錄。需要注意的是建立目錄的名稱不能與目前目錄中已有的目錄或檔案同名,并且目錄建立者必須對目前目錄具有寫權限。該指令格式如下:

mkdir [參數] 目錄名

rmdir-删除目錄

可使用rmdir指令删除一個指定名字的目錄。執行rmdir的使用者必須對目前目錄具有寫權限。該指令格式如下:

rmdir [參數] 目錄名

繼續閱讀