1. 程式人生 > >軟件學院系統編程第一次實驗

軟件學院系統編程第一次實驗

保存 str tail 管理命令 建議 壓縮 一行 寫作 一級目錄

如有錯誤,歡迎批評指正,站內聯系或郵箱[email protected]

一、 實驗目的

1、 創建CentOS虛擬機,也可安裝CentOS雙系統。

2、 熟悉Linux常見命令。

3、 了解超強的vi編輯器。

4、 熟悉gcc編譯器。

5、 本實驗設計意在提供解決問題的基本工具以及方式,因此詳細以及進階內容請自行查詢書、網絡或者詢問助教。

6、 通過本實驗學會如何在linux上進行開發。

二、 實驗環境

CentOS

三、 實驗指導

1、 創建CentOS

使用虛擬機創建CentOS在實驗指導書(《Linux編程基礎》黑馬程序員)中有詳細步驟。

我用的是CentOS6.8 安裝包百度雲鏈接:

鏈接: https://pan.baidu.com/s/1cF1llXJU1pYGqQy_PrFIzw
提取碼:pnix

下載第一個壓縮包即可

② 雙系統安裝方式,建議熟練或者有興趣的同學嘗試,提供幾條博客鏈接:

https://blog.csdn.net/mengxiangjia_linxi/article/details/78965103

https://blog.csdn.net/flyer1011/article/details/78185509

