===============第二節 Linux下C語言開發基礎===========linux
********************** 重要知識點總結梳理*********************web
1、學習目標shell
一、實驗樓環境介紹 vim
二、經常使用 Shell 命令及快捷鍵 bash
三、Linux 使用小技巧服務器
2、學習資源架構
一、課程資源:https://www.shiyanlou.com/courses/413(實驗一,課程邀請碼:W7FQKW4Y)less
二、Linux 基礎入門:https://www.shiyanlou.com/courses/1編輯器
三、學習過程參考:任務指導書函數
3、學習記錄
一、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終端:
(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.命令行操做體驗
(1)重要快捷鍵:
[Tab]:命令補全
補全命令,補全目錄,補全命令參數
[Ctrl+c]:強行終止當前程序(你能夠放心它並不會使終端退出)。
如:
$ tail (如圖)
又或者輸入:
$ find /
其餘一些經常使用快捷鍵
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 <command_name>
好比你想查看 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 3 printf
全部的手冊頁遵循一個常見的佈局,其爲經過簡單的 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
*****介紹一個能夠輸出圖形字符的命令banner:
你能夠先使用以下命令安裝:
$ sudo apt-get update;sudo apt-get install sysvbanner
而後:
$ banner shiyanlou
或者你以爲這字體很差看,那麼你還可使用默認已經安裝的一個命令printerbanner:
$ printerbanner -w 50 A
'-w'參數指定打印寬度,由於咱們的環境在屏幕中顯示比較小,必需要加上寬度限制。
還有兩個相似的命令toilet,figlet,做爲做業安裝試用。
***********************遇到的問題及解決***********************
一、有些命令試驗不明顯,沒法自主操做。
先行記錄在筆記中,往後練習時就能運用。
二、對於ls *.txt命令中空格沒有太在乎,致使操做輸不出結果。通過反覆試驗觀察才發現其中有個空格。