20191310李燁龍第一二章讀書筆記
第一二章讀書筆記
知識點
1 引言
第一章主要是對全書的內容進行一個總體介紹,它深入淺出地說明了全書的整體脈絡,介紹了Linux的發展史。之後,它教授了通過Virtual Box和Vmware兩款軟體安裝和啟動Linux,簡單地介紹了一下檔案系統組織、簡單命令和系統管理。
記錄一下幾個比較重要的Linux命令:
cd:更改目錄 exit:退出 logout:登出 sudo apt install:安裝應用程式 sudo:使用root許可權執行 ls:lsdirname:列出CWD或目錄的內容。 pwd:列印CWD的絕對路徑名。 touch filename:更改檔名時間戳(如果檔案不存在,則建立檔案)。 cat filename:顯示檔案內容。 cp src dest:複製檔案。 mv src dest:移動或重新命名檔案。 mkdir dirname:建立目錄。 rmdir dirname:移除(空)目錄。 rm filename:移除或刪除檔案。 find:搜素檔案 grep:搜尋檔案中包含模式的行。 ssh:登入到遠端主機 tar-zcvffile.tgz:從當前目錄建立壓縮tar檔案。 tar-zxvffile.tgz:從tgz檔案中解壓檔案。 man:顯示線上手冊頁。 zip file.zip filenames:將檔案壓縮為.zip檔案。 unzip file.zip:解壓.zip檔案。 history:檢視歷史命令。 !數字:執行第"數字"條命令。
以上命令在日常使用Linux命令列中會經常使用到,需要勤加練習記憶。
關於我的虛擬機器,我使用的軟體是Vmware,在我看來,它比Virtual Box“智慧”多了,相比之下,後者使用過程中體驗十分不好,經常會出現一些不明所以的錯誤。由於曾經安裝過Ubuntu和Kali,所以不再演示安裝過程。Ubuntu個性化GUI看起來很酷,但是實際用起來反而感覺UI是多餘的墜飾,或許是我還僅僅是淺嘗輒止,沒有探索出Ubuntu的UI真正的奧祕吧。
Kali裡面有許多很酷很實用的應用都提前安裝好了,看一眼它的選單欄就會被其強大的功能所折服。雖然自己還沒有很好地發揮其真正的功效,但是還是很感謝當時給我推薦這個的老哥,因為Kali看起來真的太有逼格了!
補充今天上課所記錄的幾個使用Linux敲程式碼時所需的快捷鍵:
1. `^ + alt + t` 開啟命令列
2. `^ + shift + t` 建立新標籤
3. `alt + number` 在新標籤之間跳轉
命令列中實用技巧:
1. `history — !number` 查詢過往程式碼 2. `odd` 以二進位制格式讀取檔案 3. `gcc -E xx.c -o xx.i` 預處理 4. `gcc -S xx.i -o xx.s` 編譯 5. `gcc -c xx.s -o xx.o` 彙編 6. `gcc -Iinclude + 標頭檔案路徑` 連結庫
2.7 makefile
makefile算是比較困難的一個內容,還沒看的時候就聽舍友在宿舍哭訴完全聽不懂。簡單瀏覽書本,發現書上關於makefile還是佔了很大一部分內容,但是一開始還是沒有簡單介紹一下makefile是什麼,可能是預設我們都已經有所瞭解了。
makefile其實就是包含了多條Linux命令的一個指令碼檔案,如果利用得當可以提高效率,特別是在管理大型專案時,可以省去很多時間編譯整個專案。
make檔案由目標項、依賴項和規則組成。
target也就是一個目標檔案,可以是Object File,也可以是執行檔案。還可以是一個標籤(Label),對於標籤這種特性,在後續的“偽目標”章節中會有敘述。
prerequisites就是,要生成那個target所需要的檔案或是目標。
**command**也就是make需要執行的命令。(任意的Shell命令)
**tips**:$@--目標檔案,$^--所有的依賴檔案,$<--第一個依賴檔案。
makefile教程,可以參考雲班課資源中的ppt,深入淺出地講述了makefile的用法。
連結2,這一篇看起來更加專業也更加助於理解:https://blog.csdn.net/weixin_38391755/article/details/80380786
2.9-2.12 資料結構、演算法
書中降到了C語言中的結構提、指標等基礎內容,之後介紹了資料結構和演算法相關內容。在大一下我們上了C語言程式設計課程,大二上我們學習了資料結構和演算法課程,書中的知識就是幫助我們進行一個溫習,怕是我們重新拾起C語言,又一點基礎都沒有了!
問題
- 在1.16.3中講到了sudo命令,其中講到Ubuntu禁用了根或超級使用者賬戶,但是在後面又說了有一種方法可杜絕這種情況,但不方便透露。這種方法是什麼呢?
解決方法:
先給root使用者配置一個密碼,具體看是什麼作業系統
比如ubuntu:sudo passwd root
提示輸入密碼2遍
配置後可立即在terminal中切換到root,指令sudo su
重啟可在登入介面使用者中輸入root,密碼正確可root許可權登入
結果真的可以登入超級使用者
可能是考慮到超級使用者許可權過大,對系統安全構成了一種挑戰,如果root使用者被操控就沒有系統安全可言了!所以日常還是使用命令sudo -i來對使用者進行一個提權更加安全一些。
連結:https://zhidao.baidu.com/question/470704080.html
2.在2.1.1中提到了所見即所得(WYSIWYG)編輯器,這是什麼意思?
解答:這是我之前看書時標註的問題,今天在準備寫筆記時偶然得到了答案。為了編輯markdown檔案,我下載了一個編輯器Typora,這個編輯器就是典型的所見即所得編輯器,可以對
實踐
安裝openeuler,和安裝Linux虛擬機器是一樣的,下載並安裝映象檔案即可。
連結:https://blog.csdn.net/huangsxint/article/details/114758542
下面是手把手跟婁老師學程式設計:
-
建立資料夾(命令mkdir + filename),在資料夾中部署好各型別資料夾。
1. src 原始檔(.c) 2. docs 說明文件 3. include 標頭檔案(.h) 4. libs 預處理檔案(.o) 5. bin 可執行檔案(.out)
- 使用軟體編輯程式碼,此處使用最簡單的Hello World來進行演示。
標頭檔案的編寫:
原始檔的編寫:
3.編寫makefile檔案,make後出現錯誤:
解決方法:刪除標頭檔案一開始的定義,就不會出現問題。其實還不是很清楚一開始的定義是什麼意思,只知道其功能是防止多個檔案連結呼叫一個頭檔案時出現重複呼叫,在沒有定義的時候就進行了呼叫從而引發錯誤。
4.執行成功截圖: