標籤:
我們通過shell將我們輸入的命令與核心通訊,好讓核心可以控制硬體來正確無誤地工作
bash是我們Linux預設的shell
使用者介面(Shell,application)--------核心(Kernel)-------硬體(Hardware)
?
作業系統其實是一組軟體,由於這組軟體在控制整個硬體與管理系統的活動監測,如果這組軟體被使用者隨便操作,若使用者應用不當,將會使得整個系統崩潰。
因為作業系統管理的是整個硬體功能,所以當然不能夠被隨便被一些沒有管理能力的終端使用者隨意使用。
但是我們總是需要讓使用者作業系統的,所以就有了在作業系統上發展的應用程式。
軟體=程式+文檔=資料結構+演算法+文檔
shell的功能只是提供使用者作業系統的一個介面。
像cmake,man,chown這些命令都是獨立安裝的應用程式,但是我們可以通過shell(就是命令列模式)來操作這些應用程式,讓這些應用程式調用核心來運行所需的工作。
只要能夠操作應用程式的介面都可以稱為shell
狹義的shell時命令方面的軟體如bash,廣義的shell包括圖形介面的軟體
為什麼要學習shell?
1.X Window與Web介面工具一樣,介面雖然親善,功能雖然強大,但畢竟它是將所有利用到的軟體整合在一起的一組應用程式而已,並非一個完整的套件,所以某些時候當你升級或者使用其它套件管理模組時,就會造成設定的困擾。而且不同的distribution設計的X Window介面也不同,造成學習的困擾。而幾乎所有distributions使用的bash都是一樣的。
2.遠端管理,命令列介面比較快:Linux管理經常需要遠程聯機,聯機時命令列傳輸速度一定比較快。而且,較不容易出現斷線或者時資訊外流的問題。
3.是Linux的任督二脈,書到用時方恨少:如果真的有心想要將你的主機管理好,那麼良好的shell程式編寫時一定需要的 。
shell有很多種,如Bournce SHell(sh),Sun預設的C SHell、商業常用的K SHell, 還有TCSH等
一般是“Bournce Again Shell”(bash),時sh的增強班,也是基於GUN的架構下發展出來的
要查看Linux主機上有多上shell,可以查看/etc/shells檔案
/bin/sh已經被/bin/bash替代
為什麼我們系統上合法的shell要寫入/etc/shells這個檔案?
因為系統的某些服務在運行過程中,會去檢查使用者能夠使用的shells,而這些shell的查詢就是藉助/etc/shells這個檔案
使用者什麼時候可以取得shell來工作呢?還有使用者預設會使用哪種shell?
查看/etc/passwd就知道了,在使用者登入時取得預設的shell
一些奇怪的shell,以後再看
bash時GUN計劃中重要的工具軟體之一
bash的主要優點:
1.命令記憶能力(history)
預設記憶功能一般有1000個,記錄在/home/使用者名稱/.bash_history(沒有home目錄的使用者怎麼辦)
.bash_history記錄的是前一次登入以前所執行的命令,這次登入所執行的命令被暫時存在臨時記憶體中,當成功登出系統後,該命令記憶才會記錄再.bash_history中
2.命令與檔案補全功能:tab功能
3.命令別名設定功能(alias)
4.作業控制、前台後台控制(job control,foreground,background)
可以隨時將工作丟到後台執行,不怕不小心ctrl+c終端進程。ctrl+z
也使得可以在單一登入的環境中達到多任務的目的
5.程式指令碼(shell script)
shell scripts可以將平時管理系統常需要執行的連續命令寫成一個檔案,該檔案並且可以通過互動的方式進行主機的檢車工作
6.萬用字元
協助使用者查詢和命令執行,加快使用者操作 如ls -l /usr/bin/X*
如果shell命令比較長,可以"\[Enter]"換行執行
認識bash這個shell