❶ linux 下怎樣用c查看所有的目錄 以及目錄下所有的文件 並在屏幕顯示出來 求程序 就是用c實現ls功能嗎
#include <string.h>
#include <dirent.h>
#include <errno.h>
void print_dir (char *root)
{
DIR *dir;
struct dirent *ptr;
int count;
dir = opendir (root);
if (dir == NULL) {
perror ("fail to open dir");
exit (1);
}
errno = 0;
while ( (ptr = readdir (dir)) != NULL) {
if (strcmp (ptr->d_name, ".") == 0 || strcmp (ptr->d_name, "..") == 0)
continue;
if (ptr->d_type == DT_DIR) {
print_dir (path);
}
printf ("%s\n", ptr->d_name);
}
if (errno != 0) {
perror ("fail to read dir");
exit (1);
}
closedir (dir);
}
❷ Linux下寫一個c程序,創建一個子進程,利用execl系統調用,若成功則去執行ls-l命令。
#include <stdio.h>
#include <unistd.h>
int main()
{
int pid;
pid = fork();
if (pid < 0)
{
printf("Failed to fork!\n");
return 1;
}
if (pid > 0)
{
wait(NULL);
}
else
{
execlp("/bin/ls", "/bin/ls", "-l", NULL);
}
return 0;
}
❸ 如何在C語言中執行shell命令
可以通過system函數,調用shell命令。
1 函數原型:
int system(const char *cmd);
2 功能:
調用cmd內容的系統命令,即shell命令。
3 頭文件:
stdlib.h
4 舉例:
system("ls");
列印當前工作目錄下的文件。
❹ 有什麼命令可以顯示當前目錄下的文件
1.列出文件清單命令:ls
ls命令能夠列出當前目錄下的所有內容。ls 命令的執行方式為:
# ls [-選項] [文件名或者目錄名]
進入到Linux命寬喊令行中後,我們至少要知道當前所處的位置有哪些內容,這些信息就可以使用ls命令來獲得。
在Linux中,ls命令是最常使用的命令之一,因為在命令行下要隨時查看目錄內容。如果不加任何選項的話,ls命令僅列出當前目錄下的文件和目錄名,例如,想要查看/etc目錄下的內容,可以使用下列命令:
# ls /etc
如果想要列出當前目錄下所有文件,則可以使用下列命令:
# ls -a
2、cat命令
功能:在標准輸出上顯示文件。
語法:cat [-vTEuAte] 文件
例子: cat example.txt
cat -A exam2.txt
cat file1 file2 > file2
3、more命令
功能:在終端屏幕按屏顯示文本文件。
語法: more [-pcdls] 文件
例子: more example.c
more -dc example.c
more -c -10 example.c
4、less命令
less命令的功能幾乎和more命令一樣,也是用來按頁顯凳搏示文件,不同之處在於棗巧祥less命令在顯示文件時允許用戶既
可以向前又可以向後翻閱文件。
5、head命令
功能:顯示指定文件的前若干行。預設設置為顯示10行
語法:head [-n] 文件
例子: head example.c
head -3 example.c
6、tail命令
功能:顯示指定文件的末尾若干行。預設設置為顯示10行
語法:tail [+ / - num ] [參數] 文件
+num 從第num行以後開始顯示。- num 從距文件尾num行處開始顯示。
例子: tail example.c
tail -4 example.c
7、grep、fgrep和egrep命令
功能:
這組命令以指定模式搜索文件,並通知用戶在什麼文件中搜索到與指定的模式匹配的字元串,並列印出所有包含該字元串的文本行,在該文本行的最前面是該行所在的文件名。grep命令一次只能搜索一個指定的模式;egrep命令檢索擴展的正則表達式(包括表達式組和可選項);fgrep命令檢索固定字元串,它不識別正則表達式,是快速搜索命令。
語法:
grep [-EFbcihlnvxef] [查找模式] [文件名1,文件名2,……]
egrep [選項] [查找模式] [文件名1,文件名2,……]
fgrep [選項] [查找模式] [文件名1,文件名2,……]
例子: grep "text file" example
grep data *
grep goto *.c
❺ LS(LINUX中ls命令)詳細資料大全
ls 指令是Linux下最常用的指令之一。
ls 命令將每個由 Directory 參數指定的目錄或者每個由 File 參數指定的名稱寫到標准輸出,以及您所要求的和標志一起的其它信息。
如果不指定 File 或 Directory 參數, ls 命令顯示當前目錄的內容。
基本介紹
- 中文名 :ls
- 類屬 :指令
- 所屬領域 :計算機
- 套用范圍 :linux
指令釋義,描述,許可權表示,標志,注意事項,
指令釋義
ls 指令可以說是Linux下最常用的指令之一。它有許多的選項,下面列出了 ls 指令的絕大多數選項。 List information about the FILEs (the current directory by default).Sort entries alphabetically if none of -cftuvSUX nor --sort is specified. 用法:ls [選項]... [檔案]... 運用舉例:
1.列出具體檔案 #ls -al 這個最常用,可是往往又不徹底符合要求,
2.列出一切子目錄的檔案:#ls -R 上個指令僅僅列出了本目錄下的一切目錄和檔案,可是目錄下的檔案不會循環的列出。
3.若是檔案過多一屏看不完,怎麼辦?並且,關於想找到許多檔案中的某個檔案的姓名。
3.1分屏顯現:#ls -l|more 能在當時屏退出,很有用,但不能一頁一頁翻屏
#ls -l|less 能用pgup,pgdw 翻頁,但不能在當時方位退出
3.2橫向輸出盡可能多的顯現檔案姓名: #ls -m
-a 列出目錄下的一切檔案,包含以 . 最初的隱含檔案。常用
-m 橫向輸出檔案名稱,並以「,」作分格符。
-c 輸出檔案的 i 節點的修正時刻,並以此排序。
-R 列出一切子目錄下的檔案。
-l 列出檔案的具體信息。
-s 在每個檔案名稱後輸出該檔案的巨細。
-k 以 k 位元組的方式表明檔案的巨細。
-i 輸出檔案的 i 節點的索引信息。
2.只顯現目錄:#ls -l |grep ^d 3.只顯現非目錄檔案:#ls -l |grep ^[^d]
3.對輸出檔案進行各種排序;
3.1 依照字元序(default): #ls -l
3.2 依照修正時刻排序: #ls -t 近來修正在最上面
3.3 逆排序 : #ls -r
3.4 按檔案巨細排序 :#ls -S 大檔案的在上
3.5 依照檔案擴展名(最終一個.後的字元)排序: #ls -X
3.6 按數字排序 :#ls -lv
-t 以時刻排序。
-r 對目錄反向排序
-f -U 對輸出的檔案不排序。
-X 以檔案的擴展名(最終一個 . 後的字元)排序。
-S 以檔案巨細排序。
-u 以檔案前次被拜訪的時刻排序。
-n 用數字的 UID,GID 替代稱號。
-o 顯現檔案的除組信息外的具體信息。
-p -F 在每個檔案名稱後附上一個字元以闡明該檔案的類型,「*」表明可執行的一般
檔案;「/」表明目錄;「@」表明符號連線;「|」表明FIFOs;「=」表明套接字(sockets)。
-q 用?替代不行輸出的字元。
-x 按列輸出,橫向排序。
暫時無用選項:
-b 把檔案名稱中不可輸出的字元用反斜杠加字元編號(就象在C言語里相同)的方式列出。不常用
-d 將目錄象檔案相同顯現,而不是顯現其下的檔案。
-e 輸出時刻的悉數信息,而不是輸出簡略信息。 沒用
-g 無用。
-A 顯現除 「.」和「..」外的一切檔案。
-B 不輸出以 「~」結束的備份檔案。
-C 按列輸出,縱向排序。
-G 輸出檔案的組的信息。
-L 列出連線檔案名稱而不是連線到的檔案。
-N 不約束檔案長度。
-Q 把輸出的檔案名稱用雙引號括起來。
-1 一行只輸出一個檔案。
--color=no 不顯現五顏六色檔案名稱
--help 在規范輸出上顯現協助信息。
--version 在規范輸出上輸出版別信息並退出
描述
ls 命令將每個由 Directory 參數指定的目錄或者每個由 File 參數指定的名稱寫到標准輸出,以及您所要求的和標志一起的其它信息。如果不指定 File 或 Directory 參數, ls 命令顯示當前目錄的內容。 在互斥對中指定多個選項不看成錯誤。每對中最後一個指定的選項確定輸出格式。 預設情況下,ls 命令按照檔案名稱的字母順序顯示所有信息。整理順序由環境變數 LANG 或 LC_COLLATE 環境變數確定。在 AIX 5L Version 5.2 General Programming Concepts: Writing and Debugging Programs 中的 "National Language Support Overview for Programming" 包含更多細節。 當 ls 命令顯示目錄內容時,它不顯示名稱以 .(點)開頭的檔案項,除非使用了 -a 或者 -A 標志。如果命令由 root 用戶執行,它預設使用 -A 標志。 格式化輸出有三種主要方式: * 每行列出一項。 * 通過指定 -C 或 -x 標志以多列列出各項。當向 tty 輸出時,-C 標志是預設格式。如果檔案或目錄名太長,ls 命令顯示單列輸出。 * 通過指定 -m 標志可以以逗號分隔系列列出項。 要確定輸出行中字元位置的數目,ls 命令使用環境變數 COLUMNS。如果沒有設定此變數,命令獲取顯示的當前列值。如果使用這些方法,ls 命令還不能確定字元位置的數量,它就使用預設值 80。 使用 -e 和 -l 標志所顯示的方式解釋如下: 如果第一個字元是: d 此項為目錄。 b 此項為塊特殊檔案。 c 此項為字元特殊檔案。 l 此項為符號連結,或者指定 -N 標志,或者符號連結不指向現有檔案。 p 此項為一個先進先出(FIFO)特殊檔案。 s 此項為本地套接字。 - 此項為普通檔案。 接下來的 9 個字元被分成 3 個集合,每個集合 3 個字元。第一組 3 字元集合顯示所有者許可權。下一組 3 字元集合顯示了組中其它用戶的許可權。最後 3 字元集合顯示了訪問此檔案的其它任何人的許可權。每個集合中的三個字元各自表示了檔案的讀、寫和執行許可權。目錄的執行許可權讓您可以搜尋目錄中的指定檔案。
許可權表示
如下: r 讀 w 寫(編輯) x 執行(搜尋) - 沒有授予相應的許可權 如果檔案有 set-group-ID 方式,那麼組執行許可權字元是 s。如果檔案有 set-user-ID 方式,則用戶執行許可權字元是 s。如果方式位被設定為 01000(八進制)(請參閱 chmod 命令以獲得此方式的含義),最後一個方式字元(通常 x 或者 -)是 T。如果沒有設定相應的執行許可權,set-ID 的指示和方式位 01000 以大寫字母開頭(分別為 S 和 T)。方式 t 表示粘滯位是為檔案或目錄而設定的。 當使用 -e 標志時,其顯示方式與使用 -l 標志一樣,除了多出了第 11 個字元,其解釋如下: + 表示檔案有擴展安全性信息。例如,檔案可能在方式中有擴展的 ACL、TCB 或者 TP 屬性。 通過使用 aclget 命令,可以顯示檔案的訪問控制信息(ACL)。通過使用 chtcb 命令,可以顯示 TCB 和 TP 屬性的值。 - 表示檔案沒有擴展安全性信息。 當列出目錄中檔案大小時,ls 命令顯示塊總數,包括間接塊。
標志
-A 列出所有條目,除了 .(點)和 ..(點-點)。 -a 列出目錄中所有項,包括以 .(點)開始的項。 -b 以八進制 (
nn) 表示法顯示非列印字元。 -c 使用索引節點最近一次修改的時間,用以排序(當帶 -t 標志使用時)或者用以顯示(當帶 -l 標志使用時)。該標志必須和 -t 或 -l 標志或者兩者一起使用。 -C 以多列縱向排序輸出。當往終端輸出時,此為預設方法。 -d 僅僅顯示指定目錄信息。目錄和檔案一樣處理,這在當使用 -l 標志獲取目錄狀態時非常有用。 -e 顯示方式(包括安全信息)、連結數目、所有者、組、大小(按位元組)、最近修改時間和每個檔案名稱稱。如果檔案是特殊檔案,大小欄位包含主要和次要設備數目。如果檔案是符號連結,會列印所連結到的檔案的路徑名,其前有 ->(減號,大於號)符號。顯示符號連結的屬性。 -E 列出檔案的保留空間、固定范圍大小和范圍分配標志信息。使用該標志時,必須指定 -l 標志。 -f 在每個存儲槽中列出 Directory 參數指定的每個目錄的名稱。該標志關閉 -l、-t、 -s 和 -r 標志並且開啟 -a 標志。列表的順序就是項出現在目錄中的順序。 -F 如果檔案是目錄,在檔案名稱後面放置一個 /(斜杠),如果檔案可執行,則放置一個 *(星號),如果檔案為套接字,則放置一個 =(等號),如果為 FIFO,則放置一個 |(管道)符號,如果是符號連結,則放置一個 @。 註:只有在使用 -N 標志或者連結指向一個不存在的檔案時,符號連結顯示時才後跟 ->。否則,顯示目標檔案的有關信息。通過輸入 ls -f 命令,也可以調用此選項。 -g 與使用 -l 標志時顯示同樣的信息,除了 -g 標志禁止顯示所有者和符號連結信息。 -H 如果在命令行上指定了引用類型目錄檔案的符號連結,ls 命令將檔案信息和檔案類型估計為由連結引用的檔案的信息和類型,而非連結本身;然而,ls 命令將寫連結本身的名稱,而非由連結引用的檔案。 -i 顯示每個檔案報告第一列中的索引節點數目。 -L 列出連結引用的檔案或目錄內容。此為預設操作。後跟符號連結。如果使用 -l 選項,-N 選項就成為預設值,不後跟符號連結。當使用 -l 選項時,僅有 -L 選項能夠覆蓋 -N 預設值。 -l (L 的小寫)顯示方式、連結數目、所有者、組、大小(按位元組)和每個檔案最近一次修改時間。如果檔案是特殊檔案,大小欄位包含主要和次要設備數目。如果最近一次修改時間大於六個月之前,時間欄位以 月份 日期 年份 的格式顯示,然而六個月內修改的檔案以 月份 日期 時間 的格式顯示。 如果檔案是符號連結,,列印所連結到的檔案的路徑名,其前跟 ->。顯示符號連結的屬性。-n、-g、和 -o 標志覆蓋 -l 標志。
注意事項
1. 符號連結檔案後跟一個箭頭,然後是符號連結的內容。 2. 當使用 -l 選項時,通過執行 mkpasswd 命令,可以提高 ls 命令的執行性能。當目錄包含不同用戶擁有的檔案時,這非常有用,比如 /tmp 目錄。 -m 使用流輸出格式(逗號分隔系列)。 -n -n 標志除顯示用戶和組 ID 而不是用戶和組名稱以外,它顯示和 -l 標志同樣的信息。 -N 當確定檔案狀態時,不跟在符號連結之後。 註:如果使用 -L 和 -N 兩個標志,最後一個標志起作用。同樣的,任何時候給定一個包含以 /(斜杠)作為最後字元的符號連結,不管使用何種選項,後面都會跟有連結。 -o -o 標志除禁止顯示組和符號連結信息之外,它顯示和 -l 標志同樣的信息。 -p 如果檔案是目錄,在每個檔案名稱後面放置一個斜杠。當將 ls 命令的輸出通過管道傳遞到 pr 命令時,這很有用,如下所示: ls -p | pr -5 -t -w80 -q 將檔案名稱中的非列印字元顯示成 ?(問號)。 -r 反轉排序順序,適當的按字母逆向排序或者首先排序最舊的檔案。 -R 遞歸列出所有子目錄。 -s 按照千位元組(包括間接塊)給出每一項的大小。 -t 按照最近一次修改時間(最近的最先)而不是名稱排序。 -u 使用最近訪問時間,而不是最近修改時間用以排序(當使用 -t 標志)或者顯示(當使用 -l 標志)。如果不和 -t 或 -l 標志或兩者一起使用,則該標志無效。 -x 以多列格式橫向排序輸出。 -1 強制輸出為每行一項格式。當輸出沒有定向到終端時,此為預設值。 退出狀態 此命令返回以下退出值: 0 寫所有檔案成功。 >0 產生錯誤。 示例 1. 要列出當前目錄中的所有檔案,請輸入: ls -a 列出所有檔案,包括 .(點)、..(點點)和其他以點開頭的檔案。 2. 要顯示詳細信息,請輸入: ls -l chap1 .profile 顯示一個長列表,包括關於 chap1 和 .profile 的詳細信息。 3. 要顯示有關目錄的詳細信息,請輸入: ls -d -l . manual manual/chap1 顯示目錄 . 和 manual 以及檔案 manual/chap1 的長列表。不使用 -d 標志時,會列出 . 和 manual 目錄中的所有檔案,而不是關於目錄本身的詳細信息。 4. 要按照修改時間列出檔案,請輸入: ls -l -t 顯示最近被修改檔案的長列表,較舊的檔案跟在後面。 檔案 /usr/bin/ls 包含 ls 命令。 /etc/passwd 包含用戶 ID。 /etc/group 包含組 ID。 /usr/share/lib/terminfo/* 包含終端信息。