1. 程式人生 > >【Linux】-- 認識bash shell

【Linux】-- 認識bash shell

什麽 它的 輕松 你會 管理系 即使 文件夾 win tps

技術分享圖片

一、前言

  我們知道管理整個計算機硬件的其實是系統的內核,這個內核是需要被保護的,所以我們一般用戶就只能通過shell來跟內核通信,以讓內核達到我們所想要達到的工作。那麽Linux系統有多少shell可用呢?為什麽我們要使用shell?下面分別來談一談。

二、什麽是shell?

  要弄明白shell是什麽,首先要弄明白硬件、內核與shell的關聯,如下圖:

    技術分享圖片

  操作系統其實就是一組軟件,由於這組軟件在控制整個硬件與管理系統的活動監測,若用戶應用不當,將會使得整個系統崩潰,所以當然不能夠隨便被一些沒有管理能力的終端用戶隨意使用。但是總是需要讓用戶操作系統的,所以就有了在操作系統上發展的應用程序。用戶可以通過應用程序來指揮內核,讓內核達到我們所需要的硬件任務。因為應用程序在操作系統角色圖中的最外層,就如同雞蛋的外殼一樣,因此這個也就被稱為shell。

  是不是所用的應用程序都可以稱為shell呢?當然不是,我們還需要從功能來對shell進行定義,shell的功能只是提供用戶操作系統的一個接口,因此這個接口要能調用其他的軟件才行,例如vi,mkfs等命令其實都是獨立的應用程序,但我們能通過shell(就是命令行模式)來操作這些應用程序,讓這些應用程序調用內核來運行所需的工作。shell就是一個命令解釋器。現在是不是有些理解了?

  那麽我現在來對什麽是shell做一個總結

只要能夠操作應用程序的接口都能夠稱為shell。狹義的shell指的是命令行方面的軟件,包括之後我們介紹的bash等。廣義的shell則包括圖形界面的軟件,因為圖像界面其實也能夠操作各種應用程序來調用內核工作。

那麽接下來我們對shell進行分類

  從界面角度來看,shell分為圖形化界面shell(例如windows explorer,Linux下的kDE、GNOME)和命令行界面shell。

  這是百度百科對於explorer的解釋  

explorer.exe進程為用戶提供了圖形用戶界面(也稱為圖形殼),技術分享圖片Explorer 圖標簡單的說就是用來顯示系統的桌面環境,包括桌面圖標和文件管理。另外請不要將此進程與瀏覽器進程(iexplore.exe)混淆。

  從使用角度來看,shell分為交互式和非交互式。

  交互式:在shell中鍵入指令,計算機執行指令返回結果,這種一問一答的方式就是交互式shell。

  非交互式:我們將一些命令寫在文件中,shell讀取這些文件中的命令,並將這些命令進行執行,當shell執行到文件末尾就完成了它的任務退出。我們常用的shell腳本就是非交互式shell

三、為什麽要學習命令行界面的shell?

  1、操作統一化

    盡管有很多軟件(如Linux下的X window)可以幫助我們很簡單的設置好我們的主機,盡管它們界面親善,功能強大。但不同的軟件使用起來是有差異的,即使是相同的軟件也是會有版本差異的,甚至不同的linux發行版所設計的x window界面也都不相同,這樣會造成學習方面的困擾。

    命令行shell不同,幾乎所有Linux發行版使用的bash都是一樣的,這樣就可以輕松切換不同的發行版,做到“一法通、萬法通”。

  2、遠程管理速度快

    Linux的管理經常需要通過該遠程連接,而聯機時命令行界面的傳輸速度一定比較快,而且,較不容易出現斷線或者是信息外流的問題。

  3、Linux的核任督二脈:shell

    學習shell的好處多多,如果你是個系統管理員,或者有心要管理系統的話,那麽shell與shell script真的有必要看一看,它就像“打通任督二脈,任何武功都能隨你應用”一樣。

四、bash shell的功能

  既然bash是Linux默認的shell,那麽這個shell有什麽好處,為什麽Linux要使用它作為默認的shell呢?bash主要的優點有下面幾個:

  1、命令記憶功能

    只有在命令行中按上下鍵就可以找到前/後一個輸入的命令,默認的命令記憶功能可以達到1000個,這些命令記錄放在主文件夾內的.bash_history中。

  2、命令與文件補全功能(tab鍵)

  3、命令別名設置功能(alias)

  查看系統內所有別名:

  技術分享圖片

  給命令ls -al設置別名la:

  技術分享圖片

  4、作業控制臺、前臺、後臺控制

  這一部分後面在文章:Linux過程控制中在詳細介紹。

  5、程序腳本(shell script)

  將平時管理系統常需要執行的連續命令寫成一個文件,該文件並且可以通過交互的方式來進行主機的檢測工作。也可以通過shell提供的環境變量及相關命令來設計。相當於一個小型的程序語言,功能相當強大。

  6、通配符

   除了完整的字符串之外,bash還支持許多通配符來幫助用戶查詢與命令執行。

   舉例:使用“ls-l /usr/bin/X*,可以知道/usr/bin下面有多少以X開頭的文件。

五、bash shell的內置命令

  輸入man bash可以查看bash的說明文檔,如果你瀏覽過這個文檔,你會發現這個說明文檔中有其它的文件說明,舉例來說,cd命令的說明就在這個文檔中,這是因為為了方便shell的操作,bash已經“內置”了很多命令,例如上面提到的cd。

  通過type命令可以知道每個命令是來自於外部命令(指的是其他非bash所提供的命令)或是內置在bash中的命令。

  技術分享圖片

  技術分享圖片

  利用type找到後面的名稱時,如果後面接的名稱並不能以執行文件的狀態被找到 ,那麽該名稱是不會被顯示出來的。也就是說type找的是“執行文件”而不是一般的文件名,這也進一步說明了上面說的每一個命令都是一個應用程序。

【Linux】-- 認識bash shell