Linux笔记03: Linux常用命令_3.3文件操作命令

3.3 文件操作命令

3.3.1 stat命令

●命令名称:stat。

●英文原意:display file or file system status。

●所在路径:/usr/bin/stat。

●执行权限:所有用户。

●功能描述:显示文件或文件系统的详细信息。

(1)命令格式

    [root@localhost ~]# stat [选项] 文件名或目录名

    选项:

        -f:查看文件所在的文件系统信息(而不是文件的信息)

(2)常见用法

①查看文件的详细信息

[root@localhost ~]# stat anaconda-ks.cfg

  File:‘anaconda-ks.cfg’

  Size: 1649            Blocks:8          IO Block: 4096   regular file

Device: fd00h/64768d   Inode:16797762    Links: 1

Access: (0600/-rw-------) Uid: (    0/    root)  Gid: (    0/    root)

Context: system_u:object_r:admin_home_t:s0

Access: 2022-11-27 17:07:14.882951678 -0500  #访问时间

Modify: 2022-11-27 17:06:24.360006324 -0500  #数据修改时间

Change: 2022-11-27 17:06:24.360006324 -0500  #状态修改时间

 Birth: -

stat可以查看文件详细信息,而且展示了文件三个时间:访问时间、数据修改时间、状态修改时间。

②查看文件系统信息

[root@localhost~]# stat -f anaconda-ks.cfg

  File: "anaconda-ks.cfg"

    ID: fd0000000000 Namelen: 255     Type: xfs

Block size:4096       Fundamental block size: 4096

Blocks: Total:3273216    Free: 1989643    Available: 1989643

Inodes: Total:6551552    Free: 6417040

(3)三种时间的含义

Linux中的每个文件都有三个时间,分别是访问时间(Access Time)、数据修改时间(Modify Time)和状态修改时间(Change Time)。

注意:在Linux中,文件没有创建时间。

①先查看系统当前时间:

[root@localhost~]# date

Sat Dec 1020:59:02 EST 2022

②再创建一个mylog.log文件,并查看该文件的三种时间:

[root@localhost~]# touch mylog.log

[root@localhost~]# stat mylog.log

省略部分内容……

Access:2022-12-10 20:59:39.691757029 -0500

Modify:2022-12-10 20:59:39.691757029 -0500

Change:2022-12-10 20:59:39.691757029 -0500

 Birth: -

可以看到,touch创建出的文件三个时间都为系统当前时间。

③如果用cat命令读取一下这个文件,就会发现文件的访问时间(Access Time)变成了cat命令的执行时间,如下:

[root@localhost~]# cat mylog.log

[root@localhost~]# stat mylog.log

省略部分内容……

Access:2022-12-1021:03:35.151936060 -0500

Modify:2022-12-10 20:59:39.691757029 -0500

Change: 2022-12-1020:59:39.691757029 -0500

 Birth: -

④如果用echo命令向文件中写入数据,那么文件的数据修改时间(Modify Time)就会发生改变。文件数据改变了,系统会认为文件的状态改变了,所以状态修改时间(Change Time)也会随之改变,如下:

[root@localhost~]# echo [2022-12-10 20:59:39]创建文件 > mylog.log

[root@localhost~]# stat mylog.log

省略部分内容……

Access:2022-12-10 21:03:35.151936060 -0500

Modify:2022-12-1021:12:16.149970237 -0500

Change:2022-12-1021:12:16.149970237 -0500

 Birth: -

⑤如果只修改文件的状态(比如改变文件的所有者),而不修改文件的数据,则只会更改状态修改时间(Change Time),如下:

[root@localhost~]# chown LaytonWang mylog.log

[root@localhost~]# stat mylog.log

省略部分内容……

Access:2022-12-10 21:03:35.151936060 -0500

Modify:2022-12-10 21:12:16.149970237 -0500

Change:2022-12-1021:19:23.698742725 -0500

 Birth: -

