1. touch命令:修改文件的时间戳
touch 的意思是触摸,如果文件不存在,则会建立空文件;如果文件已经存在,则会修改文件的时间戳(访问时间、数据修改时间、状态修改时间都会改变)。
千万不要把 touch 命令当成新建文件的命令,牢牢记住这是触摸的意思。这个命令的基本信息如下:
- 命令名称:touch。
- 英文原意:change file timestamps。
- 所在路径:/bin/touch。
- 执行权限:所有用户。
- 功能描述:修改文件的时间戳。
命令格式
[root@localhost -]# touch [选项]文件名或目录名
选项:
- -a:只修改文件的访问时间(Access Time)
- -c:如果文件不存在,则不建立新文件
- -d:把文件的时间改为指定的时间
- -m:只修改文件的数据修改时间(Modify Time)
Linux 中的每个文件都有三个时间,分别是访问时间(Access Time)、数据修改时间(Modify Time)和状态修改时间(Change Time)。这三个时间可以通过 stat 命令来进行査看。
不过,touch 命令只能手工指定只修改访问时间,或是只修改数据修改时间,而不能指定只修改状态修改时间。因为不论是修改访问时间,还是修改文件的数据时间,对文件来讲,状态都会发生改变,即状态修改时间会随之改变。我们稍后讲 stat 命令时再具体举例。
注意,在Linux中,文件没有创建时间。
常见用法
[root@localhost ~]#touch bols
#建立名为 bols 的空文件
如果文件不存在,则会建立文件。
[root@localhost ~]#touch bols
[root@localhost ~]#touch bols
#而如果文件已经存在,则也不会报错,只是会修改文件的访问时间
2. stat命令:显示文件或文件系统的详细信息
在 Linux中,文件有访问时间、数据修改时间、状态修改时间这三个时间,而没有创建时间。stat 是査看文件详细信息的命令,而且可以看到文件的这三个时间,其基本信息如下。
- 命令名称:stat。
- 英文原意:display file or file system status。
- 所在路径:/usr/bin/stat。
- 执行权限:所有用户。
- 功能描述:显示文件或文件系统的详细信息。
命令格式
[root@localhost ~]# stat [选项]文件名或目录名
选项:
- -f:査看文件所在的文件系统信息,而不是査看文件的信息。
常见用法
【例 1】査看文件的详细信息。
[root@localhost ~]# stat anaconda-ks.cfg
File: "anaconda-ks.cfg"
#文件名
Size: 1170 Blocks: 8 IO Block: 4096 普通文件
#文件大小 占用的block数 块大小 文件类型
Device: 803h/2051d Inode: 130834 Links: 1
#i节点号 链接数
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
#权限 所有者 所属组
Access: 2016-05-06 23:31:41.396893415 +0800
#访问时间
Modify: 2016-05-06 23:31:41.396893415 +0800
#数据修改时间
Change: 2016-05-06 23:31:41.411006937 +0800
#状态修改时间
【例 2】 査看文件系统信息。
如果使用"-f"选项,就不再是査看指定文件的信息,而是査看这个文件所在文件系统的信息,例如:
[root@localhost ~]#stat -f anaconda-ks.cfg
File: "anaconda-ks.cfg"
ID: c05ad05e0e3b0580 Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 5045314 Free: 4356956 Available: 4100662 Inodes: Total: 1283632 Free: 1192731
【例 3】三种时间的含义。
査看系统当前时间,如下:
[root@localhost ~]# date
2016年05月07日星期六01:40:49 CST
再査看 bds 文件的三种时间,可以看到,和当前时间是有差别的,如下:
[root@localhost ~]# stat bols
File: "bols"
Size: 0 Blocks: 0 IO Block: 4096 普通空文件
Device: 803h/2051d Inode: 130829 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-05-07 00:10:23.794319970 +0800
Modify: 2016-05-07 00:10:23.794319970 +0800
Change: 2016-05-07 00:10:23.794319970 +0800
#这些时间都是最后一次修改文件的时间,并不是当前时间
而如果用 cat 命令读取一下这个文件,就会发现文件的访问时间 (Access Time) 变成了 cat 命令的执行时间,如下:
[root@localhost ~]# cat bols
[root@localhost ~]# stat bols
File: "bols"
Size: 0 Blocks: 0 I0 Block: 4096 普通空文
Device: 803h/2051d Inode: 130829 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid:(0/ root)
Access: 2016-05-07 01:41:08.202924900 +0800
#只有访问时间变为了cat命令的执行时间,其他两个时间没有改
Modify: 2016-05-07 00:10:23.794319970 +0800
Change: 2016-05-07 00:10:23.794319970 +0800
而如果用 echo 命令向文件中写入点数据,那么文件的数据修改时间(Modify Time)就会发生改变。但是文件数据改变了,系统会认为文件的状态也会改变,所以状态修改时间(Change Time)也会随之改变,如下:
[root@localhost ~]# echo 9527> bols
[root@localhost ~]# stat bols
File: "bols"
Size: 6 Blocks: 8 I0 Block: 4096 普通文件
Device: 803h/2051d Inode: 130829 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2016-05-07 01:41:08.202924900 +0800
#这个时间还是上次修改时间
Modify: 2016-05-07 01:42:42.459614017 +0800
Change: 2016-05-07 01:42:42.459614017 +0800 #而这两个时间变为了 echo 命令的执行时间
而如果只修改文件的状态(比如改变文件的所有者),而不修改文件的数据,则只会更改状态修改时间(ChangeTime),如下:
[root@localhost ~]# chown nobody bols
[root@localhost ~]# stat bols
File: "bols"
Size: 6 Blocks: 8 10 Block: 4096 普通文件
Device: 803h/2051d Inode: 130829 Links: 1
Access: (0644/-rw-r-r-) Uid: ( 502/ nobody) Gid: ( 0/root)
Access: 2016-05-07 01:41:08.202924900 +0800
Modify: 2016-05-07 01:42:42.459614017 +0800
# 前两个时间还是之前修改的时间
Change: 2016-05-07 01:43:09.676860399 +0800
#而状态修改时间变为了chown命令的执行时间
而如果用 touch 命令再次触摸这个文件,则这个文件的三个时间 都会改变。touch 命令的作用就是这样的,大家记住即可。如下:
[root@localhost ~]# touch bols
[root@localhost ~]# stat bols
File: "bols"
Size: 6 Blocks: 8 10 Block: 4096 普通文件
Device: 803h/2051d Inode: 130829 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 502/ nobody) Gid: ( 0/root)
Access: 2016-05-07 01:54:14.466809236 +0800
Modify: 2016-05-07 01:54:14.466809236 +0800
Change: 2016-05-07 01:54:14.466809236 +0800
#三个时间都会变为touch命令的执行时间
3. cat命令:连接文件并打印输出到标准输出设备
cat 命令用来査看文件内容。关于这个命令,有人以为写 cat 命令的人非常喜欢猫,所以写了一个命令就命名为猫(cat)。这个命令是 concatenate(连接、连续)的简写,和猫没有一点关系。
cat 命令的基本信息如下。
- 命令名称:cat。
- 英文原意:concatenate files and print on the standard output。
- 所在路径:/bin/cat。
- 执行权限:所有用户。
- 功能描述:连接文件并打印输出到标准输出。
命令格式
[root@localhost ~]# cat [选项]文件名
选项:
- -A:相当于 -vET 选项的整合,用于列出所有隐藏符号;
- -E:列出每行结尾的回车符 $;
- -n:显示行号;
- -T:把 Tab 键 ^I 显示出来;
- -V:列出特殊字符;
常见用法
cat 命令用于査看文件内容,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。不过 Linux 可以使用PgUp+上箭头
组合键向上翻页,但是这种翻页是有极限的,如果文件足够长,那么还是无法看全文件的内容。
所以,cat 命令适合査看不太大的文件。当然,在 Linux 中是可以使用其他的命令或方法来査看大文件的,我们以后再来学习。cat 命令本身非常简单,我们可以直接査看文件的内容。例如:
[root@localhost ~]# cat anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
lang zh一CN.UTF-8
…省略部分内容...
而如果使用"-n"选项,则会显示行号。例如:
[root@localhost ~]# cat -n anaconda-ks.cfg
1 # Kickstart file automatically generated by anaconda.
2
3
4 #version=DEVEL
5 install
6 cdrom
…省略部分内容...
如果使用"-A"选项,则相当于使用了"-vET"选项,可以査看文本中的所有隐藏符号,包括回车符 ($)、Tab 键 (^I) 等。例如:
[root@localhost ~]# cat -A anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.$
$
$
#version=DEVEL$
install$
cdrom$
…省略部分内容…
4. more命令:分屏显示文件内容
如果文件过大,则 cat 命令会有心无力,这时 more 命令的作用更加明显。
more 是分屏显示文件的命令,其基本信息如下。
命令名称:more。
英文原意:file perusal filter for crt viewin。
所在路径:/bin/more。
执行权限:所有用户。
功能描述:分屏显示文件内容。
命令格式
[root@localhost ~]# more 文件名
more 命令比较简单,一般不用什么选项,命令会打开一个交互界面,可以识别一些交互命令。常用的交互命令如下。
空格键:向下翻页。
b:向上翻页。
回车键:向下滚动一行。
/ 字符串:搜索指定的字符串。
q:退出。
常见用法
[root@localhost ~]# more anaconda-ks.cfg
# Kickstart file automatically generated by anaconda.
#version=DEVEL
install
cdrom
…省略部分内容…
--More--(69%)
#在这里执行交互命令即可