linux ls -l 详解
ls -l 列表信息詳解
我們平時(shí)用ls -l 命令查看一個(gè)目錄下的文件和子目錄的詳悉信息時(shí),會(huì)得到一個(gè)詳細(xì)的文件和目錄名列表.這個(gè)列表包含了文件的屬性,所屬用戶,所屬組,創(chuàng)建時(shí)間,文件大小等等信息.這些信息到底是什么意思呢?有很多初學(xué)者對(duì)這些不太了解,因此想詳悉講解一下用ls -l命令得到的文件列表每一個(gè)字段的意思
以筆者電腦的/root目錄為例:
[root@gucuiwen root]# ll
總用量 4055
-rw-r--r-- 1 root root 1581 11月 24 18:14anaconda-ks.cfg
drwxr-xr-x 2 root root 208 12月 1 13:50 babylinux
-rw-r--r-- 1 root root 1474560 11月 25 15:02babylinux.img
-rw-r--r-- 1 root root 26829 11月 25 15:10 babylinux.png
lrwxrwxrwx 1 root root 9 1月 4 11:06 disk1.link.png-> disk1.png
-rw-r--r-- 1 root root 3209 11月 26 12:07 disk1.png
-rw-r--r-- 1 root root 692 11月 26 13:16 disk2.png
-rw-r--r-- 1 root root 718 11月 26 13:30 disk3.png
drwx------ 8 root root 392 1月 4 08:40 evolution
-rwxr-xr-x 1 root root 13695 11月 30 16:51 fangkuai.sh
drwxr-xr-x 2 root root 208 12月 28 12:06 FreeBSD
-rw-r--r-- 1 root root 2315 11月 25 17:19 getMBR.png
brw-r----- 1 root root 3, 1 1月 4 11:06 hda1
drwxr-xr-x 2 root root 296 12月 31 11:53 htmls
-rw-r--r-- 1 root root 21369 11月 24 18:12 install.log
-rw-r--r-- 1 root root 3024 11月 24 18:12install.log.syslog
-rw-r--r-- 1 root root 293 1月 4 10:51 ls.txt
-rw-r--r-- 1 root root 2237702 11月 25 15:09 magick.miff
-rw-r--r-- 1 root root 13493 11月 25 17:31 mbr1.png
-rw-r--r-- 1 root root 8123 11月 25 17:42 mbr2.png
-rw-r--r-- 1 root root 512 11月 30 16:10 mbr.dat
-rw-r--r-- 1 root root 64512 11月 26 15:33 partition.doc
-rw-r--r-- 1 root root 49887 11月 26 15:32 partition.sxw
-rw-r--r-- 1 root root 1541 12月 18 13:14 passwd
-rw-r--r-- 1 root root 46320 11月 25 17:28Screenshot-1.png
-rw-r--r-- 1 root root 44145 11月 25 17:32Screenshot-2.png
-rw-r--r-- 1 root root 43732 11月 25 17:13Screenshot.png
drwxr-xr-x 3 root root 72 1月 4 10:49 test
-rw-r--r-- 1 root root 0 12月 18 10:44 tset
crw-r----- 1 root root 4, 65 1月 4 11:08 ttyS1
-rw-r--r-- 1 root root 9754 12月 1 11:25 X.sxw
-rw-r--r-- 1 root root 8704 11月 29 12:22 員工信息.xls
-rw-r--r-- 1 root root 19456 11月 26 17:14 搬千計(jì)劃.xls
可以看到,用ls -l命令查看某一個(gè)目錄會(huì)得到一個(gè)9個(gè)字段的列表.
#######################
第1行:總用量(total)
#######################
這個(gè)數(shù)值是該目錄下所有文件及目錄列表第5個(gè)字段的和(以k為單位),也就是該目錄的大小.請(qǐng)注意和該目錄下的文件和子目錄下文件的總合做區(qū)分.這個(gè)數(shù)字和du /root 得到的數(shù)字的大小是不一樣的.可以用awk命令來驗(yàn)證.
用awk累加第5字段得到的數(shù)值:
[root@gucuiwen root]# ls -l |awk'BEGIN{sum=0}{sum+=$5}END{print sum}'
4104092
轉(zhuǎn)化成以K為單位:
[root@gucuiwen root]# ls -l |awk'BEGIN{sum=0}{sum+=$5}END{print sum/1024}'
4007.9
用ls -l得到的數(shù)值:
總用量 4055
用du -sh /root得到的數(shù)值:
[root@gucuiwen root]# du -sh /root
127M /root
可以看到累加第5個(gè)字段得到的值和total顯示的是一樣的(因?yàn)榫唧w算法的不同,略微有差別).得到的數(shù)值實(shí)際上是root目錄的大小(把root目錄看成是一個(gè)特殊的文件,就可以理解什么是目錄的大小).而用du得到的數(shù)值是root目錄下所由文件和子目錄下全部文件的大小的總合.
########################
第1字段:
文件屬性字段
########################
文件屬性字段總共有10個(gè)字母組成,第一個(gè)字母表示文件類型,如果這個(gè)字母是一個(gè)減號(hào)"-",則說明該文件是一個(gè)普通文件.字母"d"表示該文件是一個(gè)目錄,字母"d",是dirtectory(目錄)的縮寫.請(qǐng)注意,一個(gè)目錄或者說一個(gè)文件夾是一個(gè)特殊文件,這個(gè)特殊文件存放的是其他文件和文件夾的相關(guān)信息.
如果該字母是"l",表示該文件是一個(gè)符號(hào)鏈接.符號(hào)鏈接的概念類似于windows里的快捷方式.字母"l"是link(鏈接)的縮寫.在UNIX類系統(tǒng)中,一個(gè)文件可以有多個(gè)文件名,一個(gè)文件的多個(gè)文件名之間互稱為硬鏈接(hard link).這些文件頭可以指向同一個(gè)文件,刪除其中一個(gè)文件名并不能刪除該文件,只有把指向該文件的所有硬鏈接都刪除,這個(gè)文件所占用的空間才真正被釋放,該文件才真正被刪除.這和windows是有很大區(qū)別的,windows中不允許一個(gè)文件有兩個(gè)以上文件名,如果存在這中情況,則被認(rèn)為是文件系統(tǒng)錯(cuò)誤.如果你以前在windows下玩過DEBUG就知道,可以用DEBUG修改一張軟盤上的根目錄,使一個(gè)文件同時(shí)具有兩個(gè)文件名.但是修改好后用 scandisk監(jiān)測(cè)的時(shí)候會(huì)被認(rèn)為是交叉鏈接錯(cuò)誤.
開頭為b的表示塊設(shè)備文件(block),,設(shè)備文件是普通文件和程序訪問硬件設(shè)備的入口,是很特殊的文件.它的沒有文件大小,只有一個(gè)主設(shè)備號(hào)和一個(gè)輔設(shè)備號(hào).上面的hda1就是一個(gè)設(shè)備文件,具有主設(shè)備號(hào)3和輔設(shè)備號(hào)1.表示第一個(gè)硬盤第一個(gè)分區(qū).
另外,如果第一個(gè)字母為c表示該文件是一個(gè)字符設(shè)備文件(character),一次傳輸一個(gè)字節(jié)的設(shè)備被稱為字符設(shè)備,比如鍵盤,字符終端等,傳輸數(shù)據(jù)的最小單位為一個(gè)字節(jié).一次傳輸數(shù)據(jù)為一整塊的被稱為塊設(shè)備,比如硬盤,光盤等.最小數(shù)據(jù)傳輸單位為一個(gè)數(shù)據(jù)塊(通常一個(gè)數(shù)據(jù)塊的大小是512字節(jié)).
第一字段的后面9個(gè)字母表示文件的權(quán)限.
r表是讀 (Read)
w表示寫 (Write)
x表示執(zhí)行 (eXecute)
其中前三個(gè)表示文件屬主的權(quán)限,中間三個(gè)表示組用戶權(quán)限,最后三個(gè)表示其他用戶權(quán)限.
比如:
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
表示文件的擁有者root對(duì)文件有讀寫權(quán)限,其他人(同組用戶和其他用戶只有讀的權(quán)限)
另外,權(quán)限組還有一些特殊的表示法.比如/usr/X11R6/bin/XFree86具有如下權(quán)限:
[root@gucuiwen root]# ll/usr/X11R6/bin/XFree86
-rws--x--x 1 root root 1960262 2003-02-28 /usr/X11R6/bin/XFree86
其中的s表示這個(gè)是網(wǎng)絡(luò)接口程序"s"是socket的縮寫.該程序在運(yùn)行過程中會(huì)打開一個(gè)網(wǎng)絡(luò)接口.
其他UNIX類系統(tǒng)如FreeBSD中還有t權(quán)限,表示一個(gè)臨時(shí)(temporary)文件
在freeBSD中用ls -l /tmp 可以看到這樣的權(quán)限:
drwxrwxrwt
它的最后一位是字母"t"
###############################
第2字段
文件硬鏈接數(shù)或目錄子目錄數(shù)
###############################
如果一個(gè)文件不是目錄那么這一字段表示,這個(gè)文件所具有的硬鏈接數(shù),即這個(gè)文件總共有多少個(gè)文件名.查看第一個(gè)文件:
-rw-r--r-- 1 root root 1581 11月 24 18:14 anaconda-ks.cfg
第2字段的值為1,說明這個(gè)文件只有anaconda-ks.cfg這一個(gè)文件名.即只有一個(gè)指向該鏈接的硬鏈接.
如果我用ln,做一個(gè)指向該文件的硬鏈接再查看該文件,該文件的第2字段就會(huì)變成2:
[root@gucuiwen root]# lnanaconda-ks.cfg anaconda-ks.cfg.hardlink
[root@gucuiwen root]# ls -l
總用量 4071
-rw-r--r-- 2 root root 1581 11月 24 18:14anaconda-ks.cfg
-rw-r--r-- 2 root root 1581 11月 24 18:14anaconda-ks.cfg.hardlink
此時(shí),anaconda-ks.cfg 和anaconda-ks.cfg.hardlink 稱為互為硬鏈接.他們指向同一個(gè)文件,無(wú)論是修改哪一個(gè)文件,另一個(gè)里也做相應(yīng)的變化,因?yàn)閷?shí)際上他們指向同一個(gè)文件.
用ls -i anaconda-ks.cfg可以查看它的文件節(jié)點(diǎn)(inode)
互為硬鏈接的文件具有相同的文件節(jié)點(diǎn). 以下是驗(yàn)證實(shí)驗(yàn):
[root@gucuiwen root]# ls -ianaconda-ks.cfg
18102 anaconda-ks.cfg
[root@gucuiwen root]# ls -i anaconda-ks.cfg.hardlink
18102 anaconda-ks.cfg.hardlink
可以看到,這兩個(gè)文件具有相同的文件節(jié)點(diǎn)號(hào):18102
如果你知道一個(gè)文件有多個(gè)文件名,如何查找他的其他文件名分布在什么地方呢?
可以先用ls -i 獲得它的節(jié)點(diǎn)號(hào),然后用find查找,如/etc/sysconfig/networking/devices/ifcfg-eth0就具有多個(gè)文件名,我要查找與它互為硬鏈接的文件:
[root@gucuiwen devices]# ls -i/etc/sysconfig/networking/devices/ifcfg-eth0
147181 /etc/sysconfig/networking/devices/ifcfg-eth0
得到它的節(jié)點(diǎn)號(hào)為 147181
再用find查找:
[root@gucuiwen devices]# find /etc-inum 147181
/etc/sysconfig/networking/devices/ifcfg-eth0
/etc/sysconfig/networking/profiles/default/ifcfg-eth0
這樣就得到了同一個(gè)文件的不同文件名的位置.
*************************************
如果是一個(gè)目錄,第2字段的含義:
**************************************
如果是一個(gè)目錄,則第2字段表示該目錄所含子目錄的個(gè)數(shù).
新建一個(gè)空目錄,這個(gè)目錄的第二字段就是2,表示該目錄下有兩個(gè)子目錄.為什么新建的目錄下面會(huì)有兩個(gè)子目錄呢?
因?yàn)槊恳粋€(gè)目錄都有一個(gè)指向它本身的子目錄"." 和指向它上級(jí)目錄的子目錄"..",這兩個(gè)默認(rèn)子目錄是隱藏的.用ls -a可以看到.
每次在目錄下新建一個(gè)子目錄,該目錄第2字段的值就增1,但是新建一個(gè)普通文件該字段值不增加.
###############################
第3字段:
文件擁有者
###############################
該字段表示這個(gè)文件是屬于哪個(gè)用戶的.UNIX類系統(tǒng)都是多用戶系統(tǒng),每個(gè)文件都有它的擁有者.只有文件的擁有者才具有改動(dòng)文件屬性的權(quán)利.當(dāng)然, root用戶具有改動(dòng)任何文件屬性的權(quán)利.對(duì)于一個(gè)目錄來說,只有擁有該目錄的用戶,或者具有寫權(quán)限的用戶才有在目錄下創(chuàng)建文件的權(quán)利.
如果某一個(gè)用戶因?yàn)槟撤N原因,被刪除,而該用戶的文件還存在,那么用ls -l查看該文件將顯示一個(gè)代表用戶存在前ID號(hào)的數(shù)字.
以下是演示:
先創(chuàng)建一個(gè)用戶并用su過去:
[root@gucuiwen root]# useradd gucuiwen-g users
[root@gucuiwen root]# su - gucuiwen
用新建的用戶創(chuàng)建一個(gè)測(cè)試文件:
[gucuiwen@gucuiwen gucuiwen]$ touchtestfile
[gucuiwen@gucuiwen gucuiwen]$ ls -l testfile
-rw-r--r-- 1 gucuiwen users 0 1月 4 16:31 testfile
最后用ls -l 看到第三字段的文件擁有者為gucuiwen
然后我將gucuiwen用戶刪除:
[root@gucuiwen root]# userdel gucuiwen
[root@gucuiwen root]# cd /home/gucuiwen/
[root@gucuiwen gucuiwen]# ls -l
總用量 0
-rw-r--r-- 1 501 users 0 1月 4 16:31 testfile
可以看到,第三字段成了一個(gè)數(shù)字,這個(gè)數(shù)字是原gucuiwen用戶的ID號(hào).因?yàn)槲募到y(tǒng)對(duì)每個(gè)文件記錄文件所有者的ID,而非用戶名.
###############################
第4字段:
文件擁有者所在的組
###############################
組的概念可以想像成是一個(gè)共同完成一個(gè)項(xiàng)目的團(tuán)隊(duì).通過組的概念,可以控制文件讓特定的用戶查看,修改或運(yùn)行.而不是一棍子打死,要么全不讓看,要么全讓看.
一個(gè)用戶可以加入很多個(gè)組,但是其中有一個(gè)是主組,就是顯示在第4字段的明稱.
可以在adduser的時(shí)候用-g指定該用戶所在的主組,用-G指定其他組.
###############################
第5字段:
文件文件大小(以字節(jié)為單位)
###############################
第5字段表示文件大小,如果是一個(gè)文件夾,則表示該文件夾的大小.請(qǐng)注意是文件夾本身的大小,而不是文件夾以及它下面的文件的總大小!
很多人不能理解文件夾是一個(gè)特殊的文件的含義,這樣的話理解文件夾大小的含義就比較困難了.
###############################
第6字段:
文件創(chuàng)建月份
###############################
這個(gè)不必多說了.
###############################
第7字段:
文件創(chuàng)建日期
###############################
###############################
第8字段:
文件創(chuàng)建時(shí)間
###############################
文件創(chuàng)建的時(shí)間可以通過touch命令來修改.如:
#touch testfile
可以把testfile的創(chuàng)建時(shí)間修改為當(dāng)前時(shí)間.
touch的詳細(xì)用法請(qǐng)看鏈接文檔.
#man touch
另外,一個(gè)文件還有最后訪問時(shí)間,最后修改時(shí)間等屬性.
這些屬性可以用ls 的其它參數(shù)顯示出來.
###############################
第9字段:
文件名
###############################
如果是一個(gè)符號(hào)鏈接,那么會(huì)有一個(gè) "->" 箭頭符號(hào),后面根一個(gè)它指向的文件名.
http://hi.baidu.com/sfzhaoif/item/3e2653c9426f28d497445220
轉(zhuǎn)載于:https://blog.51cto.com/mcmvp/1314454
總結(jié)
以上是生活随笔為你收集整理的linux ls -l 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精简 linux
- 下一篇: 网络无人值守安装linux----kic