1. 程式人生 > 其它 >20191310李燁龍第一二章讀書筆記

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. 在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

​ 下面是手把手跟婁老師學程式設計:

  1. 建立資料夾(命令mkdir + filename),在資料夾中部署好各型別資料夾。

       1.   src      原始檔(.c)
       2.   docs        說明文件
       3.   include        標頭檔案(.h)
       4.   libs        預處理檔案(.o)
       5.   bin        可執行檔案(.out)
    
    1. 使用軟體編輯程式碼,此處使用最簡單的Hello World來進行演示。

    標頭檔案的編寫:

    原始檔的編寫:

3.編寫makefile檔案,make後出現錯誤:

​ 解決方法:刪除標頭檔案一開始的定義,就不會出現問題。其實還不是很清楚一開始的定義是什麼意思,只知道其功能是防止多個檔案連結呼叫一個頭檔案時出現重複呼叫,在沒有定義的時候就進行了呼叫從而引發錯誤。

4.執行成功截圖: