轉自‘實驗樓’原文在這裡
基本概念及操作
實驗介紹
本節實驗主要有:
1、實驗樓環境介紹 2、常用 Shell 命令及快捷鍵 3、Linux 使用小技巧
一、Linux 桌面環境介紹
相對於現在的 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,其中就有你看到的,實驗樓目前使用的 XFCE 桌面環境,部分老用戶可能可以回想起,實驗樓之前使用的環境是 LXDE。這也意味著在 Linux 上你可以自己選擇安裝不同的桌面環境,甚至可以定制自己的專屬桌面。
這裡講這麼多,主要是為了幫助你更好理解 Linux 的桌面環境是一個怎樣的概念,以及它跟 Windows 操作系統桌面的差異,實際它們之間是有著本質的差別的,希望清楚這些內容之後可以讓你忽略那些體驗上的差異,專心把精力放到 Linux 系統本身或者你正准備學習的某一門技術之上,這門實驗課後面的內容和實驗樓的其他課程便是為了幫助你實現以上兩個目標的。
二、Linux 桌面環境的使用
如果你對當前實驗桌面環境(xfce)的使用有任何困難,建議你先學習實驗樓入門基礎課程,對於其它桌面環境的使用,不在本課程的范圍之類,有興趣的用戶可以在自己計算機中安裝完整的 Linux 發行版或其 Live CD 體驗。
三、Linux終端
1.Terminal(終端)
通常在我們使用 Linux 時,我們並不是直接與系統打交道,而是通過一個叫做 Shell 的中間程序來完成的,在圖形界面下為了實現讓我們在一個窗口中完成接受用戶輸入和顯示輸出,Linux 系統還提供了一個叫做終端模擬器的程序(Terminal),下面幾個比較常見的終端模擬器,例如 gnome-terminal,kconsole,xterm,rxvt,kvt,nxterm 和 eterm,目前我們的實驗中的終端程序是 xfce 桌面環境自帶的 xfce-terminal。不過要注意的是這裡所說的終端(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.命令行操作體驗
如圖,雙擊桌面上的Xface終端圖標,打開終端,打開終端後會自動運行 Shell 程序,然後我們就可以輸入命令讓系統來執行了:
1).重要快捷鍵:
真正學習命令行之前,你先要掌握幾個十分有用,必需掌握的小技巧:
[Tab]
使用Tab鍵來進行命令補全,Tab鍵一般鍵盤是在字母Q旁邊,這個技巧給你帶來的最大的好處就是當你忘記某個命令的全稱時你可以只輸入它的開頭的一部分然後按下Tab鍵就可以得到提示或者幫助完成:
當然不止補全命令,補全目錄,補全命令參數都是沒問題的:
[Ctrl+c]
想想你有沒有遇到這種情況,當你在 Linux 命令行中無意輸入了一個不知道的命令,或者錯誤的使用了一個命令,導致在終端裡出現了你無法預料的情況,比如,只有光標在閃爍無法繼續輸入命令,或者不停地在輸出一大堆你不想要的結果。你想要立即停止並恢復到你可控的狀態,那該怎麼辦呢。這時候你就可以使用Ctrl+c鍵來強行終止當前程序(你可以放心它並不會使終端退出)。
嘗試輸入以下命令:
$ tail
然後你會發現你接下來的輸入都沒有任何反應了,只是將你輸入的東西顯示出來,現在你可以使用Ctrl+c,來中斷這個你目前可能還不知道是什麼的程序了。(在後續課程中我們會具體解釋這個tail命令是什麼)
又或者輸入:
$ find /
顯然這不是你想的結果,可以使用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 將終端顯示向下滾動
2).學會利用歷史輸入命令
很簡單,你可以使用鍵盤上的方向上鍵,恢復你之前輸入過的命令,你一試便知。
3).學會使用通配符
通配符是一種特殊語句,主要有星號(*)和問號(?),用來對對字符串進行模糊匹配(比如文件名,參數名)。當查找文件夾時,可以使用它來代替一個或多個真正字符;當不知道真正字符或者懶得輸入完整名字時,常常使用通配符代替一個或多個真正的字符。
終端裡面輸入的通配符是由 Shell 處理的,不是由所涉及到命令語句處理的,它只會出現在命令的“參數值”裡(它不用在 命令名稱裡, 命令不記得,那就用Tab補全)。當 Shell 在“參數值”中遇到了通配符時,Shell 會將其當作路徑或文件名去在磁盤上搜尋可能的匹配:若符合要求的匹配存在,則進行代換(路徑擴展);否則就將該通配符作為一個普通字符傳遞給“命令”,然後再由命令進行處理。總之,通配符 實際上就是一種 Shell 實現的路徑擴展功能。在 通配符被處理後, Shell 會先完成該命令的重組,然後再繼續處理重組後的命令,直至執行該命令。
先使用 touch 命令創建 2 個文件,後綴都為 txt:
$ touch adsfasd.txt wergjlkas.txt
可以給文件隨意命名,假如過了很長時間,你已經忘了這兩個文件的文件名,現在你想在你大堆其他文件中找到這兩個文本文件,就可以使用通配符:
$ ls *.txt
在創建文件的時候,如果需要一次性創建多個文件,比如:“love_1_linux.txt,love_2_linux.txt,… love_10_linux.txt”。在 Linux 中十分方便:
$ touch love_{1..10}_linux.txt
Shell 常用通配符:
字符 含義
* 匹配 0 或多個字符
? 匹配任意一個字符
[list] 匹配 list 中的任意單一字符
[!list] 匹配 除list 中的任意單一字符以外的字符
[c1-c2] 匹配 c1-c2 中的任意單一字符 如:[0-9] [a-z]
{string1,string2,…} 匹配 sring1 或 string2 (或更多)其一字符串
{c2..c2} 匹配 c1-c2 中全部字符 如{1..10}
4).學會在命令行中獲取幫助
在 Linux 環境中,如果你遇到困難,可以使用man 命令,它是Manual page的縮寫。
Manual pages 是在 UNIX 或類 UNIX 操作系統在線軟件文檔的一種普遍的形式。 內容包括計算機程序(包括庫和系統調用),正式的標准和慣例,甚至是抽象的概念。用戶可以通過執行 man 命令調用手冊頁。
你可以使用如下方式來獲得某個命令的說明和使用方式的詳細介紹:
$ man
比如你想查看 man 命令本身的使用方式,你可以輸入:
man man
通常情況下,man 手冊裡面的內容都是英文的,這就要求你有一定的英文基礎。man 手冊的內容很多,涉及了 Linux 使用過程中的方方面面,為了便於查找,是做了分冊(分區段)處理的,在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
作業
本課程會在每一節實驗結束部分介紹一個有趣的 Linux 命令,這一節介紹一個可以輸出圖形字符的命令banner,先看效果:
你可以先使用如下命令安裝:
$ sudo apt-get update;sudo apt-get install sysvbanner
然後:
$ banner shiyanlou
或者你覺得這字體不好看,那麼你還可以使用默認已經安裝的一個命令printerbanner:
$ printerbanner -w 50 A
‘-w’參數指定打印寬度,因為我們的環境在屏幕中顯示比較小,必須要加上寬度限制。
還有兩個類似的命令toilet,figlet,作為作業安裝試用。
拓展閱讀:
6個有趣的Linux命令
20個有趣的Linux命令
9個命令
8個命令