- 計(jì)算機(jī)系統(tǒng)導(dǎo)論實(shí)踐教程
- 鮑培明 蘇豐 袁春風(fēng)編著
- 5284字
- 2025-06-09 17:48:28
實(shí)驗(yàn)2 常用命令和工具軟件的使用
一、實(shí)驗(yàn)?zāi)康?/h4>
1.了解和熟悉常用文件/目錄操作命令的功能和使用方式。
2.了解和熟悉一種或多種文本查看/編輯命令的功能和使用方法。
3.了解和熟悉文件/目錄打包和解壓縮工具的功能和使用方法。
4.了解和熟悉程序開(kāi)發(fā)和調(diào)試工具軟件的功能和使用方法。
二、實(shí)驗(yàn)要求
1.在Linux虛擬機(jī)中使用文件/目錄操作命令進(jìn)行指定的操作。
2.使用文本查看/編輯命令查看指定文件并對(duì)文件進(jìn)行指定的修改。
3.使用文件/目錄打包和解壓縮工具對(duì)指定的文件/目錄進(jìn)行打包和解壓縮操作。
三、實(shí)驗(yàn)準(zhǔn)備
在進(jìn)行實(shí)驗(yàn)之前,先學(xué)習(xí)和了解Linux系統(tǒng)平臺(tái)常用命令和工具軟件的功能和使用方法。在Linux系統(tǒng)中,用戶(hù)通常使用命令行界面(Command-Line Interface,CLI)進(jìn)行交互。打開(kāi)終端窗口,出現(xiàn)shell命令行提示符,如“bao@Linux32:~/workspace/lab01$”,其中,bao表示當(dāng)前登錄的用戶(hù)名,Linux32表示主機(jī)名,~/workspace/lab01表示當(dāng)前目錄路徑。提示符中最后的字符“$”表示普通用戶(hù),若為“#”,則表示root系統(tǒng)管理員。
在命令提示符下,可輸入文件/目錄操作命令、進(jìn)程管理命令、軟件包管理命令、文本編輯命令等各種命令。Linux命令的形式為“command [-options] [parameter]”,括號(hào)[]表示可以不出現(xiàn)或出現(xiàn)一次或多次。其中,command表示命令的名稱(chēng),不可缺失;options為命令的選項(xiàng),可有可無(wú),以-開(kāi)頭;parameter表示命令的參數(shù),可有可無(wú)。每一部分之間用一個(gè)以上空格隔開(kāi),最后用回車(chē)(Enter)鍵啟動(dòng)命令的執(zhí)行。
1.常用文件/目錄操作命令
在Linux系統(tǒng)中,根目錄是最上級(jí)的目錄,用“/”表示,所有目錄、文件和設(shè)備都在根目錄之下;主目錄也稱(chēng)為家目錄,是指根目錄下的home目錄,即“/home/”,該目錄下是所有用戶(hù)的信息,如用戶(hù)zhangshan的主目錄是“/home/zhangshan”。一般用“~”表示,“.”和“..”分別代表當(dāng)前目錄和上一級(jí)目錄。注意:有些系統(tǒng)中將目錄稱(chēng)為文件夾,即目錄和文件夾是同一個(gè)含義。表1.1給出了常用文件和目錄操作命令及說(shuō)明。
表1.1 常用文件和目錄操作命令及說(shuō)明

