文件的元数据
文件的数据分为两类:一类为元数据,既属性数据;一种就是数据本身:
数据是指普通文件中的实际数据
元数据指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者以及文件数据块的分布信息(inode…)等等
那么如何查看文件的详细信息?
stat命令:
功能说明:
显示inode内容
命令用法:
stat [文件或目录]
演示示例:
显示/etc目录下fstab文件的相信信息: [root@localhost ~]# stat /etc/fstab File: "/etc/fstab" Size: 860 Blocks: 8 IO Block: 4096 普通文件 Device: fd00h/64768d Inode: 1048583 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2016-11-02 22:16:28.604999999 +0800 Modify: 2016-11-02 22:04:35.291999640 +0800 Change: 2016-11-02 22:13:17.833999187 +0800 各参数的含义: File:文件的路径 Size: 文件大小 Blocks: 这个文件使用的块的总数 IO Block:这个文件的IO块大小 普通文件:表示文件的类型 Device:十六进制设备号,设备数量的小数 Inode:Inode号是一个独特的号码,操作系统用inode号码来识别不同的文件 Links:到文件的链接数 Access(0644/-rw-r--r--):文件的权限 Uid:文件所有者的UID和用户名 Gid:文件所有者的GID和组名 access time:表示我们最后一次访问(仅仅是访问,没有改动)文件的时间 modify time:表示我们最后一次修改文件的时间 change time:表示我们最后一次对文件属性改变的时间,包括权限,大小,属性等等
补充:
Linux系统上的文件类型:
例如: [root@localhost ~]# ls -l /etc/fstab -rw-r--r--. 1 root root 860 11月 2 22:04 /etc/fstab “-rw-r--r--”最前面的 “ - ”即表示文件的类型 -:常规文件;即f; d:directroy,目录文件; b:block device,快设备文件,支持以“block”为单位进行随机访问; c:character device,字符设备文件,支持以“character”为单位进行线性访问; major number:主设备号,用于标识设备类型,进而确定要加载的驱动程序 minor unmber:次设备号,用于标识同一类型中的不同设备 8位二进制:0-255 l:symbolic link,符号链接文件; p:pipe,命名管道; s:socket,套接字文件;
如何修改文件的时间戳信息?
上面使用stat命令查看文件的详细信息时显示了三个关于文件的时间信息, 那么如何修改这三个时间信息呢?
touch命令:
功能说明:
修改文件的时间戳,或者新建一个不存在的文件。
命令用法:
touch [options]… FILE…
常用选项:
-c:指定文件路径不存在时不予创建
-a:仅修改 access time
-m:仅修改 modify time
-t STAMP :使用指定的日期时间
[[cc]YY]MMDDhhmm[.ss] 即[年]月日小时分钟[秒]
演示示例:
1、在/tmp/a_c目录下创建文件test1 [root@localhost ~]# cd /tmp/a_c [root@localhost a_c]# touch test1 [root@localhost a_c]# ll 总用量 0 -rw-r--r--. 1 root root 0 11月 4 01:42 test1 2、修改文件test1文件的access time 首先用stat命令查看到test1的access time时间为2016-11-04 01:46:24 使用touch命令修改: [root@localhost a_c]# touch -a -t 11040201 test1 再次stat:时间已经改为 Access: 2016-11-04 02:01:00.000000000 +0800
定义命令的别名
命令别名:将一个命令用其他名字来代替
获取所有可用别名的定义:
~]# alias
定义别名:
~]# alias NAME='COMMAND'
注:仅对当前shell进程有效
撤销别名:
~]# unalias NAME
glob实现文件名通配
所谓通配是指:显示以指定条件的文件
匹配模式:元字符
*:匹配任意长度的任意字符 ?:匹配任意单个字符 []:匹配指定范围内的任意单个字符 字符集的表示方法: [[:upper:]]:表示所有大写字母 [[:lower:]]:表示所有小写字 [[:alpha:]]:表示所有字母 [[:digit:]]:表示所有数字 [[:alnum:]]:表示所有的字母和数字 [[:space:]]:表示所有空白字符 [[:punct:]]: 表示标点符号 [^]:匹配指定范围外的任意单个字符,与[]相反,即取反
I/O重定向和管道
输出重定向:
COMMAND > NEW_POS , COMMAND >> NEW_POS 输出重定向:> 特性:覆盖输出,目标文件汇总的原有内容会被清除 输出重定向:>> 特性:追加输出,新内容会追加至目标文件尾部 # set -c 禁止覆盖输出重定向至已存在的文件 此时可使用强制覆盖输出:> # set +c 关闭上述特性 错误输出流重定向:2>,2>>
输入重定向:
tr命令: tr [OPTION]... SET1 [SET2] 把输入的数据当中的字符。凡是在SET1定义范围内出现的,通通转换为SET2出现的字符 用法1: tr SET1 SET2 < /path/to/somefile 用法2: tr -d SET1 < /path/to/somefile Here Doucment:<< cat << EOF cat > /path/to/somefile <<EOF
管道:链接程序,实现将前一个命令的输出直接定向后一个程序当做输入数据流
COMMAND1 | COMMAND2 | COMMAND3 | …
练习:
1、显示 /var 目录下所有以 l 开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其它字符)的文件或目录。
[root@localhost ~]# ls -d /var/1?[[:lower:]]
2、显示 /etc 目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
[root@localhost ~]# ls /etc/[0-9]*[^0-9]
3、显示 /etc 目录下,以非字母开头,
[root@localhost ~]# ls /etc/[^a-z][a-z]*
4、在/tmp目录下创建以tfile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22。
[root@localhost ~]# touch /tmp/tfile-$(date +%Y-%m-%d-%H-%M-%S)
5、复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
[root@localhost ~]# cp -r /etc/p*[^0-9] /tmp/mytest1
6、复制/etc目录下所有以.d结尾的文件或目录至/tmp/mytest2目录中。
[root@localhost ~]# cp -r /etc/*.d /etc/mytest2
7、复制/etc/目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。
[root@localhost ~]# cp -r /etc/[lmn]*.conf /etc/mytest3
原创文章,作者:641348038@qq.com,如若转载,请注明出处:http://www.178linux.com/57460
评论列表(1条)
总结的不错~赞~继续加油~