如何用C實(shí)現(xiàn)linux下的ls命令_第1頁(yè)
如何用C實(shí)現(xiàn)linux下的ls命令_第2頁(yè)
如何用C實(shí)現(xiàn)linux下的ls命令_第3頁(yè)
如何用C實(shí)現(xiàn)linux下的ls命令_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、首先我講一下寫(xiě)這篇東西的目的。我覺(jué)得對(duì)于很多l(xiāng)inux新手。尤其是在自學(xué)的同學(xué)。最好的學(xué)習(xí)的方法就是通過(guò)具體的例子。通過(guò)一個(gè)實(shí)踐的例子,在學(xué)習(xí)相關(guān)的知識(shí)點(diǎn)的同時(shí),就把它們應(yīng)用到這例子中。這樣不僅知道了原理。也知道了怎么去應(yīng)用。下面就開(kāi)始用一個(gè)常用的命令”ls”開(kāi)始。所有的東西都是從最基本的原理開(kāi)始。一步步來(lái)教你怎么實(shí)踐出一個(gè)命令    (一)ls命令簡(jiǎn)單介紹    第一步當(dāng)然是要明白ls究竟是做什么的。如果你要做一個(gè)東西卻不知道要用來(lái)干嘛。會(huì)不會(huì)很搞笑?所以下面就簡(jiǎn)單的介紹ls命令的作用和怎么使用   

2、1.Ls可以列出文件名和文件的屬性    在命令行輸入ls: ls 命令.jpgLs的默認(rèn)動(dòng)作是找出當(dāng)前所有文件的文件名。按字典排序后輸出。Ls還能顯示其他的信息。如果加上-l就會(huì)列出每個(gè)文件的詳細(xì)信息。也叫l(wèi)s的長(zhǎng)格式:2.        列出指定目錄或文件的信息    Linux系統(tǒng)中會(huì)有很多目錄。每個(gè)目錄中又會(huì)有很多文件。如果要列出一個(gè)非當(dāng)前目錄的內(nèi)容或者是一個(gè)特定文件的信息,則需要在參數(shù)中給出目錄名或文件名。如:    ls /

3、tmp /列出/tmp目錄中各文件的文件名    ls docs /列出docs目錄中各文件的屬性    ls *.c /列出當(dāng)前目錄下與*.c匹配的文件,即當(dāng)前目錄下所有以.c為后綴的文件    3.        經(jīng)常用到的命令行選項(xiàng)    ls -l 在前面已經(jīng)提到過(guò),-l就是輸出文件詳細(xì)的信息。也叫長(zhǎng)格式;    ls -a 列出的內(nèi)容包含以“.“開(kāi)頭的讓文件,即所謂有

4、隱藏文件    ls lu 顯示最后訪問(wèn)時(shí)間    ls t 輸出時(shí)按時(shí)間排序    ls F 顯示文件類(lèi)型    ls 命令的參數(shù)選項(xiàng)非常多,大多也可以組合使用。所以還是比較復(fù)雜的。但是我們第一步要實(shí)現(xiàn)的就是它最基本的功能:列出當(dāng)前目錄下的所有文件或子目錄。    (二)學(xué)習(xí)必備的知識(shí)    既然是列出文件和目錄,那么肯定是和linux文件系統(tǒng)有關(guān)系的,所以要寫(xiě)ls命令,至少要對(duì)文件系統(tǒng)的基本原理有一定的了解。為了

5、不至于使這個(gè)帖子內(nèi)容過(guò)于復(fù)雜,我把這方面的知識(shí)介紹單獨(dú)開(kāi)了一個(gè)帖子:    linux 文件系統(tǒng)詳解    如果你對(duì)這些已經(jīng)有所了解。就會(huì)知道linux下的文件都是以/為根目錄的樹(shù)型結(jié)構(gòu),雖然linux下有普通文件、目錄文件、鏈接文件、設(shè)備文件、管道文件這幾種類(lèi)型。但鏈接文件、設(shè)備文件、管道文件都可以當(dāng)做普通文件看待,那實(shí)際也就只要區(qū)分普通文件和目錄文件這兩種了。而目錄文件的內(nèi)容就是它所包含所有文件和子目錄的一個(gè)列表,所以只要打開(kāi)目錄文件并讀取對(duì)應(yīng)目錄塊里的那個(gè)列表數(shù)據(jù),就可以得到些目錄下所有文件和子目錄的名稱(chēng)了。其實(shí)這個(gè)流程簡(jiǎn)單,就