2.常用文本查看/編輯命令和工具軟件
(1)查看文件內(nèi)容的命令
用于查看文件內(nèi)容的常用命令如下。
? cat用于查看文件內(nèi)容或者將多個(gè)文件合并為一個(gè)文件,如命令“cat -n test.txt”用于顯示text.txt文件并在所有行開(kāi)頭附加顯示行號(hào)。
? more用于按頁(yè)向下滾動(dòng)查看文件內(nèi)容,不能向上滾動(dòng)查看。
? less用于按行/頁(yè)查看內(nèi)容,可使用上/下箭頭鍵(PgUp/PgDn鍵)向上/向下滾動(dòng)(翻頁(yè)),或按空格鍵向下翻頁(yè)。
(2)文件搜索和過(guò)濾命令
用于文件搜索和過(guò)濾的常用命令如下。
? grep用于在文件中搜索指定的文本模式,如命令“grep -n "hello" test.txt”用于在文件test.txt中搜索包含字符串"hello"的行,同時(shí)輸出匹配行的行號(hào)和所在行文字。
? find用于在指定路徑下查找符合條件的文件,如命令“find -name test.txt”用于在當(dāng)前目錄及其子目錄下查找名為text.txt的文件,其中選項(xiàng)“-name”表示按文件名匹配查找。
(3)文本編輯器
nano是一個(gè)簡(jiǎn)單易用的文本編輯器,適合新手使用,可以根據(jù)需要使用不同的選項(xiàng)和參數(shù)執(zhí)行nano文本編輯器,在編輯文本的過(guò)程中,可使用快捷鍵進(jìn)行剪切、復(fù)制、粘貼、搜索和替換等基本操作,具體的快捷鍵使用信息可以通過(guò)〈Ctrl+G〉或F1鍵查看。
vi或Vim是一個(gè)功能強(qiáng)大的文本編譯器,廣泛用于在Linux系統(tǒng)終端環(huán)境下進(jìn)行文本編輯,Vim是vi的增強(qiáng)版。vi和Vim文本編譯器具有插入、刪除、復(fù)制、粘貼、搜索及替換、分割窗口等各種強(qiáng)大的編輯和操作功能。詳細(xì)的快捷鍵操作和命令信息可以通過(guò)Vi m的幫助文檔來(lái)獲取。
Gedit是Linux系統(tǒng)默認(rèn)的文本編輯器,在Debian 12中需要手動(dòng)安裝才能使用。Gedit有直觀(guān)的用戶(hù)界面,可通過(guò)菜單欄和工具欄完成大多數(shù)編輯任務(wù),支持多種編程語(yǔ)言的自動(dòng)縮進(jìn)、語(yǔ)法高亮顯示、代碼折疊等,能幫助用戶(hù)更好地閱讀和編輯代碼,適合新手用戶(hù)用作編程語(yǔ)言編輯器。
Text Editor是GNOME桌面中的文本編輯器,雙擊文本文件時(shí),系統(tǒng)將自動(dòng)打開(kāi)Text Editor(或Gedit)。在有的Linux系統(tǒng)(如Ubuntu)中,Text Editor與Gedit是同一個(gè)文本編輯器。
(4)十六進(jìn)制編輯器
如果要直接以二進(jìn)制形式查看和修改目標(biāo)文件的內(nèi)容,可以使用十六進(jìn)制編輯器hexedit或bless等。打開(kāi)編輯器后,可以看到二進(jìn)制文件的內(nèi)容以十六進(jìn)制形式顯示,然后可使用鍵盤(pán)和鼠標(biāo)直接對(duì)文件內(nèi)容進(jìn)行修改。
3.文件/目錄打包和解壓縮工具軟件
tar命令是Linux系統(tǒng)中使用較廣泛的打包和解壓縮命令,用于將多個(gè)文件或目錄打包歸檔在單個(gè)歸檔文件中,歸檔文件可以進(jìn)一步使用gzip或bzip2進(jìn)行壓縮。tar命令的基本用法為“tar [-options] [filename]”。表1.2給出了常用選項(xiàng)及其含義。
表1.2 常用選項(xiàng)及其含義

表1.3給出了tar命令的使用舉例及說(shuō)明。
表1.3 tar命令的使用舉例及說(shuō)明

4.程序開(kāi)發(fā)和調(diào)試工具軟件
程序開(kāi)發(fā)和調(diào)試過(guò)程涉及源程序文件的編輯、源程序的預(yù)處理/編譯/匯編/鏈接、程序的調(diào)試和執(zhí)行等。其中,源程序文件的編輯操作可以使用上述提到的Gedit和vi/Vim等文本編輯器實(shí)現(xiàn),目標(biāo)文件的編輯操作可以使用上述提到的hexedit等十六進(jìn)制編輯器實(shí)現(xiàn)。
(1)源程序文件的轉(zhuǎn)換處理
對(duì)于源程序文件的預(yù)處理、編譯、匯編、鏈接等轉(zhuǎn)換處理,大多使用GNU編譯器套件(GNU Compiler Collection,GCC)實(shí)現(xiàn)。gcc命令的基本用法是“gcc [-options] [filenames]”。表1.4給出了gcc命令的常用選項(xiàng)及說(shuō)明。
表1.4 gcc命令的常用選項(xiàng)及說(shuō)明

此外,也可以分別采用預(yù)處理命令(cpp)、編譯命令(cc1)、匯編命令(as)和鏈接命令(ld)將轉(zhuǎn)換過(guò)程的每一步分開(kāi)進(jìn)行處理。
(2)目標(biāo)文件的反匯編工具
源程序文件經(jīng)預(yù)處理、編譯、匯編、鏈接處理后生成的目標(biāo)文件中的代碼為不可顯示的二進(jìn)制形式,通過(guò)反匯編工具軟件objdump,可以將可重定位目標(biāo)文件或可執(zhí)行目標(biāo)文件中的二進(jìn)制代碼轉(zhuǎn)換為可顯示的匯編代碼形式。objdump命令的基本用法是“objdump [-options] [filenames]”。其中,選項(xiàng)-d表示將指定目標(biāo)文件中的代碼節(jié)(.text節(jié))進(jìn)行反匯編;-D表示將指定目標(biāo)文件中的所有節(jié)(section)進(jìn)行反匯編;-S表示在生成的反匯編代碼中顯示源代碼,這需要在gcc命令進(jìn)行編譯時(shí)使用-g選項(xiàng)。
(3)程序調(diào)試工具
在Linux系統(tǒng)中大多采用gdb調(diào)試工具進(jìn)行程序調(diào)試。可在shell命令行提示符下輸入“gdb <可執(zhí)行文件名>”或“gdb”啟動(dòng)gdb調(diào)試工具。啟動(dòng)gdb后進(jìn)入調(diào)試狀態(tài),此時(shí)可直接輸入調(diào)試命令進(jìn)行程序調(diào)試。大部分調(diào)試命令可利用補(bǔ)齊功能以簡(jiǎn)便的方式輸入,如quit可簡(jiǎn)寫(xiě)為q、list可以簡(jiǎn)寫(xiě)為l等,按〈Enter〉鍵將重復(fù)上一個(gè)調(diào)試命令。表1.5給出了常用的gdb調(diào)試命令及其含義。
表1.5 常用的gdb調(diào)試命令及其含義

(續(xù))

