shell

管理整個計算機硬件的其實是操作系統的內核(kernel),這個內核是需要被保護的,所以我們一般用戶就只能通過shell來跟內核通信,以讓內核達到我們所想要達到的工作。

我們必須要通過“Shell”將我們輸入的命令與內核通信,好讓內核可以控制硬件來準確無誤地工作。

用戶可以通過應用程序來指揮內核,讓內核達成我們所需要的硬件任務,應用系統其實是在最外層,就如同雞蛋的外殼一樣,因此這個也就被稱呼爲shell。

其實shell的功能只是提供用戶操作系統的一個接口,因此這個shell需要可以調用其他軟件纔好。只要能夠操作應用程序的接口都能夠被稱爲shell。狹義的shell指的是命令行方面的軟件,包括bash等。

Linux默認就是使用bash。

爲什麼我們系統上合法的shell要寫入/etc/shells 這個文件?這是因爲系統某些服務在運行過程中,會去檢查用戶能夠使用的shells ,而這些shell 的查詢就是藉助/etc/shells這個文件。


當我登錄的時候系統就會給我一個shell讓我來工作了。而這個登錄取得的shell就記錄在/etc/passwd 這個文件內。


在每一行的最後一個數據,就是你登錄後可以取得的默認的shell。

bash shell 的功能

/bin/bash 是linux默認的shell。bash 主要的優點:

命令記憶能力(history)

它能記憶使用過的命令,命令記錄在你的主文件夾內的.bash_history中。~/.bash_history 記錄的是前一次登錄以前所執行過的命令,而至於這一次登錄所執行的命令都被暫存在臨時內存中,當你成功註銷系統後,該命令記憶纔會記錄到.bash_history當中。最大的好處就是可以查詢曾經做過的操作。如此可以知道你的執行步驟,那麼就可以追蹤你曾執行過的命令,以作爲排錯工具。

命令別名設置功能(alias)

你在命令行輸入alias就可以知道目前的命令別名有哪些了。也可以直接執行命令來設置別名。

alias ll='ls -al'


作業控制、前臺、後臺控制(job control, foreground, background)

作業控制,可以讓我們隨時將工作丟到後臺中執行。而不怕不小心使用了[Ctrl+C] 來中斷該進程。此外也可以在單一登錄的環境中達到多任務的目的。

程序腳本(shell script)

通配符(Wildcard)

除了完整的字符串之外,bash還支持許多的通配符來幫助用戶查詢與命令執行。舉例來說,想要知道/usr/bin 下面有多少以X爲開頭的文件嗎?使用“ls -l /usr/bin/X*” 就知道了。

bash shell 的內置命令:type

type [-tpa] name

type: 不加任何參數時,type會顯示出name是外部命令還是bash 內置命令

-t: 當加入-t 參數時,type會將name以下面這些字眼顯示出它的意義:

file:表示爲外部命令

alias: 表示該命令爲命令別名所設置的名稱;

builtin: 表示該命令爲bash 內置的命令功能。

-p: 如果後面接的name爲外部命令時,纔會顯示完整文件名;

-a: 會由PATH 變量定義的路徑中,將所有含name 的命令都列出來,包含alias













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章