簡單的ls實現,首先,我們需要遍歷引數目錄下的各個檔案,再根據檔案相應的性質,讀取檔案的許可權,使用者組,使用者名稱,大小,最後一次訪問的時間,再根據檔名排序後依次顯示。
具體的函式宣告如下:
1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #define cnt 256
13 int file_name(dir *fp, char *path, char name[cnt]);
14 void str_sort(char name[cnt], int cnt);
15 void mode_to_char(mode_t mode, char *buf);
16 char *time_change(char *time);
17 void show(char name[cnt], int cnt);
目錄的遍歷,我們需要知道目錄下讀取到的檔案個數,所以需要返回相應的int型值。
目錄的遍歷實現如下:
1intfile_name(dir*fp,char*path,charname[cnt])
2
14closedir(fp);
15returncnt;
16}
然後我們需要了解檔案的許可權,檔案許可權儲存在相對應的引數char *buf中。
檔案許可權的解讀實現如下:
1 void mode_to_char (mode_t mode, char *buf)
2
想應的,時間的顯示不需要那麼精確,所以我們應適當的縮短時間精確度。
時間的顯示實現如下:
1 char *time_change(char *time)
2 然後,我們需要根據檔名稱按照字典序排序。
排序的實現如下:
1 void str_sort(char name[cnt], int cnt)
2
15 }
最後,我們在編寫乙個簡單的show()函式,來顯示各個檔案的資訊。
show函式實現如下:
1 void show(char name[cnt], int cnt)
2
15 mode_to_char(buf.st_mode, mode);
16 str = ctime(&buf.st_atime);
17 str = time_change(str);
18 int i;
19 for(i = strlen(name[index]) - 1; name[index][i] != '/'; i --);
20 i++;
21 printf("%10s.%2d %5s %5s%5d%13s %s\n", mode, buf.st_nlink, getpwuid(buf.st_uid)->pw_name, getgrgid(buf.st_gid)->gr_name, buf.st_size, str, name[index] + i);
22 }
23 }
這裡需要注意:
getpwuid()返回的不是我們要的使用者名稱,我們需要的是該結構體中的乙個變數——pw_name,同樣的getgrid()也應做相應的轉換。
測試**如下:
1 #include "head.h"
2 int main(int argc, char *ar**)
3
13 cnt = file_name(fp, ar**[1], name);
14 str_sort(name, cnt);
15 show(name, cnt);
16 return 0;
17 }
Linux基礎命令 ls
ls 顯示當前目錄下的所有內容。此命令的適用範圍 redhat rhel ubuntu centos suse opensuse fedora。1 語法 ls option file 2 選項列表 version 顯示命令版本資訊 help 顯示幫助文件 a all 列出所有的檔案 a almost...
Linux 基礎 ls 命令
第二天,繼續學習linux命令。ls 顯示當前目錄下的檔案和目錄,但是不會顯示隱藏的檔案和目錄。ls a 顯示當前目錄下的所有檔案和目錄。ls l 顯示當前目錄下的檔案和目錄的一些詳細資訊,其中包括 檔案型別 比如目錄 d 檔案 字元型檔案 c 或塊裝置 d 檔案的許可權 檔案的硬鏈結總數 檔案屬主...
Linux基礎ls命令
ls 命令是linux下最常用的命令,通過ls 命令不僅可以檢視linux資料夾包含的檔案 而且可以檢視檔案許可權 包括目錄 資料夾 檔案許可權 檢視目錄資訊等等。ls 命令在日常的linux操作中用的很多 命令格式 ls 選項 目錄名 命令功能 列出目標目錄中所有的子目錄和檔案。查詢常用引數 ls...