(4)ELF文件顯示工具
readelf是一個(gè)在Linux下用于顯示ELF文件內(nèi)容的工具,命令中必須指定選項(xiàng)和ELF文件名,不同的選項(xiàng)表示顯示不同的內(nèi)容,例如,-h選項(xiàng)用于顯示ELF頭,-l用于顯示程序頭表,-S用于顯示節(jié)頭表,-s用于顯示符號(hào)表,-r用于顯示重定位節(jié),-a用于顯示所有節(jié)信息。
(5)make命令和makefile文件
make命令和makefile文件相結(jié)合可以實(shí)現(xiàn)一個(gè)大型工程的自動(dòng)化編譯鏈接以生成可執(zhí)行文件。復(fù)雜工程中通常有大量的源文件,按類(lèi)型、功能、模塊等分別存放在若干目錄中,makefile文件用于定義一系列規(guī)則來(lái)指定哪些源文件需要先編譯生成.o文件、哪些源文件可以后編譯生成.o文件、在哪種情況下需要重新編譯某個(gè)源文件等,其中可包含各種shell命令,因而makefile文件類(lèi)似一個(gè)shell腳本。一旦存在一個(gè)適合的makefile文件,只需要執(zhí)行make命令,整個(gè)工程就可以完全自動(dòng)編譯、鏈接并生成可執(zhí)行目標(biāo)文件,從而極大提高軟件開(kāi)發(fā)效率。make命令的基本格式是“make [-f makefile文件名] [-options] [宏定義] [目標(biāo)]”,這里的目標(biāo)是指make命令要生成的目標(biāo)文件或達(dá)成的目的,可以是makefile文件中指定的要生成的可執(zhí)行目標(biāo)文件,也可以是一個(gè)偽目標(biāo)。以下是常用的make命令:“make clean”表示刪除所有生成的目標(biāo)文件以便重新生成;“make cleanall”表示刪除所有生成的目標(biāo)文件、配置文件和臨時(shí)文件,以便重新開(kāi)始構(gòu)建;“make install”表示將生成的目標(biāo)文件復(fù)制到指定的目錄中。
5.管道和輸入/輸出重定向
在Linux命令行中可以使用管道和輸入/輸出重定向等來(lái)實(shí)現(xiàn)更加便捷和高效的文件操作。其中,管道“|”用于將上一個(gè)命令的輸出作為下一個(gè)命令的輸入,輸出重定向“> file”用于將命令執(zhí)行后的輸出內(nèi)容存入文件file中,而不是輸出到默認(rèn)的標(biāo)準(zhǔn)輸出stdout(即終端設(shè)備)。例如,命令行“l(fā)s-t|head-n 5>/tmp/last-ten.txt”表示將當(dāng)前目錄中的文件按修改時(shí)間顯示最近修改過(guò)的5個(gè)文件的文件名,每行出現(xiàn)一個(gè)文件名,顯示的結(jié)果不出現(xiàn)在標(biāo)準(zhǔn)輸出文件stdout上,而是保存在文件/tmp/last-ten.txt中。在該命令行中,ls和head命令之間由管道連接,因此head命令的輸入文件是ls命令的輸出結(jié)果;head命令后面是輸出重定向操作,因此head命令執(zhí)行后的輸出內(nèi)容將存入文件/tmp/last-ten.txt中。ls中的“-t”選項(xiàng)指定按修改時(shí)間由近向遠(yuǎn)進(jìn)行排序顯示;head中的“-n 5”選項(xiàng)指定顯示前5行,若不指定行數(shù),則默認(rèn)顯示前10行。
上述對(duì)相關(guān)命令和工具軟件的描述和說(shuō)明都是最基本、最簡(jiǎn)單的內(nèi)容,實(shí)際包含的選項(xiàng)及其功能描述還有很多,具體使用時(shí)可通過(guò)man命令查看幫助信息,或者自行查找相關(guān)的網(wǎng)絡(luò)資源或相應(yīng)資料,進(jìn)一步了解其各個(gè)選項(xiàng)的使用方式及功能。
四、實(shí)驗(yàn)步驟
步驟1 在主目錄下創(chuàng)建工作目錄workspace,在workspace目錄下創(chuàng)建目錄lab01和lab02,在lab01下創(chuàng)建以自己的學(xué)號(hào)為名字的目錄,如2412010。
打開(kāi)終端窗口,在命令行提示符下輸入以下命令,可以完成上述任務(wù)。
(1)pwd:顯示當(dāng)前的主目錄為/home/bao,即用戶(hù)名為bao的主目錄。
(2)ls:顯示當(dāng)前主目錄下的內(nèi)容。
(3)mkdir workspace:在主目錄下創(chuàng)建目錄workspace。
(4)mkdir workspace/lab01:在目錄workspace下創(chuàng)建目錄lab01。
(5)mkdir workspace/lab02:在目錄workspace下創(chuàng)建目錄lab02。
(6)mkdir workspace/lab01/2412010:在目錄lab01下創(chuàng)建目錄2412010。
(7)ls:顯示當(dāng)前主目錄下的內(nèi)容,找到目錄workspace。
(8)cd workspace:進(jìn)入目錄workspace。
(9)ls:顯示目錄workspace下的內(nèi)容,找到目錄lab01和lab02。
(10)cd lab01:進(jìn)入目錄lab01。
(11)ls:顯示目錄lab01下的內(nèi)容,找到目錄2412010。
上述命令完整的操作界面如圖1.29所示。
圖1.29中執(zhí)行的命令序列是完成相應(yīng)任務(wù)的一種操作過(guò)程,也可以使用其他命令序列完成同樣的任務(wù)。上述過(guò)程描述的是在終端窗口中使用系統(tǒng)命令完成任務(wù)的方式,也可以打開(kāi)Debian的文件管理器窗口,在圖形用戶(hù)界面中完成上述任務(wù)。
步驟2 使用Vim文本編輯器創(chuàng)建文件hello.c,并將該文件保存在目錄~/workspace/lab01下。文件hello.c的內(nèi)容如下:

