第一、二章學習筆記
Unix/Linux檔案系統採用數形組織結構
5、檔案型別
(1)目錄檔案:一個目錄可能包含其他的目錄和(非目錄)檔案。
(2)非目錄檔案
①常規檔案:包含普通文字或包含可執行的二進位制程式碼。
②特殊檔案:特殊檔案時/dev目錄中的條目。
(3)符號連結檔案:屬於常規檔案,其內容為其他檔案的路徑名。
Linux命令 ln -s aVeryLongFileName myLink
可建立一個符號連結檔案“myLink”,指向“aVeryLongFileName”。
6、Unix/Linux檔案系統樹的根節點(用“/”符號表示)稱為根目錄,或簡稱為根。檔案系統樹的每個結點都有以下表單的路徑名指定:
/a/b/c/d OR a/b/c/d
以“/”開頭的路徑名為絕對路徑名,反之則為相對於程序當前工作目錄(CWD)的相對路徑名。
pwd可以列印CWD的絕對路徑名
Unix/Linux命令
- ls:ls dirname:列出CWD或目錄的內容
- cd dirname:更改目錄
- pwd:列印CWD的絕對路徑名
- touch filename:更改檔名時間戳(如果檔案不存在,則建立檔案)
- cat filename:顯示檔案內容
- cp src dest:複製檔案
- mv src dest:移動或重新命名檔案。
- mkdir dirname:建立目錄
- rmdir dirname:移除(空)目錄
- rm filename:移除或刪除檔案
- ln oldfile newfile:在檔案之間建立連結
- find:搜尋檔案
- grep:搜尋檔案中包含模式的行
- ssh:登入到遠端主機
- gzip filename:將檔案壓縮為.gz檔案
- gunzip file.gz:解壓.gz檔案
- tar -zcvf file.tgz .:從當前目錄建立壓縮tar檔案
- tar -zxvf file.tgz:從.tgz檔案中解壓檔案
- man:顯示線上手冊頁
- zip file.zip filenames:講問價壓縮為.zip檔案
- unzip file.zip:解壓.zip檔案
Linux手冊頁
第二章:程式設計背景
第二章主要講述了系統程式設計所需的背景資訊:介紹了基於GUI的文字編輯器(這個在大二下學java時有所涉及);展示瞭如何在命令和GUI模式下使用EMACS編輯器來編輯、編譯和執行C語言程式;並且向我們闡述了程式開發的步驟;詳細闡釋了函式呼叫慣例和執行時堆疊的使用;展示了C語言程式與彙編程式碼的連結;學會運用GUNmake工具編寫makefile;提及瞭如何使用GDB除錯工具除錯C語言程式,並防止出現除錯過程中出現的常見錯誤;複習了C語言中的結構和指標。以及資料結構中的二叉樹模擬Unix/Linux檔案系統樹中的操作等。
**
Linux中的文字編輯器
**
vim
- h:將游標左移一個字元
l:右移一個字元
j:下移
k:上移 - 使用者必須輸入i(插入)或a(追加)命令將vim切換到插入模式
- 輸入“:”進入末行模式,將文字儲存為檔案或退出vim
:w:寫入(儲存)檔案
:q:退出vim
:wq:儲存並退出
:q!:不儲存更改,強制退出
在 WYSIWYG編輯器中,使用者可以輸入文字,用箭頭鍵移動游標,和普通的文字輸入一樣。通常,通過輸入一個特殊的meta鍵,接著輸入一個字母鍵即可建立命令。例如:
Ctrl+C:中止或退出。
Ctrl+K:刪除行到緩衝區。
Ctrl+Y:從緩衝區內容中複製或貼上。
Ctrl+S:儲存已編輯文字等。
gedit
gedit是 GNOME桌面環境預設的文字編輯器。它是 Ubuntu及其他使用 GNOMEGUI使用者介面的 Linux的預設編輯器,包含用於編輯原始碼和結構化文字(如標記語言)的工具。
emacs
emacs( GNU Emacs2015)是一款強大的文字編輯器,可在多個不同的平臺上執行。最受歡迎的 emacs版本是 GNU Emacs,可在大多數 Linux發行版中使用。以上所有編輯器都支援直接輸入和全屏模式下的文字編輯。它們還支援關鍵詞搜尋,可用新文字替換字串。要使用這些編輯器,使用者只需要學一些基礎知識即可,比如如何啟動編輯器,輸入文字進行編輯,將編輯後的文字儲存為檔案,然後退出編輯器。
程式開發步驟
**
問題及收穫
**
c語言結構體
c語言結構體型別由struct關鍵字定義。
Next:指向下一個節點結構體的指標
Key:一個整數
Name:一個由64個字元組成的陣列
此類結構體可定義為:
Sruct node{
Struct node *next:
Int key:
Char name[64]:
}
Struct node可作派生型別來定義該型別的變數。
注:定義c語言結構體時,該結構體的每個欄位都必須具有一個編譯器已知的型別,但自引用指標除外。一個結構體的大小可以由sizeof(struct type)確定。
連結串列
Typedef struct node{
Struct node *next;
Int value;
Char name[];
}NODE;
連結串列是一種由一系列節點組成的資料結構,這些節點通過節點的next指標連結在一起,即每一個節點的next指標指向列表中的下一個節點。
<![if !supportLists]>(3)<![endif]>樹和二叉樹
最簡單的樹是二叉樹,其每個節點都有兩個指標,分別是左指標和右指標。
Typedef sruct node{
Int key;
Struct node *left;
Struct node *right;
}NODE;
二叉樹的遍歷演算法:
先序遍歷:node;node.left;node.right
中序遍歷:node.left;node;node.right
後序遍歷:node.left;node.right.node
深度優先(DF)
廣度優先(BF)