推薦 實驗樓網站 線上的linux環境和課程學習
這是一些摘要和筆記
UNIX/Linux曆史簡介
作業系統始于二十世紀 50 年代,當時的作業系統能運作批處理程式。但是不能實作互動。互動式作業系統也稱作分時
作業系統
UNIX由貝爾實驗室推出 1973 年,Dennis Ritchie 和 Ken Thompson 發明了 C 語言,而後寫出了 UNIX 的核心
Berkeley 大學的 Bill Joy 針對他的機器修改 UNIX 源碼,稱為BSD(Berkeley Software Distribution)Bill Joy 是 Sun 公司的創始人;
因為 UNIX 規定:“不能對學生提供源碼”,Tanenbaum 老師自己編寫相容于 UNIX 的Minix,用于教學;
Stallman 開始 GNU(GNU\'s Not Unix)項目,創辦 FSF(Free Software Foundation)基金會;
産品:GCC、Emacs、Bash Shell、GLIBC; 倡導“自由軟體”;GNU的軟體缺乏一個開放的平台運作,隻能在UNIX上運作;
自由軟體指使用者可以對軟體做任何修改,甚至再發行,但是始終要挂着GPL的版權;自由軟體是可以賣的,但是不能隻賣軟體,而是賣服務、手冊等;
1991 年,芬蘭赫爾辛基大學的研究所學生 Linus Torvalds(linux之父) 基于 gcc、bash 開發了針對 386 機器的 Linux 核心;
什麼是linux發行版:Linux 主要作為Linux發行版(通常被稱為"distro")的一部分而使用。這些發行版由個人,松散組織的團隊,以及商業機構和志願者組織編寫。它們通常包括了其他的系統軟體和應用軟體,以及一個用來簡化系統初始安裝的安裝工具,和讓軟體安裝更新的內建管理器。
Linux 桌面環境介紹
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終端
Shell
通常在圖形界面中對實際體驗帶來差異的不是上述的不同發行版的各種終端模拟器,而大都是這個 Shell(殼),有殼就有核,這裡的核就是指的 UNIX/Linux 核心,Shell 是指“提供給使用者使用界面”的軟體(指令解析器),類似于 DOS 下的 command(指令行)和後來的 cmd.exe。普通意義上的 Shell 就是可以接受使用者輸入指令的程式。它之是以被稱作 Shell 是因為它隐藏了作業系統底層的細節。同樣的 Unix/Linux 下的圖形使用者界面 GNOME 和 KDE,有時也被叫做“虛拟 shell”或“圖形 shell”。
在 UNIX/Linux 中比較流行的常見的 Shell 有 bash,zsh,ksh,csh 等等,Ubuntu 終端預設使用的是 bash,預設的桌面環境是 GNOME 或者 Unity(基于 GNOME),但我們的環境中使用的分别是zsh 和 xfce。
終端模拟器
為了在圖形界面下為了實作讓我們在一個視窗中完成接受使用者輸入和顯示輸出,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]來完成。
終端指令
按鍵 作用
Ctrl+c 強制停止目前程式
Ctrl+d 鍵盤輸入結束或退出終端
Ctrl+s 暫定目前程式,暫停後按下任意鍵恢複運作
Ctrl+z 将目前程式放到背景運作,恢複到前台為指令fg
Ctrl+a 将光标移至輸入行頭,相當于Home鍵
Ctrl+e 将光标移至輸入行末,相當于End鍵
Ctrl+k 删除從光标所在位置到行末
Alt+Backspace 向前删除一個單詞
Shift+PgUp 将終端顯示向上滾動
Shift+PgDn 将終端顯示向下滾動
學會使用通配符*和?
通配符不用在指令中,而是在參數中用做模糊比對
touch love_{1..10}_linux.txt用touch建立多個檔案
Shell 常用通配符:
字元 含義
* 比對 0 或多個字元
? 比對任意一個字元
[list] 比對 list 中的任意單一字元
[!list] 比對 除list 中的任意單一字元以外的字元
[c1-c2] 比對 c1-c2 中的任意單一字元 如:[0-9] [a-z]
{string1,string2,...} 比對 sring1 或 string2 (或更多)其一字元串
{c2..c2} 比對 c1-c2 中全部字元 如{1..10}
在 Linux 環境中,如果你遇到困難,可以使用man 指令,它是Manual page的縮寫。
區段 說明
1 一般指令
2 系統調用
3 庫函數,涵蓋了C标準函數庫
4 特殊檔案(通常是/dev中的裝置)和驅動程式
5 檔案格式和約定
6 遊戲和屏保
7 雜項
8 系統管理指令和守護程序
$ man 1 ls會顯示第一區段中的ls指令man頁面。
所有的手冊頁遵循一個常見的布局,其為通過簡單的 ASCII 文本展示而優化,而這種情況下可能沒有任何形式的高亮或字型控制。一般包括以下部分内容:
NAME(名稱)
該指令或函數的名稱,接着是一行簡介。
SYNOPSIS(概要)
對于指令,正式的描述它如何運作,以及需要什麼樣的指令行參數。對于函數,介紹函數所需的參數,以及哪個頭檔案包含該函數的定義。
DESCRIPTION(說明)
指令或函數功能的文本描述。
EXAMPLES(示例)
常用的一些示例。
SEE ALSO(參見)
相關指令或函數的清單。
想要獲得更詳細的幫助,你還可以使用info指令,不過通常使用man就足夠了。如果你知道某個指令的作用,隻是想快速檢視一些它的某個具體參數的作用,那麼你可以使用--help參數,大部分指令都會帶有這個參數