打開(kāi)終端窗口,按如下過(guò)程操作可以完成上述任務(wù)。

圖1.29 步驟1中命令對(duì)應(yīng)的完整操作界面
(1)在命令行提示符下輸入“cd workspace/lab01”命令,進(jìn)入目錄~/workspace/lab01。
(2)在命令行提示符下輸入“vim hello.c”命令,創(chuàng)建文件hello.c并進(jìn)入Vim文本編輯環(huán)境。
(3)在Vim編輯環(huán)境中按“i”鍵,使Vim進(jìn)入插入文本模式,然后輸入上述hello.c文件中的內(nèi)容,按〈Esc〉鍵表示輸入結(jié)束,最后輸入“:wq”以退出Vim環(huán)境并將輸入文本內(nèi)容保存到hello.c文件中。
(4)在命令行提示符下輸入“cat hello.c”,以顯示hello.c文件的內(nèi)容。
上述操作的部分界面內(nèi)容如圖1.30所示。

圖1.30 步驟2生成hello.c文件的部分操作界面
步驟3 使用gcc命令將程序~/workspace/lab01/hello.c編譯生成可執(zhí)行文件hello,然后執(zhí)行該文件以查看輸出結(jié)果。使用objdump工具對(duì)hello進(jìn)行反匯編,并將反匯編內(nèi)容保存到當(dāng)前目錄下的hello.txt文件中。在終端窗口的命令行提示符下依次輸入下列命令可完成上述任務(wù)。
(1)cd workspace/lab01:若當(dāng)前已處于該目錄下,則可省略該步驟。
(2)gcc-g hello.c-o hello:使用gcc命令生成可執(zhí)行目標(biāo)文件hello。
(3)./hello:?jiǎn)?dòng)當(dāng)前目錄下的hello執(zhí)行。
(4)objdump-S hello>hello.txt:將hello反匯編后的內(nèi)容保存到hello.txt中。
上述終端窗口中的操作界面如圖1.31所示。

圖1.31 終端窗口中的操作界面
步驟4 使用Text Editor(或Gedit)文本編輯器打開(kāi)hello.txt,查看該文件中的C語(yǔ)句及其對(duì)應(yīng)的反匯編結(jié)果。按以下操作過(guò)程可以實(shí)現(xiàn)上述任務(wù):打開(kāi)Debian文件管理器窗口,進(jìn)入目錄~/workspace/lab01/,找到并雙擊hello.txt文件圖標(biāo),從而打開(kāi)Text Editor(或Gedit)編輯器并進(jìn)入文本編輯器窗口,hello.txt文件的內(nèi)容顯示在窗口中,在窗口中移動(dòng)鼠標(biāo)可查看hello.txt文件中不同部分的內(nèi)容。
步驟5 使用tar工具提供的命令,將目錄~/workspace/lab01/下的所有文件和目錄歸檔并壓縮到文件hello.tar.bz2中,該文件位于目錄~/workspace/lab01/下;將壓縮文件hello.tar.bz2復(fù)制到目錄~/workspace/lab02/下,再將文件~/workspace/lab02/hello.tar.bz2中的內(nèi)容解壓縮到目錄~/workspace/lab02/下。在終端窗口的命令行提示符下依次輸入下列命令,可完成上述任務(wù)并通過(guò)查看相應(yīng)目錄下的內(nèi)容來(lái)驗(yàn)證操作結(jié)果。
(1)cd workspace/lab01:若當(dāng)前已處于該目錄下,則可省略該步驟。
(2)ls:查看~/workspace/lab01/下的文件和目錄。
(3)tar-jcf hello.tar.bz2./:生成壓縮文件hello.tar.bz2。
(4)cp hello.tar.bz2../lab02:將hello.tar.bz2復(fù)制到目錄~/workspace/lab02/中。
(5)cd../:返回上一級(jí)目錄~/workspace。
(6)cd lab02:進(jìn)入目錄~/workspace/lab02。
(7)ls:查看目錄~/workspace/lab02中的內(nèi)容。
(8)tar-jxf hello.tar.bz2:解壓縮文件hello.tar.bz2。
(9)ls:查看目錄~/workspace/lab02中的內(nèi)容。
上述操作后,終端窗口中的部分內(nèi)容如圖1.32所示。

