2.1 shell的簡介、功能、命令格式以及文件目錄的介紹

一、 Shell

1.1 Shell簡介

對於圖形界面,用戶點擊某個圖標就能啓動某個程序;對於命令行,用戶輸入某個程序的名字(可以看做一個命令)就能啓動某個程序。這兩者的基本過程都是類似的,都需要查找程序在硬盤上的安裝位置,然後將它們加載到內存運行。

換句話說,圖形界面和命令行要達到的目的是一樣的,都是讓用戶控制計算機。

然而,真正能夠控制計算機硬件(CPU、內存、顯示器等)的只有操作系統內核(Kernel),圖形界面和命令行只是架設在用戶和內核之間的一座橋樑。

由於安全、複雜、繁瑣等原因,用戶不能直接接觸內核(也沒有必要),需要另外再開發一個程序,讓用戶直接使用這個程序;該程序的作用就是接收用戶的操作(點擊圖標、輸入命令),並進行簡單的處理,然後再傳遞給內核。如此一來,用戶和內核之間就多了一層“代理”,這層“代理”既簡化了用戶的操作,也保護了內核。

用戶界面和命令行就是這個另外開發的程序,就是這層“代理”。在Linux下,這個命令行程序叫做 Shell

Shell 主要用來開發一些實用的、自動化的小工具,而不是用來開發具有複雜業務邏輯的中大型軟件,例如檢測計算機的硬件參數、一鍵搭建Web開發環境、日誌分析等,Shell 都非常合適。

使用 Shell 的熟練程度反映了用戶對 Linux 的掌握程度,運維工程師、網絡管理員、程序員都應該學習 Shell。

尤其是 Linux 運維工程師,Shell 更是必不可少的,是必須掌握的技能,它使得我們能夠自動化地管理服務器集羣,否則你就得一個一個地登錄所有的服務器,對每一臺服務器都進行相同的設置,而這些服務器可能有成百上千之多,會浪費大量的時間在重複性的工作上。

1.2 常見的shell

知道什麼是Shell 之後,那麼我們來了解一下 Linux 使用的是哪一個 shell 呢?什麼!哪一個?難道說 shell 不就是『一個 shell 嗎?』哈哈!那可不!由於早年Unix 年代,發展者衆,所以由於 shell 依據發展者的不同就有許多的版本,例如常聽到的 Bourne SHell (sh) 、在 Sun 裏頭預設的 C SHell、商業上常用的 K SHell、, 還有TCSH 等等,每一種 Shell 都各有其特點。至於 Linux 使 用的這一種版本就稱爲『 Bourne Again SHell (簡稱 bash) 』,這個 Shell 是 Bourne Shell 的增強版 本,也是基準於 GNU 的架構下發展出來的呦!

那麼目前我們的 Linux (以 CentOS 7.x 爲例) 有多少我們可以使用的 shells 呢? 你可以檢查一下 /etc/shells 這個文件,至少就有底下這幾個可以用的 shells:

/bin/sh (已經被 /bin/bash 所取代) 

/bin/bash (就是 Linux 預設的 shell)

· /bin/tcsh (整合 C Shell ,提供更多的功能) 

/bin/csh (已經被 /bin/tcsh 所取代)

利用命令cat /etc/shells 可查看如圖所示

clip_image004

1.3 Shell功能:

✦命令歷史 (history)

bash 的功能裏頭,相當棒的一個功能就是『他能記住使用過的指令!』 這功能真的相當的棒!因爲我們只需要在指令列按『↑↓鍵』就可以找到前/後一個輸入的指令! 默認的指令記憶功能可以到達 1000 個!也就是說,你曾經下達過的指令幾乎都被記錄下來了。

✦命令與文件補全功能: ([tab] 按鍵的好處)

[tab]這個按鍵的功能就是在 bash 裏頭纔有的啦!常常在 bash 環境中使用 [tab] 是個很棒的習慣喔!因爲至少可以讓你 1)少打很多字; 2)確定輸入的數據是正確的! 使用 [tab] 按鍵的時機依據 [tab] 接在指令後或參數後而有所不同。

