Linux系统中的文件或目录的属性主要有:索引节点(inode)、文件类型、权限属性、链接数、所归属的用户及用户组、最近修改时间等。
[test@CentOS6 ~]$ ls -lih
总用量 20K
260172 drwxrwxr-x 3 test test 4.0K 8月 13 11:09 test
260393 -rw-rw-r-- 1 test test 36 8月 13 20:56 test.txt
260430 -rw-rw-r-- 1 test test 193 8月 13 17:10 tnp.tar.gz
260180 drwxrwxr-x 3 test test 4.0K 8月 13 20:25 vv
260387 -rw-rw-r-- 1 test test 220 8月 13 20:34 vv.tar.bz
每列分别是
inode节点、文件类型及权限、硬链接数、所属用户、所属组、文件或目录大小、最近修改时间、文件或目录名
查看inode大小
[root@CentOS6 ~]# dumpe2fs /dev/sda1|grep -i "Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size: 128
一个文件至少要占用一个inode和一个block
查看inode数量
[root@CentOS6 ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 479552 85799 393753 18% /
tmpfs 239728 1 239727 1% /dev/shm
/dev/sda1 51200 46 51154 1% /boot
查看block大小
[root@CentOS6 ~]# dumpe2fs /dev/sda1|grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 1024
[root@CentOS6 ~]# dumpe2fs /dev/sda3|grep -i "block size"
dumpe2fs 1.41.12 (17-May-2010)
Block size: 4096
[root@CentOS6 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 7.1G 2.1G 4.7G 31% /
tmpfs 937M 0 937M 0% /dev/shm
/dev/sda1 190M 65M 115M 37% /boot
更改文件或目录所属用户及组
[root@CentOS6 ~]# cd /home/test
[root@CentOS6 test]# ll
total 20
drwxrwxr-x 3 test test 4096 Aug 13 11:09 test
-rw-rw-r-- 1 test test 36 Aug 13 20:56 test.txt
-rw-rw-r-- 1 test test 193 Aug 13 17:10 tnp.tar.gz
drwxrwxr-x 3 test test 4096 Aug 13 20:25 vv
-rw-rw-r-- 1 test test 220 Aug 13 20:34 vv.tar.bz
[root@CentOS6 test]# chown root.root test
[root@CentOS6 test]# ll
total 20
drwxrwxr-x 3 root root 4096 Aug 13 11:09 test
-rw-rw-r-- 1 test test 36 Aug 13 20:56 test.txt
-rw-rw-r-- 1 test test 193 Aug 13 17:10 tnp.tar.gz
drwxrwxr-x 3 test test 4096 Aug 13 20:25 vv
-rw-rw-r-- 1 test test 220 Aug 13 20:34 vv.tar.bz
[root@CentOS6 test]#
也可以将用户和组分开改
[root@CentOS6 test]# chown test test
[root@CentOS6 test]# ll
total 20
drwxrwxr-x 3 test root 4096 Aug 13 11:09 test
-rw-rw-r-- 1 test test 36 Aug 13 20:56 test.txt
-rw-rw-r-- 1 test test 193 Aug 13 17:10 tnp.tar.gz
drwxrwxr-x 3 test test 4096 Aug 13 20:25 vv
-rw-rw-r-- 1 test test 220 Aug 13 20:34 vv.tar.bz
[root@CentOS6 test]# chown :test test
[root@CentOS6 test]# ll
total 20
drwxrwxr-x 3 test test 4096 Aug 13 11:09 test
-rw-rw-r-- 1 test test 36 Aug 13 20:56 test.txt
-rw-rw-r-- 1 test test 193 Aug 13 17:10 tnp.tar.gz
drwxrwxr-x 3 test test 4096 Aug 13 20:25 vv
-rw-rw-r-- 1 test test 220 Aug 13 20:34 vv.tar.bz
更改文件或目录的数组也可以用chgrp命令
[root@CentOS6 test]# ls -ld test
drwxrwxr-x 3 test test 4096 Aug 13 11:09 test
[root@CentOS6 test]# chgrp root test
[root@CentOS6 test]# ls -ld test
drwxrwxr-x 3 test root 4096 Aug 13 11:09 test
有一种情况是用户和组都是数字,是由于此用户被删掉的原因,我们模拟一下
[root@CentOS6 test]# useradd tt
[root@CentOS6 tt]# su - tt
[tt@CentOS6 ~]$ ll
total 0
[tt@CentOS6 ~]$ mkdir tt_d
[tt@CentOS6 ~]$ ll
total 4
drwxrwxr-x 2 tt tt 4096 Aug 21 20:09 tt_d
[root@CentOS6 ~]# userdel tt
[root@CentOS6 tt]# ls -ld /home/tt
drwx------ 4 503 503 4096 Aug 21 20:10 /home/tt
如果碰到这种情况我们怎么恢复呢?
[root@CentOS6 tt]# useradd tt -u 503
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@CentOS6 tt]# ls -ld /home/tt
drwx------ 4 tt tt 4096 Aug 21 20:10 /home/tt
将文件或目录权限还原到数字的表达方式
ll ./a.txt|cut -c 2-10|tr rwx- 4210|awk '{for(i=1;i<=length($1);i++) {s=substr($1,i,1);printf s" "}}'|awk '{print$1+$2+$3 $4+$5+$6 $7+$8+$9}'
[test@CentOS6 ~]$ ll
total 24
-rw-rw-r-- 1 test test 38 Aug 21 21:07 a.txt
drwxrwxr-x 3 test root 4096 Aug 13 11:09 test
-rw-rw-r-- 1 test test 36 Aug 13 20:56 test.txt
-rw-rw-r-- 1 test test 193 Aug 13 17:10 tnp.tar.gz
drwxrwxr-x 3 test test 4096 Aug 13 20:25 vv
-rw-rw-r-- 1 test test 220 Aug 13 20:34 vv.tar.bz
[test@CentOS6 ~]$
[test@CentOS6 ~]$
[test@CentOS6 ~]$ ll ./a.txt|cut -c 2-10|tr rwx- 4210|awk '{for(i=1;i<=length($1);i++) {s=substr($1,i,1);printf s" "}}'|awk '{print$1+$2+$3 $4+$5+$6 $7+$8+$9}'
664
或者stat命令
[test@CentOS6 ~]$ stat a.txt|sed -n 4p|cut -d "(" -f2|cut -d / -f1
0664
[test@CentOS6 ~]$ stat a.txt|sed -n 4p|cut -d "(" -f2|cut -c 1-4
0664
[test@CentOS6 ~]$ stat a.txt|head -4|tail -1|cut -d "(" -f2|cut -c 1-4
0664
[test@CentOS6 ~]$ stat a.txt|sed -n 4p|awk -F "(" '{print $2}'|awk -F "/" '{print $1}'
0664
[test@CentOS6 ~]$ stat -c %a a.txt
664
指定多分隔符
[test@CentOS6 ~]$ stat a.txt |sed -n 4p|awk -F '[(/]' '{print $2}'
0664
从ifconfig中分离ip地址
[test@CentOS6 ~]$ ifconfig eth0|grep "inet addr"|awk -F '[ :]+' '{print $4}'
2.2.2.5
[test@CentOS6 ~]$ ifconfig eth0|awk -F '[ :]+' 'NR==2 {print $4}'
2.2.2.5
[test@CentOS6 ~]$ ifconfig eth0|sed -n 2p|sed 's#^.*addr:##g'|sed 's# Bcast.*$##g'
2.2.2.5
[test@CentOS6 ~]$ ifconfig eth0|sed -n 's#^.*addr:\(.*\) B.*$#\1#gp'
2.2.2.5