⑥而如果用touch命令再次触摸这个文件,则这个文件的三个时间都会改变,如下:

[root@localhost~]# touch mylog.log

[root@localhost~]# stat mylog.log

省略部分内容……

Access:2022-12-1021:21:08.859162533 -0500

Modify:2022-12-10 21:21:08.859162533 -0500

Change:2022-12-10 21:21:08.859162533 -0500

 Birth: -


3.3.2 touch命令

●命令名称:touch。

●英文原意:change file timestamps。

●所在路径:/usr/bin/touch。

●执行权限:所有用户。

●功能描述:修改文件的时间戳。

(1)命令格式

    [root@localhost ~]# touch [选项] 文件名或目录名

    选项:

        -a:只修改文件的访问时间(Access Time)

        -c:如果文件不存在,则不建立新文件

        -d:把文件的时间改为指定的时间

        -m:只修改文件的数据修改时间(Modify Time)

(2)常见用法

[root@localhost~]# touch mylog.log

touch的意思是触摸,如果文件不存在,则会创建空文件;如果文件已经存在,则会修改文件的时间戳,文件的三个时间(访问时间、数据修改时间、状态修改时间)都会被修改。


3.3.3 cat命令

●命令名称:cat。

●英文原意:concatenate files and print on the standard output。

●所在路径:/usr/bin/cat。

●执行权限:所有用户。

●功能描述:合并文件并打印输出到标准输出。

(1)命令格式

    [root@localhost ~]# cat [选项] 文件名

    选项:

        -A:相当于-vET选项的整合,用于列出所有隐藏符号

        -E:列出每行结尾的回车符$

        -n:显示行号

        -T:把Tab键用^I显示出来

        -v:列出特殊字符

(2)常见用法

①直接查看文件的内容:

[root@localhost~]# cat anaconda-ks.cfg

#version=DEVEL

# Systemauthorization information

auth--enableshadow --passalgo=sha512

# Use CDROMinstallation media

省略部分内容……

②使用“-n”选项,则会显示行号:

[root@localhost~]# cat -n anaconda-ks.cfg

     1   #version=DEVEL

     2   #System authorization information

     3   auth--enableshadow --passalgo=sha512

     4   #Use CDROM installation media

     省略部分内容……

③使用“-A”选项,则相当于使用了“-vET”选项,可以查看文本中的所有隐藏符号,包括回车符($)、Tab键(^I)等:

[root@localhost~]# cat -A anaconda-ks.cfg

#version=DEVEL$

# System authorizationinformation$

auth--enableshadow --passalgo=sha512$

# Use CDROMinstallation media$

省略部分内容……

cat命令用于查看文件内容,不论文件内容有多少,都会一次性显示。如果文件非常大,那么文件开头的内容就看不到了。不过Linux可以使用“pgup/pgdn”上下翻页,但是这种翻页是有极限的,如果文件足够长,那么还是无法看全文件的内容。所以cat命令适合查看不太大的文件。


3.3.4 more命令

●命令名称:more。

●英文原意:file perusal filter for crt viewing。

●所在路径:/usr/bin/more。

●执行权限:所有用户。

●功能描述:分屏显示文件内容。

(1)命令格式

    [root@localhost ~]# more [选项] 文件名

more命令一般不用选项,命令会打开一个交互界面,可以识别一些交互命令。

常用的交互命令如下:

●空格键:向下翻页。

●b:向上翻页。

●回车键:向下滚动一行。

●/字符串:搜索指定的字符串。

●q:退出。

(2)常见用法

[root@localhost~]# more anaconda-ks.cfg

#version=DEVEL

# Systemauthorization information

auth--enableshadow --passalgo=sha512

# Use CDROM installationmedia

省略部分内容……

--More--(40%)

more命令可以分屏显示文件内容,如果文件过大,可以使用more命令替代cat命令。


3.3.5 less命令