圖1.32 步驟5操作對(duì)應(yīng)的終端窗口中的部分內(nèi)容
五、實(shí)驗(yàn)報(bào)告
本實(shí)驗(yàn)報(bào)告中的主要內(nèi)容包括但不限于以下幾個(gè)方面。
1.簡(jiǎn)要描述自己在實(shí)驗(yàn)過(guò)程中遇到不熟悉的命令和工具軟件時(shí)是通過(guò)哪些方式解決的,你認(rèn)為哪些方式更有效?
2.簡(jiǎn)要描述開(kāi)發(fā)軟件所需要的開(kāi)發(fā)環(huán)境,以及從源程序文件的編輯生成到編譯轉(zhuǎn)換為可執(zhí)行文件的過(guò)程中所需要的每個(gè)處理環(huán)節(jié)及在Linux系統(tǒng)環(huán)境下你所用的命令。
3.基于自己所完成的指定程序開(kāi)發(fā)和運(yùn)行過(guò)程,闡述在該過(guò)程中所體現(xiàn)的計(jì)算機(jī)系統(tǒng)層次結(jié)構(gòu),例如,編輯生成源程序文件過(guò)程中所使用的文本編輯軟件屬于哪個(gè)層次?編輯生成的源程序文件和編譯轉(zhuǎn)換生成的可執(zhí)行文件的抽象程度有什么差別?
4.回答以下問(wèn)題。
(1)在Linux系統(tǒng)中,root系統(tǒng)管理員的權(quán)限和普通用戶(hù)的權(quán)限有什么不同?
(2)在Linux系統(tǒng)中,命令是否區(qū)分大小寫(xiě)?
(3)目錄的作用是什么?你認(rèn)為應(yīng)如何合理地存放實(shí)驗(yàn)中的各類(lèi)文件?
(4)在進(jìn)行高級(jí)語(yǔ)言程序設(shè)計(jì)時(shí),需要有相應(yīng)的應(yīng)用程序開(kāi)發(fā)支撐環(huán)境,其中包括用于執(zhí)行各類(lèi)程序的用戶(hù)界面。這種具有人機(jī)交互功能的用戶(hù)界面是由計(jì)算機(jī)系統(tǒng)中哪個(gè)抽象層提供的?GUI方式下的圖形用戶(hù)界面和CLI方式下的命令行用戶(hù)界面各自的特點(diǎn)是什么?你更喜歡在哪種方式下進(jìn)行人機(jī)交互?
- 核電站安全文化
- 周三多《管理學(xué)》(第2版)課后習(xí)題與考研真題詳解
- 2020年河北省選聘大學(xué)生村官考試《申論》考點(diǎn)精講及典型題(含歷年真題)詳解
- 2020年翻譯碩士(MTI)211翻譯碩士英語(yǔ)高分范文100篇
- 吳于廑《世界史·現(xiàn)代史編(下卷)》筆記和典型題(含考研真題)詳解
- 大學(xué)體育與健康
- 智能網(wǎng)聯(lián)汽車(chē)技術(shù)原理與應(yīng)用(彩色版)
- 產(chǎn)品設(shè)計(jì)程序與方法
- 食品生物技術(shù)
- 刑事訴訟法教程
- 大學(xué)生創(chuàng)業(yè)基礎(chǔ)
- 王傳麗《國(guó)際經(jīng)濟(jì)法》(高等教育出版社第3版)筆記和課后習(xí)題詳解
- 編組站自動(dòng)控制系統(tǒng)維護(hù)
- 餐飲概論
- 金融企業(yè)會(huì)計(jì)