✧[Tab] 接在一串指令的第一個字的後面,則爲命令補全; 

✧[Tab] 接在一串指令的第二個字以後時,則爲『文件補齊』! 

✧若安裝 bash-completion 軟件,則在某些指令後面使用 [tab] 按鍵時,可以進行『選項/參數的補齊』功能!

所以說,如果我們想要知道在我們的環境當中所有以 c 爲開頭的指令呢?就按下『 c[tab][tab] 』就好啦! ^_^! 是的!真的是很方便的功能,所以,有事沒事,在 bash shell 底下,多按幾次 [tab] 是一個不錯的習慣!

✦別名機制: (alias)

假如我們需要知到一個目錄的文件屬性,那麼我就必須要下達 『 ls -dl 』這樣的指令串,唉!真麻煩,有更簡單的取代方式嗎?就使用命令別名呀!例如直接lk這個自定義的命令來取代上面的命令,也就是說, lk 會等於 ls -dl 這樣的一個功能,那麼要如何作呢?就使用 alias 即可!在指令列輸入 alias 就可以知道目前的命令 別名有哪些了!也可以直接下達命令來設定別名呦:

✧ alias lk=‘ls -dl‘

✦通配符: (Wildcard)

除了完整的字符串之外, bash 還支持許多的通配符來幫助用戶查詢與指令下達。舉例來說,想要 知道 /usr/bin 底下有多少以 X 爲開頭的文件嗎?使用:『 ls -l /usr/bin/X* 』就能夠知道囉~此外, 還有其他可供利用的通配符,之後我們再詳細解釋,這些都能夠加快使用者的操作呢!

此外,Shell還具有如下功能:

✧重定向、管道、命令替換、Shell編程等等。

1.4 常用的Shell元字符及含義

clip_image006

二、 命令格式和通配符

2.1 命令格式

Shell命令的一般格式爲

上述指令詳解如下:

1. 一行指令中第一個輸入的部分絕對是『指令(command)』或『可執行文件案(例如批次腳本,script)』 2. command 爲指令的名稱,例如變換工作目錄的指令爲 cd 等等;

3. 中刮號[]並不存在於實際的指令中,而加入選項設定時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;

4. arguments1 arguments 2.. 爲依附在選項後面的參數,或者是 command 的參數;

5. 指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視爲一格。所以空格是很重要的特殊字符!;

6. 按下[Enter]按鍵後,該指令就立即執行。[Enter]按鍵代表着一行指令的開始啓動。

7. 指令太長的時候,可以使用反斜槓 (\) 來跳脫[Enter]符號,使指令連續到下一行。注意!反斜槓後就立刻接特殊字符,才能跳脫!

8.並非所有命令的格式都遵從以上規則,如dd、find。

2.2通配符

UT{_2R4T90@RBX[KI0`5}VS

★:*能匹配文件或目錄名中的.,但不能匹配首字符是.的文件或目錄。要匹配隱藏文件應使用.*。

2.3 Linux文件類型

clip_image012

clip_image014

第一個字符代表這個文件是『目錄、文件或鏈接文件等等』:

o 當爲[ d ]則是目錄,例如上表檔名爲『.config』的那一行;

o 當爲[ - ]則是文件,例如上表檔名爲『initial-setup-ks.cfg』那一行;

o 若是[ l ]則表示爲連結檔(link file);

o 若是[ b ]則表示爲裝置文件裏面的可供儲存的接口設備(可隨機存取裝置);

o 若是[ c ]則表示爲裝置文件裏面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)。

o 若是[ s ]則表示爲套接字;

o 若是[ p ]則表示爲管道;

2.4 Linux的目錄結構

clip_image016

clip_image018

參考文獻:

http://c.biancheng.net/cpp/view/6994.html

鳥哥的Linux私房菜基礎學習篇(第四版)

https://www.cnblogs.com/xiaochina/p/9158067.html

https://blog.csdn.net/mzl87/article/details/79673012

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