一、桌面環境介紹
相對於現在的 Windows 系統,UNIX/Linux 本身是沒有圖形界面的,我們通常在 UNIX/Linux 發行版上看到的圖形界面實際都只是運行在 Linux 系統之上的一套軟件,類似 Windows95 之前的 Windows 的圖形界面實則也只是運行在 DOS 環境的一套軟件。而 Linux 上的這套軟件以前是 XFree86,現在則是 xorg(X.Org),而這套軟件又是通過 X 窗口系統(X Window System,也常被稱爲 X11 或 X)實現的,X 本身只是工具包及架構協議,而 xorg 便是 X 架構規範的一個實現體,也就是說它是實現了 X 協議規範的一個提供圖形界面服務的服務器,就像實現了 http 協議提供 web 服務的 Apache 。如果只有服務器也是不能實現一個完整的桌面環境的,當然還需要一個客戶端,我們稱爲 X Client,像如下幾個大家熟知也最流行的實現了客戶端功能的桌面環境KDE,GNOME,XFCE,LXDE 。
二、Linux終端
1.終端概念
相對於現在的 Windows 系統,UNIX/Linux 本身是沒有圖形界面的,我們通常在 UNIX/Linux 發行版上看到的圖形界面實際都只是運行在 Linux 系統之上的一套軟件,類似 Windows95 之前的 Windows 的圖形界面實則也只是運行在 DOS 環境的一套軟件。而 Linux 上的這套軟件以前是 XFree86,現在則是 xorg(X.Org),而這套軟件又是通過 X 窗口系統(X Window System,也常被稱爲
X11 或 X)實現的,X 本身只是工具包及架構協議,而 xorg 便是 X 架構規範的一個實現體,也就是說它是實現了 X 協議規範的一個提供圖形界面服務的服務器,就像實現了 http 協議提供 web 服務的 Apache 。如果只有服務器也是不能實現一個完整的桌面環境的,當然還需要一個客戶端,我們稱爲 X Client,像如下幾個大家熟知也最流行的實現了客戶端功能的桌面環境KDE,GNOME,XFCE,LXDE 。不過要注意的是這裏所說的終端(Terminal)和控制檯(Console)是有區別的。終端本質上是對應着
Linux 上的 /dev/tty 設備,Linux 的多用戶登陸就是通過不同的 /dev/tty 設備完成的,Linux 默認提供了 6 個純命令行界面的 “terminal”(準確的說這裏應該是 6 個 virtual consoles)來讓用戶登錄。在物理機系統上你可以通過使用[Ctrl]
+[Alt]
+[F1]~[F6]
進行切換,不過在我們的在線實驗環境中可能無法切換,因爲特殊功能按鍵會被你的主機系統劫持。當你切換到其中一個終端後想要切換回圖形界面,你可以按下[Ctrl]
+[Alt]
+[F7]
來完成。
2.Shell
通常在圖形界面中對實際體驗帶來差異的不是上述的不同發行版的各種終端模擬器,而是這個 Shell(殼)。有殼就有核,這裏的核就是指 UNIX/Linux 內核,Shell 是指“提供給使用者使用界面”的軟件(命令解析器),類似於 DOS 下的 command(命令行)和後來的 cmd.exe 。普通意義上的 Shell 就是可以接受用戶輸入命令的程序。它之所以被稱作 Shell 是因爲它隱藏了操作系統底層的細節。同樣的 UNIX/Linux 下的圖形用戶界面 GNOME 和 KDE,有時也被叫做“虛擬 shell”或“圖形 shell”。
UNIX/Linux 操作系統下的 Shell 既是用戶交互的界面,也是控制系統的腳本語言。當然這一點也有別於 Windows 下的命令行,雖然該命令行也提供了很簡單的控制語句。在 Windows 操作系統下,有些用戶從來都不會直接使用 Shell,然而在 UNIX 系列操作系統下,Shell 仍然是控制系統啓動、X11 啓動和很多其它實用工具的腳本解釋程序。
在 UNIX/Linux 中比較流行的常見的 Shell 有 bash、zsh、ksh、csh 等等,Ubuntu 終端默認使用的是 bash,默認的桌面環境是 GNOME 或者 Unity(基於 GNOME),但我們的環境中使用的分別是 zsh 和 xfce。
3.命令行操作
1)輸入 輸出
輸入當然就是打開終端,然後按鍵盤輸入,然後按回車,輸入格式一般就是這類的
輸出會返回你想要的結果,比如你要看什麼文件,就會返回文件的內容。如果只是執行,執行失敗會告訴你哪裏錯了,如果施行成功那麼會沒有輸出
#創建一個名爲文件,touch是一個命令touch file
#進入一個目錄,cd是一個命令cd /etc/
#查看當前所在目錄pwd
2)開始
打開終端運行shell
3)快捷鍵
【Tab】:使用Tab
鍵來進行命令補全,Tab
鍵一般是在字母Q
旁邊,這個技巧給你帶來的最大的好處就是當你忘記某個命令的全稱時可以只輸入它的開頭的一部分,然後按下Tab
鍵就可以得到提示或者幫助完成。當然不止補全命令,補全目錄、補全命令參數都是沒問題的
【Ctrl
+ C】:使用Ctrl+c
鍵來強行終止當前程序(你可以放心它並不會使終端退出)。
其他:
Ctrl+d |
鍵盤輸入結束或退出終端 |
Ctrl+s |
暫停當前程序,暫停後按下任意鍵恢復運行 |
Ctrl+z |
將當前程序放到後臺運行,恢復到前臺爲命令fg |
Ctrl+a |
將光標移至輸入行頭,相當於Home 鍵 |
Ctrl+e |
將光標移至輸入行末,相當於End 鍵 |
Ctrl+k |
刪除從光標所在位置到行末 |
Alt+Backspace |
向前刪除一個單詞 |
Shift+PgUp |
將終端顯示向上滾動 |
Shift+PgDn |
將終端顯示向下滾動 |
使用鍵盤上的方向上鍵↑
,恢復你之前輸入過的命令。
5)通配符
通配符是一先使用 touch 命令創建 2 個文件,後綴都爲 txt種特殊語句,主要有星號(*)和問號(?),用來對字符串進行模糊匹配(
比如文件名、參數名)。當查找文件夾時,可以使用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正字符.
終端裏面輸入的通配符是由 Shell 處理的,不是由所涉及的命令語句處理的,它只會出現在命令的“參數值”裏(它不能出現在命令名稱裏, 命令不記得,那就用Tab
補全)。當
Shell 在“參數值”中遇到了通配符時,Shell 會將其當作路徑或文件名在磁盤上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴展);否則就將該通配符作爲一個普通字符傳遞給“命令”,然後再由命令進行處理。總之,通配符實際上就是一種 Shell 實現的路徑擴展功能。在通配符被處理後, Shell 會先完成該命令的重組,然後繼續處理重組後的命令,直至執行該命令。
先使用 touch 命令創建 2 個文件,後綴都爲 txt
$ touch 123456.txt asdfg.txt
可以給文件隨意命名,假如過了很長時間,你已經忘了這兩個文件的文件名,現在你想在一大堆文件中找到這兩個文件,就可以使用通配符:
$ touch adsfasd.txt wergjlkas.txt
Shell 常用通配符:
字符 | 含義 |
---|---|
* |
匹配 0 或多個字符 |
? |
匹配任意一個字符 |
[list] |
匹配 list 中的任意單一字符 |
[!list] |
匹配 除list 中的任意單一字符以外的字符 |
[c1-c2] |
匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z] |
{string1,string2,...} |
匹配 string1 或 string2 (或更多)其一字符串 |
{c1..c2} |
匹配 c1-c2 中全部字符 如{1..10} |
在 Linux 環境中,如果你遇到困難,可以使用man
命令,它是Manual
pages
的縮寫。
Manual pages 是 UNIX 或類 UNIX 操作系統中在線軟件文檔的一種普遍的形式, 內容包括計算機程序(包括庫和系統調用)、正式的標準和慣例,甚至是抽象的概念。用戶可以通過執行man
命令調用手冊頁。
你可以使用如下方式來獲得某個命令的說明和使用方式的詳細介紹:
$ man <command_name>
比如你想查看 man 命令本身的使用方式,你可以輸入:
man man
通常情況下,man 手冊裏面的內容都是英文的,這就要求你有一定的英文基礎。man 手冊的內容很多,涉及了 Linux 使用過程中的方方面面。爲了便於查找,man 手冊被進行了分冊(分區段)處理,在 Research UNIX、BSD、OS X 和 Linux 中,手冊通常被分爲8個區段,安排如下:
區段 | 說明 |
---|---|
1 | 一般命令 |
2 | 系統調用 |
3 | 庫函數,涵蓋了C標準函數庫 |
4 | 特殊文件(通常是/dev中的設備)和驅動程序 |
5 | 文件格式和約定 |
6 | 遊戲和屏保 |
7 | 雜項 |
8 | 系統管理命令和守護進程 |
要查看相應區段的內容,就在 man 後面加上相應區段的數字即可,如:
$ man 1 ls
會顯示第一區段中的ls
命令 man 頁面。
所有的手冊頁遵循一個常見的佈局,爲了通過簡單的 ASCII 文本展示而被優化,而這種情況下可能沒有任何形式的高亮或字體控制。一般包括以下部分內容:
NAME(名稱)
該命令或函數的名稱,接着是一行簡介。
SYNOPSIS(概要)
對於命令,正式的描述它如何運行,以及需要什麼樣的命令行參數。對於函數,介紹函數所需的參數,以及哪個頭文件包含該函數的定義。
DESCRIPTION(說明)
命令或函數功能的文本描述。
EXAMPLES(示例)
常用的一些示例。
SEE ALSO(參見)
相關命令或函數的列表。
也可能存在其它部分內容,但這些部分沒有得到跨手冊頁的標準化。常見的例子包括:OPTIONS(選項),EXIT STATUS(退出狀態),ENVIRONMENT(環境),BUGS(程序漏洞),FILES(文件),AUTHOR(作者),REPORTING BUGS(已知漏洞),HISTORY(歷史)和 COPYRIGHT(版權)。
通常 man 手冊中的內容很多,你可能不太容易找到你想要的結果,不過幸運的是你可以在 man 中使用搜索/<你要搜索的關鍵字>
,查找完畢後你可以使用n
鍵切換到下一個關鍵字所在處,shift+n
爲上一個關鍵字所在處。使用Space
(空格鍵)翻頁,Enter
(回車鍵)向下滾動一行,或者使用j
,k
(vim
編輯器的移動鍵)進行向前向後滾動一行。按下h
鍵爲顯示使用幫助(因爲 man 使用 less 作爲閱讀器,實爲less
工具的幫助),按下q
退出。
想要獲得更詳細的幫助,你還可以使用info
命令,不過通常使用man
就足夠了。如果你知道某個命令的作用,只是想快速查看一些它的某個具體參數的作用,那麼你可以使用--help
參數,大部分命令都會帶有這個參數,如:
$ ls --help