6、是:打開(kāi)目錄->讀取內(nèi)容->顯示文件名稱(chēng)->關(guān)閉打開(kāi)的目錄。用偽代碼流程表示如下:    Mani()    Opendir    While(readdir)    Print d_name    Closedir;    那么現(xiàn)在的問(wèn)題是用什么函數(shù)去打開(kāi)并讀目錄呢?又是怎么樣來(lái)讀出數(shù)據(jù)呢?這里介紹是的opendir 和readdir,但是可能對(duì)于一些新手來(lái)說(shuō),就算知道了函數(shù)名稱(chēng)也不一定知道怎么用

7、。別急,下一步就是教你怎么去查相應(yīng)函數(shù)的幫助資料。    linux下查看幫助手冊(cè)的命令是man,關(guān)于man的詳細(xì)介紹在這個(gè)帖子里我有詳細(xì)介紹:linux 幫助手冊(cè)頁(yè)命令 man詳解 如果對(duì)這方面還不是很清楚的可以先去學(xué)習(xí)一下。    好了,如果你已經(jīng)明白man的用法,我們就開(kāi)始查看opendir和readdir的用法    我們?cè)诿钚休斎?    # man 3 opendir解釋?zhuān)?#160;   #include   

8、 #include    這是必須包含的頭文件    DIR *opendir(const char *name); 是函數(shù)原型;其中DIR * 表示是返回一個(gè) DIR類(lèi)型的指針,const char *name 是傳入的參數(shù)    RETURN VALUE 是對(duì)返回值的說(shuō)明。這里說(shuō)明了如果有錯(cuò)誤就返回NULL    DESCRIPTION: opendir()用來(lái)打開(kāi)參數(shù)name指定的目錄,并返回DIR * 形態(tài)的目錄流,DIR 并指向目錄流的第一位解釋?zhuān)?#160;

9、60;  頭文件和opendir一樣    函數(shù)原型:struct dirent * readdir(DIR * dir);    函數(shù)說(shuō)明  readdir()返回參數(shù)dir目錄流的下個(gè)目錄進(jìn)入點(diǎn)。    Struct dirent這一段是結(jié)構(gòu)說(shuō)明,基中解釋分別下:    d_ino 此目錄進(jìn)入點(diǎn)的inode    d_off 目錄文件開(kāi)頭至此目錄進(jìn)入點(diǎn)的位移    d_reclen _name

10、的長(zhǎng)度,不包含NULL字符    d_type d_name 所指的文件類(lèi)型    d_name 文件名    (三)學(xué)完成代碼    在當(dāng)前目錄創(chuàng)建新文件ls1.c;前輸入以下內(nèi)容    代碼:    #include    #include    #include    void do_ls(char );main(int

11、ac, char *av)    if ( ac = 1 )        do_ls( '.' );    else        while ( -ac )            printf('%s:n', *+av );  

12、60;         do_ls( *av );        void do_ls( char dirname )/* *  list files in directory called dirname */    DIR     *dir_ptr;       /* the directory */&#

13、160;   struct dirent   *direntp;       /* each entry    */    if ( ( dir_ptr = opendir( dirname ) ) = NULL )        fprintf(stderr,'ls1: cannot open %sn', dirname);  &

14、#160; else            while ( ( direntp = readdir( dir_ptr ) ) != NULL )            printf('%sn', direntp->d_name );        closedir(dir_ptr);        保存并退出;    (四)怎么編譯和運(yùn)行    編寫(xiě)好代碼好就要編譯了; linux的常用編譯工具就

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論