導航:首頁 > 操作系統 > linuxlstime

linuxlstime

發布時間:2023-01-06 00:03:52

linux中ls -l是如何工作的如何去實現一個腳本

可以參考:
#include
<sys/types.h>
#include
<sys/stat.h>
#include
<unistd.h>
#include
<stdio.h>
#include
<string.h>
#include
<errno.h>
#include
<pwd.h>
#include
<grp.h>
#include
<time.h>
#include
<dirent.h>
int
do_ls(char
*dir,char
*filename,int
lflag)
{
int
n;
struct
stat
buf;
char
out[100];
struct
passwd
*pw;
struct
group
*gr;
struct
tm
*t;
if(lflag
==
0)
//如果不帶l參數,直接顯示文件/目錄名
{
printf("%s\t",filename);
return
0;
}
if(lstat(dir,&buf)<0)
{
fprintf(stderr,"stat
error:%s\n",strerror(errno));
return
-1;
}
switch(buf.st_mode
&
s_ifmt)
//獲取字元串的屬性:普通文件-、目錄d、字元設備c、塊設備b、管道文件p、連接文件l、套接字文件s
{
case
s_ifreg:
printf("-");
break;
case
s_ifdir:
printf("d");
break;
case
s_ifchr:
printf("c");
break;
case
s_ifblk:
printf("b");
break;
case
s_ififo:
printf("p");
break;
case
s_iflnk:
printf("l");
break;
case
s_ifsock:
printf("s");
break;
}
for(n=8;n>=0;n--)
//列印文件的讀寫屬性:讀r、寫w、執行x、無許可權-
{
if(buf.st_mode&(1<<n))
{
switch(n%3)
{
case
2:
printf("r");
break;
case
1:
printf("w");
break;
case
0:
printf("x");
break;
default:
break;
}
}
else
{
printf("-");
}
}
printf("
%d",buf.st_nlink);
//硬鏈接數,此鏈接非彼鏈接,指(包含)目錄的個數,文件為1,目錄起始為2,再加上目錄里包含的目錄個數(不遞歸,只一層)
pw
=
getpwuid(buf.st_uid);
//所屬用戶名
printf("
%s",pw->pw_name);
gr
=
getgrgid(buf.st_gid);
//所屬組名
printf("
%s",gr->gr_name);
printf("
%ld",buf.st_size);
//位元組計總大小
t
=
localtime(&buf.st_atime);
//最後一次訪問時間
printf("
%d-%d-%d
%d:%d"
,t->tm_year+1900
,t->tm_mon+1
,t->tm_mday
,t->tm_hour
,t->tm_min);

printf("
%s
",filename);

if(s_islnk(buf.st_mode))
//判斷是否為鏈接,是返回真
{
printf("
->
");
if(readlink(filename,out,100)==-1)
{
//printf("readlink
error\n");
}
printf("%s",out);
}
printf("\n");
return
0;
}
int
ls_prepare(char
*w,int
aflag,int
lflag)
//ls的准備工作
{
struct
stat
buf;
//man
lstat可以看到此結構
char
name[100];
dir
*dir;
//類似打開文件的fd描述符
struct
dirent
*pdr;
//man
readdir可以看到此結構
if(lstat(w,&buf)<0)
//獲取文件/目錄屬性並賦值給buf,該函數和lstat一樣,只是當w為鏈接時,指代他本身,並不存在文件
{
fprintf(stderr,"stat
error:%s\n",strerror(errno));
return
-1;
}
if(s_isdir(buf.st_mode))
//判斷是否為目錄,是返回真
{
dir
=
opendir(w);
//打開目錄
while
((pdr
=
readdir(dir))!=null)
//讀/遍歷目錄
{
if(aflag==0)
//如果不帶a參數,越過以.開頭的所有文件/目錄
{
if(pdr->d_name[0]=='.')
continue;
memset(name,0,100);
strcpy(name,w);
//拷貝
strcat(name,"/");
//追加
strcat(name,pdr->d_name);
do_ls(name,pdr->d_name,lflag);
}else
//有a參數顯示所有
{
memset(name,0,100);
strcpy(name,w);
strcat(name,"/");
strcat(name,pdr->d_name);
do_ls(name,pdr->d_name,lflag);
}
}
closedir(dir);
}else
//為文件則直接顯示
{
do_ls(w,w,lflag);
}
return
0;
}
int
main(int
argc,char
**argv)
{
int
aflag
=0;
int
lflag
=0;
char
c;
int
i;
while((c
=
getopt(argc,argv,"al"))!=-1)
//解析命令行參數,即-/--後面的字元串和給定的字元串匹配,有未解析字母返回字母或問號(取決於第3個參數),否則返回-1
{
switch(c)
//此處僅匹配a(所有)和l(列表),即只支持參數a、l
{
case
'a':
aflag
=1;
break;
case
'l':
lflag
=1;
break;
default:
break;
}
}
if(argc
==
optind
)
//optind系統變數,執行命令參數的個數(不包括命令,奇怪的是無參情況下他為1),判斷argc是否為1,是則取當前路徑,讓我們顯得更專業點
{
ls_prepare("./",aflag,lflag);
}
else
{
for(i=optind;i<argc;i++)
//所有目錄都傳進去
ls_prepare(argv[i],aflag,lflag);
}
printf("\n");
return
0;
}

㈡ linux下ls命令

功能:ls命令用來顯示目標列表,在Linux中是使用率較高的命令。ls命令的輸出信息可以進行彩色加亮顯示,以分區不同類型的文件。
格式:ls(選項)(參數)
參數:
-a:顯示所有檔案及目錄(ls內定將檔案名或目錄名稱為「.」的視為影藏,不會列出);
-A:顯示除影藏文件「.」和「..」以外的所有文件列表;
-C:多列顯示輸出結果。這是默認選項;
-l:與「-C」選項功能相反,所有輸出信息用單列格式輸出,不輸出為多列;
-F:在每個輸出項後追加文件的類型標識符,具體含義:「*」表示具有可執行許可權的普通文件,「/」表示目錄,「@」表示符號鏈接,「|」表示命令管道FIFO,「=」表示sockets套接字。當文件為普通文件時,不輸出任何標識符;
-b:將文件中的不可輸出的字元以反斜線「」加字元編碼的方式輸出;
-c:與「-lt」選項連用時,按照文件狀態時間排序輸出目錄內容,排序的依據是文件的索引節點中的ctime欄位。與「-l」選項連用時,則排序的一句是文件的狀態改變時間;
-d:僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號鏈接文件本身,而不顯示其所指向的目錄列表;
-f:此參數的效果和同時指定「aU」參數相同,並關閉「lst」參數的效果;
-i:顯示文件索引節點號(inode)。一個索引節點代表一個文件;
--file-type:與「-F」選項的功能相同,但是不顯示「*」;
-k:以KB(千位元組)為單位顯示文件大小;
-l:以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、許可權模式、硬連接數、所有者、組、文件大小和文件的最後修改時間等;
-m:用「,」號區隔每個文件和目錄的名稱;
-n:以用戶識別碼和群組識別碼替代其名稱;
-r:以文件名反序排列並輸出目錄內容列表;
-s:顯示文件和目錄的大小,以區塊為單位;
-t:用文件和目錄的更改時間排序;
-L:如果遇到性質為符號鏈接的文件或目錄,直接列出該鏈接所指向的原始文件或目錄;
-R:遞歸處理,將指定目錄下的所有文件及子目錄一並處理;
--full-time:列出完整的日期與時間;
--color[=WHEN]:使用不同的顏色高亮顯示不同類型的。

㈢ linux 默認時間格式問題請教。 越詳細越好。

Linux 的時間內部是 timestemp 。這個時間輸出是根據當前時區的設置進行輸出,當前時區的設置文件是 /etc/localtime (如果我沒記錯)。就算你沒設置時區,那麼系統依然會有一個默認的時區進行輸出。
系統默認有一個 localtime ,好像格式設置是英國表示法。時區沒有,應該是 local 時間而不是 GMT 。
一個正確使用的 linux 專用機器,計算機時間一般是保存為格林威治標准時間,系統在輸出時會根據 localtime 進行轉換輸出。

自定義默認日期應該是在輸出時間時設置輸出格式信息,而不是強行的去設置整個系統的環境。
因為這個設置只對考慮時區設置的輸出格式的一些程序管用,在系統內部,依然是通用的 timestemp 存儲。而且很多程序有自己獨立的設置,尤其是在某些程序裡面,他不同的情況下會進行不同的輸出。比如 mysql ,非 timestemp 時間的存儲用的是 ISO 標准格式,也就是 YYYY-MM-DD HH:mm:ss 的樣子(如果還是我沒記錯),如果你需要格式要求,需要自己查詢後或者查詢時進行格式轉換。

你正在一個錯誤的方向進行一個錯誤的折騰。

㈣ linux系統如何用一個指令去查看另一個指令執行用了多長時間

time命令可以查看執行時間

比如要查看ls執行時間, 可以用"time ls",就會看到執行時間了。

㈤ Linux ls 顯示文件年份 並支持自定義顯示年月日時分秒

默認情況下 ls -l 命令只顯示月和日,不顯示年份:

如要要顯示年份,就要使用 --time-style 參數,該參數有幾個選項:

所以要顯示年份可以使用 full-iso long-iso +Format 這幾種參數選項。

--time-style=full-iso 有一個替代參數 --full-time ,可以直接用這個參數來顯示精確的時間:

Linux下文件的創建時間、訪問時間、修改時間和改變時間:
ls -lu filename 列出文件的 atime (最後讀取時間)
ls -lc filename 列出文件的 ctime (最後許可權時間)
ls -l filename 列出文件的 mtime (修改文件內容)

㈥ Linux系統通配符與ls命令的功能及用法

文件通配符

* 匹配零個或多個字元

? 匹配任何單個字元

~ 當前用戶家目錄

~mage 用戶mage家目錄

~+ 當前工作目錄

~- 前一個工作目錄

[0-9] 匹配數字范圍

[a-z]:字母(或的關系)就是表示中括弧中的某一個字元

[A-Z]:字母

[a-c]:a A b B c

[A-C]:A b B c C,也就是[]在裡面匹配字母時是以aAbB...這樣排序的

[wang] 匹配列表中的任何的一個字元

[^wang] 匹配列表中的所有字元以外的字元

{}花括弧用來匹配一組用逗號分隔的字元串中的任一個。

左花括弧之前的所有字元稱為前文(preamble),右花括弧之後的所有字元稱為後文(preamble)。

前文和後文都是可選的。花括弧中不能包含不加引號的空白符

預定義的字元類:man 7 glob(通配符)

[:digit:]:任意數字,相當於0-9

[:lower:]:任意小寫字母[:lower:] 這個只相當於a-z,表示的時候必須要在加上中括弧

[:upper:]: 任意大寫字母

[:alpha:]: 任意大小寫字母

[:alnum:]:任意數字或字母

[:blank:]:水平空白字元

[:space:]:水平或垂直空白字元

[:punct:]:標點符號

[:print:]:可列印字元

[:cntrl:]:控制(非列印)字元

[:graph:]:圖形字元

[:xdigit:]:十六進制字元

ls命令的功能:

列出當前目錄的內容或指定目錄

ls命令的用法:

ls [options] [files_or_dirs]

        示例:

                ls -a 包含隱藏文件

                ls -l 顯示額外的信息

                ls -r 倒轉排序或者可以說是逆序排列

                ls -R 目錄遞歸通過(遞歸會進入到子目錄)

                ls -ld 目錄和符號鏈接信息

                ls -1  文件分行顯示(列顯示)

                ls –S  按從大到小排序(按文件的大小排序)

                ls –t  按mtime排序(按文件的修改時間排序)

                ls –u 配合-t選項,顯示並按atime從新到舊排序

                ls –U  按目錄存放順序顯示(以創建文件的次序進行顯示)

                ls –X  按文件後綴排序

                ls -d  列出目錄本身並不顯示內容

                ls -h  單位換算

                ls -I  --ignore(忽略)=PATTERN(模式)按著規定的模式去隱藏不進行顯示

實例:

1、顯示/var目錄下所有以l開頭,以一個小寫字母結尾,且中間出現至少一位數

字的文件或目錄

ls -d /var/l*[0-9]*[[:lower:]]

2、顯示/etc目錄下以任意一位數字開頭,且以非數字結尾的文件或目錄

ls -d /etc/[0-9]*[^0-9]

3、顯示/etc/目錄下以非字母開頭,後面跟了一個字母及其它任意長度任意字元

的文件或目錄

ls -d /etc/[^[:alpha:]][[:alpha:]]*

4、顯示/etc/目錄下所有以rc開頭,並後面是0-6之間的數字,其它為任意字元

的文件或目錄

ls -d /etc/rc[0-6]*

5、顯示/etc目錄下,所有以.d結尾的文件或目錄

ls -d /etc/*.d

6、顯示/etc目錄下,所有.conf結尾,且以m,n,r,p開頭的文件或目錄

ls -d /etc/[mnrp]*.conf

7、只顯示/root下的隱藏文件和目錄

ls -d /root/.*

ls -aI "[^.]*"  當前目錄為/root

l. ls -d .* --color=auto 當前目錄為/root

8、只顯示/etc下的非隱藏目錄

ls -d /etc/*/

㈦ linux系統中ls命令是什麼意思

ls命令是linux下最常用的命令之一,ls跟dos下的dir命令是一樣的都是用來列出目錄下的文件。x0dx0a1. ls -a 列出文件下所有的文件,包括以「.「開頭的隱藏文件(linux下文件隱藏文件是以.開頭的,如果存在..代表存在著父目錄)。x0dx0a2. ls -l 列出文件的詳細信息,如創建者,創建時間,文件的讀寫許可權列表等等。x0dx0a3. ls -F 在每一個文件的末尾加上一個字元說明該文件的類型。"@"表示符號鏈接、"|"表示FIFOS、"/"表示目錄、"="表示套接字。x0dx0a4. ls -s 在每個文件的後面列印出文件的大小。 size(大小)x0dx0a5. ls -t 按時間進行文件的排序 Time(時間)x0dx0a6. ls -A 列出除了"."和".."以外的文件。x0dx0a7. ls -R 將目錄下所有的子目錄的文件都列出來,相當於我們編程中的「遞歸」實現x0dx0a8. ls -L 列出文件的鏈接名。Link(鏈接)x0dx0a9. ls -S 以文件的大小進行排序

㈧ linux查看文件時間

通過你的描述,查看文件時間命令如下:

[root@Backup2 ~]# ll --full-time

total 20

-rw-r--r-- 1 root root 275 2020-07-28 03:13:57.332661556 +0800 1

-rw-r--r-- 1 root root 9359 2020-11-18 08:14:44.765247613 +0800 106.txt

-rw-------. 1 root root 1188 2020-07-27 17:47:59.535241829 +0800 anaconda-ks.cfg

[root@Backup2 ~]#

溫馨提示:

ll 命令為 ls -l 的別名

命令為:

[root@Backup2 ~]# alias ll='ls -l'

[root@Backup2 ~]#

或者

[root@Backup2 ~]# alias ll='ls -l --full-time '

[root@Backup2 ~]#

[root@Backup2 ~]# ll

total 20

-rw-r--r-- 1 root root 275 2020-07-28 03:13:57.332661556 +0800 1

-rw-r--r-- 1 root root 9359 2020-11-18 08:14:44.765247613 +0800 106.txt

-rw-------. 1 root root 1188 2020-07-27 17:47:59.535241829 +0800 anaconda-ks.cfg

[root@Backup2 ~]#

以上就是關於linux 查看文件時間的命令,由於系統環境不同,可能會有出入,如有問題可以關注+私信,我會第一時間回復,希望我的回答能對你有所幫助。。。。。。

㈨ 如何學習linux命令之ls的使用

1 輸入 ls -a 或 ls -A
-a:顯示所有文件及目錄(ls內定將檔案名或目錄名稱為「.」的視為隱藏,不會列出);
-A:顯示除隱藏文件「.」和「..」以外的所有文件列表;
2 輸入 ls -C 或 ls -F
-C:多列顯示輸出結果。這是默認選項; -l:與「-C」選項功能相反,所有輸出信息用單列格式輸出,不輸出為多列;

-F:在每個輸出項後追加文件的類型標識符,具體含義:「*」表示具有可執行許可權的普通文件,「/」表示目錄,「@」表示符號鏈接,「|」表示命令管道FIFO,「=」表示sockets套接字。當文件為普通文件時,不輸出任何標識符;
3 輸入 ls -b 或 ls -d
-b:將文件中的不可輸出的字元以反斜線「」加字元編碼的方式輸出; -c:與「-lt」選項連用時,按照文件狀態時間排序輸出目錄內容,排序的依據是文件的索引節點中的ctime欄位。與「-l」選項連用時,則排序的一句是文件的狀態改變時間;
-d:僅顯示目錄名,而不顯示目錄下的內容列表。顯示符號鏈接文件本身,而不顯示其所指向的目錄列表;
4 輸入 ls -f 或 ls -i
-f:此參數的效果和同時指定「aU」參數相同,並關閉「lst」參數的效果;
-i:顯示文件索引節點號(inode)。一個索引節點代表一個文件; --file-type:與「-F」選項的功能相同,但是不顯示「*」;
5 輸入 ls -k 或 ls -l 或 ls -m
-k:以KB(千位元組)為單位顯示文件大小;
-l:以長格式顯示目錄下的內容列表。輸出的信息從左到右依次包括文件名,文件類型、許可權模式、硬連接數、所有者、組、文件大小和文件的最後修改時間等;
-m:用「,」號區隔每個文件和目錄的名稱;
6 輸入 ls -n 或 ls -r
-n:以用戶識別碼和群組識別碼替代其名稱;
-r:以文件名反序排列並輸出目錄內容列表;
7 輸入 ls -s 或 ls -t 或 ls -t --full-time:列出完整的日期與時間

-s:顯示文件和目錄的大小,以區塊為單位;
-t:用文件和目錄的更改時間排序;
8 輸入 ls -L 或 ls -R
-L:如果遇到性質為符號鏈接的文件或目錄,直接列出該鏈接所指向的原始文件或目錄;
-R:遞歸處理,將指定目錄下的所有文件及子目錄一並處理;

閱讀全文

與linuxlstime相關的資料

熱點內容
小愛音箱怎麼設置用qq音樂app播放 瀏覽:936
程序員如何發展事業 瀏覽:154
電腦程序員英文版 瀏覽:934
電腦文件夾文字可以改顏色嗎 瀏覽:801
吉安程序員招聘 瀏覽:166
不能下載的單片機 瀏覽:940
程序員子女昌平二中考出來的名校 瀏覽:677
令牌桶演算法實現 瀏覽:74
tc腳本文件夾 瀏覽:732
學會繪畫pdf 瀏覽:954
隱身俠加密寶手機版 瀏覽:135
農行app怎麼辦理簽約手續 瀏覽:185
汽車壓力解壓神器 瀏覽:307
家用冰箱壓縮機有風扇嗎 瀏覽:647
安卓qq年齡怎麼看 瀏覽:839
屏幕跳屏亂點app怎麼解決 瀏覽:414
turbo加速器android 瀏覽:432
洪尚秀的電影哪裡哪個app能看 瀏覽:151
百度網站加密視頻怎麼下載 瀏覽:135
台州ug產品編程培訓班 瀏覽:866