“ 本文正在参加「金石计划 . 瓜分6万现金大奖」 ”
5.1 操作Linux必知必会基础知识
5.1.1 Linux命令行组成结构
登录或连接Linux之后,会进入到如下命令行状态:
[root@centos7 ~]#
表5-1里针对上述命令行字符的组成给出了各自的含义。
提示:第4章中已经简单讲解过命令行的组成知识,若有不清楚的地方,读者可以返回第4章查阅,此处不再讲述。
5.1.2 基本的Linux命令操作语法示例
在操作Linux命令之前,先看下命令操作语法格式图,如图5-1所示。
图5-1 Linux命令操作语法格式图
在Linux系统运维工作中,常用的操作大多都是在命令行下实现的,示例如下:
[root@centos7 ~]# #就是在这样的提示符下输入命令。
Linux系统命令操作语法的格式具体如下:
命令 [参数选项] [文件或路径]
rm -f /root/test
说明:
1)中括号[]表示可选,即命令的参数及路径文件是可选的。
2)参数选项表示使用一个命令的不同功能。
3)命令、参数选项、文件或路径两两之间至少要有一个空格。
操作示例:创建一个test文件,然后查看创建结果,最后删除它,再查看删除结果。代码如下:
[root@centos7 ~]# touch test.txt #创建一个test.txt文件。
[root@centos7 ~]# ls #查看创建结果。
anaconda-ks.cfg test.txt #结尾带底纹的就是。
[root@centos7 ~]# rm -f test.txt #删除test.txt
[root@centos7 ~]# ls #查看删除结果。
anaconda-ks.cfg #test.txt已经没了。
上述代码段中这一组操作涉及了Linux的三个基本命令:touch(创建文件)、ls(查看目录下的内容)和rm(删除文件或目录)。怎么样?Linux还是很有趣的吧,当你熟练之后你会发现,这样的操作效率远比Windows下高很多,比如批量创建1万个文件的时候。
表5-2通过现实生活中一个比喻让读者对命令的语法构成印象更加深刻。
表5-2 Linux命令语法格式的形象比喻
5.1.3 Linux与Windows的目录结构对比
大家都熟悉Windows以及Windows的目录结构,图5-2是Linux与Windows的目录结够对比图,该图可以帮助读者快速理解Linux系统的目录结果,更多的目录知识将在第6章详细讲解。
图5-2 Linux与Windows目录结构对比
小结一下,Windows的目录形式为c:\windows\,当然还有d盘、e盘的目录结构,路径分隔符是“\”(撬棍,反斜线),Linux的目录形式为/etc/hosts,路径分隔符为“/”(斜线),Linux系统一切目录的起点都是从“/”根开始。
5.2 Linux文件及目录核心命令
操作Linux命令行,最基本的对象就是目录和文件,因此本节开始为大家讲解一些基础且核心的操作Linux的基本命令,读者需要重点掌握。
5.2.1 pwd:显示当前所在位置的信息
【命令星级】 ★★★★★
【功能说明】
pwd命令是“print working directory”中每个单词的首字母缩写,其功能是显示当前工作目录的绝对路径。在实际工作中,我们在命令行操作命令时,经常会在各个目录路径间进行切换,此时可使用pwd命令快速查看当前所在的目录路径。
【语法格式】
pwd [option]
pwd [选项]
说明:
1)注意pwd命令与后面的选项之间至少要有一个空格。
2)通常情况下,执行pwd命令不需要附带任何参数。
【选项说明】
表5-3针对pwd命令的参数选项进行了说明。
表5-3 pwd命令的参数选项及说明
查看命令帮助时,我们经常会看到"-L,--logical"这样的选项,这种写法的意思是“-L”和“--logical”的功能是一样的,在使用选项时,只需要选择一种即可,但不能同时使用,而我们最常用的就是简写的“-L”这个格式。
此外,在表5-3中提到的PWD系统环境变量,可以利用“$”符号输出其值,示例代码如下:
[root@centos7 ~]# echo $PWD #echo命令能够输出指定变量,具体用法见echo命令。
/root
[root@centos7 ~]# pwd -L #显示逻辑(忽略软链接文件)路径。
/root
也就是说,pwd -L和echo $PWD二者的功能是等价的。
【应用范例】
范例5-1: 不带任何选项执行pwd命令。
[root@centos7 ~]# pwd #不带任何选项执行pwd命令
/root #输出的目录路径为当前用户root的家目录
[root@centos7 ~]# cd /etc/init.d/ #进入/etc/init.d/目录,cd命令的具体用法请参见本书5.2.2节cd命令的详解。
[root@centos7 /etc/init.d]# pwd
/etc/init.d #此时用户所在的路径为/etc/init.d目录。
范例5-2: 对比使用-L和-P参数(了解即可)。
[root@centos7 ~]# cd /bin
[root@centos7 /bin]# ll /bin #ls命令的具体用法请参见本书ls命令。
lrwxrwxrwx. 1 root root 7 Oct 1 14:39 /bin -> usr/bin #/bin是/usr/bin目录的软链接,相当于快捷方式。后面在讲解ln命令时,(8.2.3节)会讲解此知识。
[root@centos7 /bin]# pwd -L #获取环境变量的PWD对应的值,即为echo $PWD的结果。
/bin
[root@centos7 /bin]# echo $PWD #输出环境变量PWD对应的值。
/bin
[root@centos7 /bin]# pwd -P #显示链接对应的源文件的目录路径。
/usr/bin
范例5-3: 在Bash命令行显示当前用户的完整路径。
系统Bash命令行的提示符是由一个叫做PS1的系统环境变量控制的。PS1对应的知识见表5-4。
表5-4 PS1变量对应知识列表
因此,要想查看当前PS1变量的值,可采用如下命令:
[root@centos7 ~]# echo $PS1 #打印超级管理员对应的PS1值。
[\u@\h \W]$ #@是一个分隔符,与邮箱地址中的@作用类似。
可修改PS1变量对应的值,并让命令行显示全路径:
[root@centos7 ~]# PS1='[\u@\h \w]$ ' #将默认的\W改为\w (小写w),此命令仅临时生效。
[root@centos7 ~]# cd /etc/sysconfig/ #切换目录实验。
[root@centos7 /etc/sysconfig]# #可以看到此处的路径就是全路径了。
上面的方法只是临时性的,若要让PS1变量永久生效,可采用如下配置方法。
编辑/etc/bashrc文件,找到符合下面内容的一行(大约在第36行),将内容中大写的W改为小写的w,即可让变量永久生效。也就是将:
[ "PS1="\s-\v\$ " ] && PS1="[\u@\h \W]\$ "
改为下面的内容,保存并退出/etc/bashrc文件:
[ "PS1="\s-\v\$ " ] && PS1="[\u@\h \w]\$ "
更漂亮美观的命令行PS1变量设置参数如下:
PS1="[[\e[34;1m]\u@[\e[0m][\e[32;1m]\H[\e[0m][\e[31;1m] \w[\e[0m]]\$"
最后,注销重新登录系统或直接执行source /etc/bashrc使得修改的信息生效,有关Linux终端提示符还有很多有用又好玩的技巧呢!感兴趣的读者还可以浏览老男孩博客的相关文章,地址为:http://blog,oldboyedu.com/command-line-terminal/。
5.2.2 cd:切换目录
【命令星级】 ★★★★★
【功能说明】
cd命令是"change directory"中每个单词的首字母缩写,其功能是从当前工作目录切换到指定的工作目录。
【语法格式】
cd [option] [dir]
cd [选项] [目录]
说明:
1)注意cd命令以及后面的选项和目录,每个元素之间都至少要有一个空格。
2)cd命令后面的选项和目录等参数都可以省略。默认情况下,单独执行cd命令,可切换到当前登录用户的家目录(由系统环境变量HOME进行定义)。
3)cd是bash shell的内置命令,查看该命令对应的系统帮助需要使用help cd。
【选项说明】
表5-5针对cd命令的参数选项进行了说明。
表5-5 cd命令的参数选项及说明
对于cd命令,笔者有一些实践经验分享如下。
-
在使用cd命令时,如果键盘上“Tab”键的自动补齐功能,则可以提高输入速度和准确度。这个“Tab”键的自动补齐功能同样也适用于其他命令。
-
需要了解一下路径的概念,不日,相对路径不是从“/”斜线开始的路径,而是从当前目录或指定的目录开始的,例如,data/,mnt/oldboy;绝对路径是从"/"斜线根开始的路径,例如,/data/,/mnt/oldboy。
-
当需要切换到当前用户上一次所在的目录时,请使用"cd -"(注意中间的空格);当需要切换到当前用户的家目录时,请使用"cd ~"(注意中间的空格);当需要切换到当前目录的上一级目录所在的路径时,请使用“cd ..”(注意中间的空格)。
【实践范例】
范例5-4: 进入系统/etc目录(cd /etc)。
[root@centos7 ~]# pwd /root #在Linux系统中每个用户都有自己的家目录,默认情况下,用户系统登录后会进入自己的家目录。root用户的家目录是/root,普通用户的家目录默认是/home/用户名/。 [root@centos7 ~]# cd /usr/local/ #切换到/usr/local/目录。 [root@centos7 /usr/local]# pwd /usr/local #此时已经进入/usr/local/目录了。范例5-5: 切换到当前目录的上一级目录(cd ..)。
[root@centos7 /usr/local]# pwd /usr/local [root@centos7 /usr/local]# cd .. #“..”等同于上一级目录名,也可以写成"../"。 [root@centos7 /usr]# pwd /usr #此时切换到了/usr目录。范例5-6: 进入当前目录的父目录的父目录(cd ../../)中。
[root@centos7 /usr]# cd /usr/local/ [root@centos7 /usr/local]# pwd /usr/local [root@centos7 /usr/local]# cd ../../ #退到当前目录的上两级目录,即退到"/"目录。 [root@centos7 /]# pwd /提示:只要目录具有足够多的层次,则可一直这样继续下去“cd ../../../..”,直到退到"/"为止。
范例5-7: 返回当前用户上一次所在的目录(cd -)。
[root@centos7 /]# cd /usr/local/ [root@centos7 /usr/local]# pwd /usr/local [root@centos7 /usr/local]# cd #cd命令不接任何参数时,从环境变量HOME获取路径名,即切换到当前用户的家目录。 [root@centos7 ~]# pwd #当前用户的工作路径为/root。 /root [root@centos7 ~]# cd - #执行“cd -”时,cd将从环境变量OLDPWD对应值获取路径名。 /usr/local #即切换到了当前用户上一次的工作路径“/usr/local”。范例5-8: 进入当前用户的家目录(cd ~)。
[root@centos7 ~]# cd /usr/local/ [root@centos7 /usr/local]# pwd /usr/local [root@centos7 /usr/local]# cd ~ #“~”即键盘左上角Esc键下方的波浪符号,其代表家目录。 [root@centos7 ~]# pwd /root #切换到当前用户的家目录。提示:执行不带任何参数的cd命令与"cd ~"结果一样。
5.2.3 tree:以树形结构显示目录下的内容
【命令星级】 ★★★★☆
【功能说明】
tree命令的中文意思为“树”,功能是以树形结构列出指定目录下所有内容,包括所有文件、子目录及子目录里的目录和文件。
【语法格式】
tree [option] [directory]
tree [选项] [目录]
说明:
1)注意tree命令以及后面的选项和目录,每个元素之间都至少要有一个空格。
2)若tree命令后不接选项和目录,则默认显示当前所在路径目录的目录结构。
【选项说明】
表5-6针对tree命令的参数选项进行了说明。
表5-6 tree命令的参数选项及说明
【应用范例】
在讲解范例之前,先做一些准备工作,步骤如下。
第一步,安装tree命令。
首先检查系统是否安装了tree命令,如果采用的是最小化安装Linux系统的方式,那么tree命令有可能并没有安装。此时可用yum 命令安装tree命令:
[root@centos7 ~]# rpm -qa tree #查询tree命令是否安装。
tree-1.6.0-10.el7.x86_64 #如果没有显示就执行下面的命令。
[root@centos7 ~]# yum install -y tree #安装tree命令的yum命令,本书开头已经带读者安装过了。
第二步,调整系统字符集,防止树形结构显示乱码。
在使用树形结构时,很可能会因为字符集而导致出现乱码问题,比如导致树形的树枝部分都是问号,例如,下面的命令可作为临时解决树结构乱码的方法:
root@centos7 ~]# LANG=dm_US.UTF-8
这个问题与Linux系统字符集以及我们连接Linux的客户端的字符集都有关联。
范例5-9: 不带任何参数执行tree命令。
[root@centos7 ~]# tree #显示当前目录结构。
. #“.”以当前目录为起点。
└── anaconda-ks.cfg
0 directories, 1 file
范例5-10: 以树形结构显示目录下的所有内容(-a功能)。
[root@centos7 ~]# tree -a #带-a参数显示所有文件(包括隐藏文件)。
.
├── anaconda-ks.cfg
├── .bash_history #在Linux系统中,以“.”(点号)开头的文件为隐藏文件,默认不显示。
├── .bash_logout
├── .bash_profile
├── .bashrc
├── .cshrc
├── .tcshrc
└── .viminfo
0 directories, 8 files
范例5-11: 只列出根目录下第一层的目录结构(-L功能)。
[root@centos7 ~]# tree -L 1 / #-L参数后接数字,表示查看目录的层数,若不带-L选项则默认显示所有层数。
/
├── ~.bashrc
├── bin -> usr/bin
├── boot
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
19 directories, 1 file
范例5-12: 只显示所有的免疫力(但不显示文件)。
[root@centos7 ~]# tree -d /boot #-d参数表示只显示目录。
/boot
├── efi
│ └── EFI
│ └── centos
├── grub
└── grub2
├── fonts
├── i386-pc
└── locale
8 directories
[root@centos7 ~]# tree -dL 1 /boot #-d参数只显示目录,-L参数表示显示层数,这里是1层。
/boot
├── efi
├── grub
└── grub2
3 directories
范例5-13: 使用tree命令区分目录和文件的方法(使用-F和-d参数)。
[root@centos7 ~]# tree -L 1 -F /boot/ #使用-F参数会在目录后面添加“/”,以方便区分目录。
/boot/
├── config-3.10.0-1127.19.1.el7.x86_64
├── config-3.10.0-957.el7.x86_64
├── efi/ #结尾带斜线的就是目录。
├── grub/
├── grub2/
├── initramfs-0-rescue-eddf689a11a54dd69bbca212cf511592.img
├── initramfs-3.10.0-1127.19.1.el7.x86_64.img
├── initramfs-3.10.0-1127.19.1.el7.x86_64kdump.img
├── initramfs-3.10.0-957.el7.x86_64.img
├── initramfs-3.10.0-957.el7.x86_64kdump.img
├── symvers-3.10.0-1127.19.1.el7.x86_64.gz
├── symvers-3.10.0-957.el7.x86_64.gz
├── System.map-3.10.0-1127.19.1.el7.x86_64
├── System.map-3.10.0-957.el7.x86_64
├── vmlinuz-0-rescue-eddf689a11a54dd69bbca212cf511592*
├── vmlinuz-3.10.0-1127.19.1.el7.x86_64*
└── vmlinuz-3.10.0-957.el7.x86_64*
3 directories, 14 files
[root@centos7 ~]# tree -L 1 -F /boot/|grep /$ #过滤以斜线结尾的所有内容,如果大家暂时还看不懂这个方法,可以等学完grep命令后再回看。
/boot/
├── efi/
├── grub/
├── grub2/
[root@centos7 ~]# tree -L 1 -d /boot/ #使用-d参数只显示目录树,轻松过滤内容中的目录。
/boot/
├── efi
├── grub
└── grub2
3 directories
5.2.4 mkdir:创建目录
【命令星级】 ★★★★★
【功能说明】
mkdir命令是由“make direcrories”中每个单词的粗体字母组合而成,其功能是创建目录,默认情况下,如果要创建的目录已经存在,则会提示文件存在,而不会继续创建目录。
【语法格式】
mkdir [iptoin] [directory] #注意mkdir命令以及后面的选项和目录之间都至少要有一个空格。
mkdir [选项] [目录] #mkdir命令可以同时创建多个目录,格式为mkdir dir1 dir2 ...
【选项说明】
表5-7针对mkdir命令的参数选项进行了说明。
表5-7 mkdir命令的参数选项及说明
【应用范例】
范例5-14: 不适用任何命令参数创建目录的用法示例。
我们先查看下当然目录树的结构,命令如下:
[root@centos7 ~]# cd
[root@centos7 ~]# tree -d
. #根据结果可以看出当前目录下没有任何目录。
0 directories
开始测试创建目录,并检查,命令如下:
[root@centos7 ~]# mkdir data #在当前目录下创建data目录,此处data是相对路径。
[root@centos7 ~]# tree -d
.
└── data #可以看到data目录已经创建。
1 directory
[root@centos7 ~]# mkdir data #再次执行创建命令会提示目录已经存在。
mkdir: cannot create directory ‘data’: File exists
扩展知识:
Windows下目录路径样式为d:\data\test,而Linux下的路径样式为/data/test,它们的目录顶点和分隔符均不相同。
范例5-15:使用-p参数递归创建目录。
当我们创建多级目录时,如果第一级目录(oldboy)不存在,则创建结构会报错,导致无法成功创建,操作如下:
[root@centos7 ~]# mkdir oldbot/test
mkdir: cannot create directory ‘oldbot/test’: No such file or directory #提示没有这个文件或目录。
此时,可以指定-p参数递归创建多级目录,命令如下:
[root@centos7 ~]# mkdir -p oldboy/test
[root@centos7 ~]# tree -d
.
├── data
└── oldboy #同时创建了oldboy目录及oldboy的子目录test。
└── test
3 directories
使用mkdir创建多级目录时,建议直接使用-p参数,可以避免出现“No such file or directory”这与没有文件或目录的报错了,且不会影响已存在的目录。
范例5-16: 加-v参数显示创建目录的过程。
使用-v参数显示创建目录的详细过程,具体操作命令如下:
[root@centos7 ~]# mkdir -pv oldboy2/test
mkdir: created directory ‘oldboy2’
mkdir: created directory ‘oldboy2/test’
提示:其实这个-v并无实际用途。
范例5-17:创建目录时可使用-m参数设置目录的默认权限。
[root@centos7 ~]# mkdir dir1
[root@centos7 ~]# ls -ld dir1 #ls命令的使用方法详见后面的5.2.6节ls命令的相关内容。
drwxr-xr-x. 2 root root 6 Oct 5 21:03 dir1 #创建该目录的默认权限为755.
[root@centos7 ~]# mkdir -m 333 dir2 #创建目录时指定333的数字权限。
[root@centos7 ~]# ls -ld dir2
d-wx-wx-wx. 2 root root 6 Oct 5 21:04 dir2 #可以看到权限已经发生了变化。
提示:有关权限的知识课参考后文详解的chmod命令。
5.2.5 touch:创建文件或更改文件时间戳
【命令星级】 ★★★★★
【功能说明】
touch命令包含两个功能:一是创建新的空文件;二是改变已有文件的时间戳属性。
【语法格式】
touch [option] [file]
touch [选项] [文件]
说明:
1)touch命令以及后面的选项和文件,每个元素之间都至少要有一个空格。
2)注意区分touch和mkdir命令的功能,mkdir命令是创建空目录,而touch是创建空文件。
3)在Linux中,一切皆文件。虽然touch命令不能创建目录,但是可以修改目录的时间戳。
【选项说明】
表5-8针对touch命令的参数选项进行了说明。
表5-8 touch命令的参数选项及说明
【应用范例】
范例5-18: 创建文件示例(用于文件事先不存在的情况)。
[root@centos7 ~]# mkdir test #新建一个test目录
[root@centos7 ~]# cd test #切换到test目录。
[root@centos7 ~/test]# touch oldboy.txt #创建空文件。
[root@centos7 ~/test]# ls
oldboy.txt
[root@centos7 ~/test]# touch a.txt b.txt #同时创建多个文件,类似于mkdir创建多个目录。
[root@centos7 ~/test]# touch sdu{01..05} #利用大括号“{}”输出的字符序列批量创建文件。
[root@oldboyedu2 ~/test]#ls
a.txt b.txt oldboy.txt sdu01 sdu02 sdu03 sdu04 sdu05
范例5-19: 更改文件的时间戳属性。
[root@centos7 ~/test]# stat oldboy.txt #stat命令可以查看文件的时间戳属性,具体用法见stat命令的详解。
File: ‘oldboy.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 33914867 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-10-05 21:19:50.049175542 +0800
Modify: 2020-10-05 21:19:50.049175542 +0800
Change: 2020-10-05 21:19:50.049175542 +0800
Birth: -
#说明:文件的时间戳属性分为访问时间、修改时间和状态改变时间。
[root@centos7 ~/test]# touch -a oldboy.txt #-a参数可用于更改最后的访问时间。
[root@centos7 ~/test]# stat oldboy.txt
File: ‘oldboy.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 33914867 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-10-05 21:25:30.994178713 +0800
Modify: 2020-10-05 21:25:18.371178595 +0800
Change: 2020-10-05 21:25:30.994178713 +0800
Birth: -
[root@centos7 ~/test]# touch -m oldboy.txt #-m参数用于更改最后的修改时间。
[root@centos7 ~/test]# stat oldboy.txt
File: ‘oldboy.txt’
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 33914867 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2020-10-05 21:25:30.994178713 +0800
Modify: 2020-10-05 21:25:40.966178805 +0800
Change: 2020-10-05 21:25:40.966178805 +0800
Birth: -
范例5-20: 指定时间属性创建/修改文件。
可利用选项-d指定创建文件后的文件修改时间,示例代码如下:
[root@centos7 ~/test]# ls -lh oldboy.txt
-rw-r--r--. 1 root root 0 Oct 5 21:25 oldboy.txt #修改前的文件修改时间是10月5日。
[root@centos7 ~/test]# touch -d 20211001 oldboy.txt #指定创建文件后的文件修改时间为2021年10月01日。
[root@centos7 ~/test]# ls -lh oldboy.txt
-rw-r--r--. 1 root root 0 Oct 1 2021 oldboy.txt #文件修改时间已改为2021年10月01日。
也可利用选项-r,修改oldboy.txt的时间属性,使其与a.txt的时间属性一致,示例代码如下:
[root@centos7 ~/test]# ls -lh a.txt
-rw-r--r--. 1 root root 0 Oct 5 21:22 a.txt #查看a.txt的修改时间。
[root@centos7 ~/test]# touch -r a.txt oldboy.txt #使用-r参数使得oldboy.txt时间属性与a.txt一致。
[root@centos7 ~/test]# ls -lh oldboy.txt a.txt
-rw-r--r--. 1 root root 0 Oct 5 21:22 a.txt
-rw-r--r--. 1 root root 0 Oct 5 21:22 oldboy.txt
#oldboy.txt文件的修改时间已经与a.txt一致了。
还可以利用选项-t,将文件设置为2015123112234.50的时间格式,示例代码如下:
[root@centos7 ~/test]# touch -t 201512312234.50 oldboy.txt
[root@centos7 ~/test]# ls -lh --full-time oldboy.txt
-rw-r--r--. 1 root root 0 2015-12-31 22:34:50.000000000 +0800 oldboy.txt #查看设置的属性。
上述案例涉及的ls命令的用法详见后面5.2.6节ls的相关内容详解。
【扩展知识】
这里扩展一旦有关时间戳属性的知识。
GUN/Linux的文件包含3中类型的时间戳:
Access: 2020-10-05 21:19:50.049175542 +0800 #文件最后被访问的时间。
Modify: 2020-10-05 21:19:50.049175542 +0800 #文件最后被修改的时间。
Change: 2020-10-05 21:19:50.049175542 +0800 #文件状态最后被改变的时间。
对应ls命令,查看上述时间戳的选项如下:
mtime: 最后修改时间(ls -lt) #修改文件内容,文件的修改时间(modufy time)会改变。
ctime:状态改变时间(ls -lc) #修改文件内容、移动文件或改变文件属性等,文件的change时间会改变。
atime:最后访问时间(ls -lu) #查看文件内容时,文件的访问时间(access time)会改变。