l7.Linux文件及目录管理命令基础(一)

746 阅读12分钟

“ 本文正在参加「金石计划 . 瓜分6万现金大奖」 ”

5.1 操作Linux必知必会基础知识

5.1.1 Linux命令行组成结构

登录或连接Linux之后,会进入到如下命令行状态:

[root@centos7 ~]#

表5-1里针对上述命令行字符的组成给出了各自的含义。

b5-1.png

提示:第4章中已经简单讲解过命令行的组成知识,若有不清楚的地方,读者可以返回第4章查阅,此处不再讲述。

5.1.2 基本的Linux命令操作语法示例

在操作Linux命令之前,先看下命令操作语法格式图,如图5-1所示。

t5-1.png

图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命令语法格式的形象比喻

b5-2.png

5.1.3 Linux与Windows的目录结构对比

大家都熟悉Windows以及Windows的目录结构,图5-2是Linux与Windows的目录结够对比图,该图可以帮助读者快速理解Linux系统的目录结果,更多的目录知识将在第6章详细讲解。

t5-2.png

图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命令的参数选项及说明

b5-3.png

查看命令帮助时,我们经常会看到"-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变量对应知识列表

b5-4.png

因此,要想查看当前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命令的参数选项及说明

b5-5.png

对于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命令的参数选项及说明

b5-6.png

【应用范例】

在讲解范例之前,先做一些准备工作,步骤如下。

第一步,安装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命令的参数选项及说明

b5-7.png

【应用范例】

范例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命令的参数选项及说明

b5-8.png

【应用范例】

范例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)会改变。