模擬實現Linux下命令 ls

2021-08-16 09:52:29 字數 1429 閱讀 4740

首先我們對linux下ls命令已經非常熟悉了,我在這裡用c語言僅實現ls -l及ls -l ***。(僅作練習使用)

首先需要了解ls -l命令都做了那些活動,那麼就需要研究以下:

我們可以看到有七列主要內容,先來逐個分析:

檔案的型別,此圖里所有檔案均為目錄,所以是d。許可權=本使用者許可權+本組使用者許可權+其他使用者許可權

硬鏈結數

檔案所輸使用者名稱 檔案所輸使用者組名

檔案大小

時間(這個時間是該檔案最後一次被修改的時間)

檔名 為了獲取以上資訊,我們可以使用乙個庫里的函式來幫助我們。

可以看到我們所需要的資訊都在該函式的結構體被定義。我們可以直接使用這些介面獲取。以下附上**:

#include 

#include

#include

#include

#include

#include

#include

#include

int file_type(md)

int file_ls(char *pd)

struct group *gd=getgrgid(sbuf.st_gid);

if(gd!=null)

//file size

printf("%04d ",sbuf.st_size);

//file

time

struct tm *tf=localtime(&sbuf.st_mtime);

printf("%04d/%02d/%02d ",(tf->tm_year+1900),(tf->tm_mon+1),tf->tm_mday);

printf("%4d:%02d:%02d ",(tf->tm_hour),(tf->tm_min),tf->tm_sec);

//file name

printf("%s",pd);

//symbolic-link

if(s_islnk(sbuf.st_mode))

;int len=sizeof(buf);

readlink(pd,buf,len);

printf("%s ",buf);

}printf("\n");

}int main(int argc,char *argv)

struct dirent *pd=null;

while((pd=readdir(pdir))!=null)

}else

if(argc==2)

}

Linux下ls和rm命令的模擬

1.ls和rm命令 ls命令是顯示目錄下的檔案或目錄,不顯示深層子目錄 rm命令是刪除命令,rm rf 目錄名 才能刪除此目錄下的所有子目錄和檔案 2.ls命令的模擬 用於模擬ls的功能 include include include include include include include ...

基於C 語言在Linux環境下模擬實現命令直譯器

一 需求分析 程式實現的功能如下 顯示當前所在目錄的路徑名 列出指定目錄中所有的目錄和檔案 改變當前工作目錄 新建乙個目錄即新建乙個資料夾 刪除乙個目錄即刪除乙個資料夾 退出命令解釋程式 重新命名乙個檔案或目錄 複製已經存在的目錄 在指定的乙個目錄及其子目錄中查詢指定的檔案和目錄,並輸出查詢到的檔案...

基於C 語言在Linux環境下模擬實現命令直譯器

一 需求分析 程式實現的功能如下 顯示當前所在目錄的路徑名 列出指定目錄中所有的目錄和檔案 改變當前工作目錄 新建乙個目錄即新建乙個資料夾 刪除乙個目錄即刪除乙個資料夾 退出命令解釋程式 重新命名乙個檔案或目錄 複製已經存在的目錄 在指定的乙個目錄及其子目錄中查詢指定的檔案和目錄,並輸出查詢到的檔案...