標籤:shell ubuntu bash gnu linux
上篇文章只要是講了Linux一些基本概述。
我們這次開始打好命令列操作的基礎,以後再靠一些圖形化的操作來提升我們的工作效率。
既然要學習Linux作業系統,我們就要去學習它的命令,總所周知,Linux的圖形介面是不穩定的,它的圖形介面只不過是一個應用程式,所以很容易奔潰。所以我們應該學習圖形下面的一些機制,包括用命令列去實現一些東西,用shell去實現一些東西,包括去理解它的內部機制。
當然這些命令去死記硬背是不行的。
啟動虛擬機器,啟動Ubuntu。
圖形介面 切換到 命令列 是按 ctrl+alter+ F2 或 F3 或 F4
命令列 切換回 圖形介面 ctrl+alter+ F7
1、第一個命令:ls
列出檔案下的所有檔案,ls其實就是list的一個縮寫
現在我們來分析一下這個命令是怎麼實現的,實現機制是什麼樣的?
從字面理解,shell是貝殼/外殼的意思。
比方說 A--》這個是作業系統的核心kernel,在kernel之上呢我們就會有使用者介面的定義,然後再往上我們有一個外殼把它包裹起來,這個外殼裡有很多命令工具,我們通過這些命令工具和編寫我們自己的Shell指令碼命令,有點類似於Windows下面的批處理,通過這些來實現對下面的訪問。
所以ls的實現過程是這樣的:
(1)輸入了ls
(2)ls->去相應的目錄去找shell命令程式,那這個shell去哪裡找呢,當然是在path裡找,那麼這個path在哪裡設定呢?環境變數。
(3)找到了之後就要執行,執行是基於Shell的一些基本庫,比如說在Ubuntu裡面我們的Shell採用的是Bash
(4)最後就是訪問kernel核心
現在我們來看一下這個path是在哪裡配置的,這樣我們才能知道ls命令在哪裡。
我們看path之前呢,先看一個新的命令
whereis ls
列印出來ls: /bin/ls /usr/share/man/man1/ls.1.gz
我們來尋找一下/bin/ls這個目錄
ls /bin/ls
列印出來 /bin/ls 顯示是綠色,說明它是個可執行檔
那下面我們看一下環境變數是否真的指向 /bin/ls ,那麼環境變數在哪呢?我們想象一下我們之前說的那個文件夾是做配置的,好像是etc這個檔案夾對不對。
我們進入etc檔案夾看一下
cd etc
那麼環境變數是在 /etc/environment下,我們ls一下
ls /etc/environment
列印出來 /etc/environment , 我們得知是一個一般檔案
我們用vi工具開啟該檔案
vi /etc/environment
我們可以看到確實有個PATH
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games"
也就是說ls執行的時候就會去這些檔案下去找可執行檔
通過bash對ls進行解析
2、Linux是如何?Shell的
(1)Bash
(2)Coreutils
要瞭解這兩塊我們不得不去說一下GNU,去查一下GNU的翻譯
Bash和Coreutils是在GNU上開發的
GNU的官網: http://www.gun.org/
裡面有對於GNU Bash的介紹
下載一下bash
我們可以通過bash -version查看當前bash版本
怎麼辦bash移植到我們的系統裡面,不用命令怎麼手動移植,可以查看協助文檔
一定要理解GUN與Linux的關係
Shell命令機制