●命令名称:less。

●英文原意:opposite of more。

●所在路径:/usr/bin/less。

●执行权限:所有用户。

●功能描述:分行显示文件内容。

(1)命令格式

    [root@localhost ~]# less文件名

less命令可以使用“方向键”上下翻行;使用“pgup/pgdn”上下翻页。

(2)常见用法

[root@localhost~]# less anaconda-ks.cfg

#version=DEVEL

# Systemauthorization information

auth--enableshadow --passalgo=sha512

# Use CDROMinstallation media

省略部分内容……

:


3.3.6 head命令

●命令名称:head。

●英文原意:output the first part of files。

●所在路径:/usr/bin/head。

●执行权限:所有用户。

●功能描述:显示文件开头的内容。

(1)命令格式

    [root@localhost ~]# head [选项] 文件名

    选项:

        -n:从文件头开始,显示指定行数

        -v:显示文件名

(2)常见用法

①默认显示文件开头10行的内容:

[root@localhost~]# head anaconda-ks.cfg

#version=DEVEL

# System authorizationinformation

auth--enableshadow --passalgo=sha512

# Use CDROMinstallation media

cdrom

# Use graphicalinstall

graphical

# Run the SetupAgent on first boot

firstboot--enable

ignoredisk--only-use=sda

②显示文件开头指定行数的内容:

[root@localhost~]# head -n 5 anaconda-ks.cfg

#version=DEVEL

# Systemauthorization information

auth--enableshadow --passalgo=sha512

# Use CDROMinstallation media

cdrom


3.3.7 tail命令

●命令名称:tail。

●英文原意:output the last part of files。

●所在路径:/usr/bin/tail。

●执行权限:所有用户。

●功能描述:显示文件结尾的内容。

(1)命令格式

    [root@localhost ~]# tail [选项] 文件名

    选项:

        -n:从文件结尾开始,显示指定行数

        -f:监听文件的新增内容

(2)常见用法

①默认显示文件结尾10行的内容:

[root@localhost~]# tail anaconda-ks.cfg


%addoncom_redhat_kdump --enable --reserve-mb='auto'


%end


%anaconda

pwpolicy root--minlen=6 --minquality=1 --notstrict --nochanges --notempty

pwpolicy user--minlen=6 --minquality=1 --notstrict --nochanges --emptyok

pwpolicy luks--minlen=6 --minquality=1 --notstrict --nochanges --notempty

%end

②显示文件结尾指定行数的内容:

[root@localhost~]# tail -n 5 anaconda-ks.cfg

%anaconda

pwpolicy root--minlen=6 --minquality=1 --notstrict --nochanges --notempty

pwpolicy user--minlen=6 --minquality=1 --notstrict --nochanges --emptyok

pwpolicy luks--minlen=6 --minquality=1 --notstrict --nochanges --notempty

%end

③监听文件的新增内容:-f选项

[root@localhost~]# tail -f -n 5 anaconda-ks.cfg

%anaconda

pwpolicy root--minlen=6 --minquality=1 --notstrict --nochanges --notempty

pwpolicy user--minlen=6 --minquality=1 --notstrict --nochanges --emptyok

pwpolicy luks--minlen=6 --minquality=1 --notstrict --nochanges --notempty

%end

使用-f选项,光标不会退出命令,而会一直监听在文件的结尾处,等待显示新增内容。这时如果向文件中追加一些数据(需开启一个新终端),会实时显示在文件尾。


小结:

本节介绍文件操作相关命令。stat查看文件详细信息,包括文件的三个时间;touch是触摸一个文件,如果文件不存在,则会创建空文件,否则会修改文件的三个时间戳;cat适合查看不太大的文件;对于大文件,more可以分屏显示文件内容,less可以分行显示文件内容;head显示文件开头的内容;tail显示文件结尾的内容,其-f选项可以实时监听文件尾的新增内容。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容