2、 Linux常見命令(請學會使用終端Terminal

(1) 絕對路徑和相對路徑:

Linux操作系統中存在著兩種路徑:絕對路徑和相對路徑。我們在訪問文件或文件夾的時候,其實都是通過路徑來操作的。兩種路徑在實際操作中能起到同等的作用。

絕對路徑永遠都是相對於根文件夾的。它們的標誌就是第一個字符永遠都是“/”。

相對路徑永遠都是相對於我們所處的文件夾位置。它們的第一個字符沒有“/”。

比如/home/usr/test/h.c,這就是絕對路徑。如果當前處於usr文件夾下,那麽相對路徑就是test/h.c。

‘.’表示當前路徑,./test/h.c和以上相對路徑等價,’..’表示上一級目錄,故也可寫作 ../usr/test/h.c

(2) 文件操作命令

ls 查看目錄和文件 “ls /home/usr/test”,就會列出該目錄下文件。

pwd 查看當前路徑。

mkdir 創建目錄, mkdir /home/usr /home下創建usr目錄

cd 切換目錄,cd /home/usr/test 。cd 可以使用 ... ,即cd . cd ..

cp 復制文件,命令格式 cp [源路徑] [目的路徑]

mv 移動文件,命令格式 mv[源路徑] [目的路徑]

rm 刪除文件或目錄,命令格式 rm [目標路徑],參數-r遞歸刪除,即刪除子文件夾,-f強制刪除。“rm –rf /*“ 毀滅世界。

rmdir 刪除目錄 rmdir [路徑]

cat 查看文件內容, cat /home/usr/test/h.c , 輸出文件中內容

more 分頁查看。比如當cat輸出大量文本內容時,很難看清,則可以通過cat [文件] | more來分頁查看。f/空格顯示下一頁,回車顯示下一行,Q/q退出。此處涉及到管道,有興趣的可自行搜索。

(3) 權限操作命令

su 切換到root,root賬戶具有最高權限。返回當前用戶則使用exit。

sudo 在指令前加上sudo,使得本條指令以最高權限運行。

chmod使用chmod命令更改文件權限。

chow 使用chown命令更改文件所有者。

chgrp 使用chgrp命令更改文件的所屬組。

(4) 網絡管理命令

Ifconfig 查看當前網絡配置,如ip等。

Netstat 查看當前網絡狀態。

Ping 檢查網絡是否連通Ping www.baidu.com

(5) 查詢命令幫助手冊 man命令

比如man ls, 就會打印ls的使用方法。更詳細的man使用方式見百度或者:

https://www.cnblogs.com/Jason-Ch/articles/2772973.html

(6) yum命令

centos安裝包管理通常是使用yum完成,yum list可顯示當前安裝的程序包。

1、使用時首先配置源,即程序包來源。http://mirrors.163.com/.help/centos.html

2、配置好源後,則可以通過 sudo yum install xxxx命令來安裝包。卸載包則是通過sudo yum remove xxx。

3、更詳細內容請參考man yum或者百度搜索。

3、 vi編輯器

在命令行中編輯文件可以通過執行 vi xxx進行,下面簡要介紹常用(不全)命令。

進入vi後是命令模式,通過按鍵控制光標移動以及文本內容的復制粘貼刪除。

1、光標上下左右移動對應kjhl,部分vi支持上下左右鍵。

2、Home移動到行首,End移動到行尾。

3、x刪除光標所在字符, dd刪除光標所在行。

4、yy復制當前行,nyy復制自當前行起,包含當前行在內的n行,如3yy。

5、p將內容粘貼到光標處。

6、u 撤掉上一次操作。

只有在插入模式下才能修改文本, i或者Insert從命令模式進入插入模式。

底行模式則是在輸入模式下按Esc進入,常用輸入 :q 退出vi,:w 保存修改內容, :wq退出並保存。:q! 強制退出等。

Vi更多使用參見書或者man或者網絡。

4、 GCC編譯器

(1) 檢查gcc版本

使用gcc –v輸出信息,如果不存在gcc,請使用yum安裝gcc。

(2) gcc編譯單文件

編譯方式是 gcc [文件路徑],默認文件名是a.out,執行方式是 ./a.out 。

通過-o指定文件名, gcc hello.c –o hello,編譯生成hello執行文件。

(3) gcc編譯多文件

當程序源碼分散在多個文件中時,舉例為 gcc a.c b.c –o test,將a.cb.c聯合編譯生成test可執行文件。

(4) 其他

如使用-o1 –o2 –o3來進行程序優化,更多請百度或者參考書。

四、 實驗題目

1、 寫出滿足下列題目要求的命令,並解釋每條命令中你使用的選項、參數的含義。

註意:每個小題只能使用一條命令完成,命令的格式參考:command [options] [arguments]。

(1) 假設在當前路徑下不存在任何目錄,現在當前路徑下創建名為“a1”的目錄,並在“a1”目錄中創建名為“b1”的目錄。

    mkdir /a1 在當前路徑下創建a1目錄

    mkdir /a1/b1 a1目錄中創建b1目錄

(2) 在當前路徑下刪除一個非空子目錄/tmp。

    rm -rf /tmp

    刪除目錄下所有文件包括子目錄方法:rm -rf 目錄名

    由於/tmp是系統文件,盡量不要刪除,這裏可以選擇刪除第一小題創建的a1目錄(由於內含b1目錄,因此a1也是非空子目錄)

    本題不能使用rmdir命令,rmdir只能用於刪除空目錄

現已在用戶coding個人目錄下創建了目錄software,完成以下(3)、(4)兩個小題。

(3) 搜索etc目錄下所有以“pa”開頭的文件,並拷貝到software中。

    cp /etc/pa* /home/coding/software

    cp 復制文件,命令格式 cp [源路徑] [目的路徑]

    其中,源路徑/etc/pa*表示etc中所有以pa開頭的文件,/home/coding/software是目的路徑

(4) 將目錄software下所有內容建立成一個tar包,並命名為software.tar.gz。

    tar -cvf software.tar.gz /home/coding/software

    tar是打包器 -cvf是打包,software.tar.gz是壓縮文件名,/home/coding/software是要被打包的目錄路徑

2、 對一個文件file.txt執行命令:#chmod 746 file.txt。請解釋該命令的含義並寫出執行該命令後該文件的權限信息。(用r、w、x和-表示)

    chmod使用chmod命令更改文件權限

    r(4)表示可寫
    w(2)表示可讀
    x(1)表示可執行
    7=4+2+1
    4=4+0+0
    6=4+2+0

    所以746就是rwx r-- rw-

3、 在根目錄下創建一個Lab1文件夾,並創建hello.coutput.c,要求使用vi完成對2個文件的編輯。output.c中存在一個方法,原型是 void MyPrint(char* str),用於打印字符串,hello.c中使用代碼調用MyPrint輸出”helloXXX”。(XXX代表你本人名字的拼音全稱)。然後使用gcc2個文件編譯成為一個可執行文件,然後在shell中執行該文件,最後輸出。請提交在終端輸入命令和輸出結果的完整截圖,可添加一些必要的文字說明。

    使用 / 命令進入根目錄

    技術分享圖片

    當程序源碼分散在多個文件中時,舉例為 gcc a.c b.c –o test,將a.c和b.c聯合編譯生成test可執行文件

    截圖中的警告是個人問題(在output.c中忘記寫頭文件)

    使用chomd命令,使得test文件擁有x權限,也即可執行

    ./xxx表示運行可執行文件xxx

4、用vi編輯器,執行下述操作,並詳細說明操作過程及方法。

刪除第5,15和25行指令:——

命令:nd表示刪除第n行

在刪除一行過後,下面的行數會發生變化,所以應該從下面開始刪除

esc進入命令模式

:25d

:15d

:5d

將文本中所有的”etc”替換為”config”:——

:%s/etc/config/g

使用%才能在全文搜索,使用s命令進行替換,最後加/g以替換每一行中的每一個etc

復制第11~20行的內容,並且貼到文件最後一行之後:——

11,20y p

a,by是復制命令,表示從第a行到第b行的復制,然後將光標移至最後一行,使用p命令進行粘貼

然後將光標移動至文件最後:——

一直按

將每行開頭第一個字符”#”刪除:——

:%s/^#/

%表示全文,s是替換命令,把每一行的第一個#替換成空白,完成刪除操作

刪除包含有字符串”conf”的那幾行: ——

:g/conf/d

使用g/表示全局查詢,查詢到conf之後,使用/d命令完成刪除整行

在第一行新增一行,輸入你的姓名,學號:——

光標移動至第一行,點擊i進入插入模式,回車然後輸入姓名學號 zhuopeiyan 17373386

文件另存為new-inittab.conf: ——

:w new-inittab.conf

使用w命令完成另存為操作

思考題(建議思考,不要求必須完成)

系統中引入了文件和目錄的概念方便了用戶的使用。設想如果有一個不使用文件或目錄的系統,我們可以用什麽其他方式來代替它們的功能?在生活中有沒有這樣的例子?請簡要回答並說明原因。(思考方向:建議了解文件的組織結構,文件的作用)

胡思亂想了一通,就不貼上來了23333

本來運行命令行該有截圖的,但是我做完作業關了虛擬機,才想起來沒有截圖。。。下次註意

軟件學院系統編程第一次實驗