Shell命令機制

2021-06-27 07:38:22 字數 1759 閱讀 9454

上篇文章只要是講了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的官網:

裡面有對於gnu bash的介紹

我們可以通過bash -version檢視當前bash版本

怎麼辦bash移植到我們的系統裡面,不用命令怎麼手動移植,可以檢視幫助文件

一定要理解gun與linux的關係

shell命令,shell迴圈,shell引數

touch hello.sh 建立乙個檔案 vi hello.sh 編輯文字 bin bash 指定bash解析器,centos預設的是bash解析器 echo helloworld echo helloworld 這兩句話效果相同,不過為了符合規範用第二種 執行指令碼,首先賦予指令碼最大許可權 c...

shell命令 xxd命令

xxd是二進位制檢視命令,預設將2檔案顯示為16進製制字串表示形式。看例子 root ambari dir cat t 31 root ambari dir xxd t 0000000 3331 0a 31.root ambari dir xxd ps t 33310a root ambari di...

shell 科普 Shell命令用法

ver 1.0 2013 08 11 11 59 20 if then fiexample if f file then 如果file是個檔案 echo 是乙個檔案。fi if 結束 if f file then 如果file是個檔案 echo 是乙個檔案。else echo 不是乙個檔案。fi i...