Linux自学之旅-基础命令(三)
前言
1.上节我们讲述的是对目录进行操作的一些基础命令,那既然有目录操作,那是不是也该有文件的操作命令鸭。
2.那么我们这节就将介绍一些基础的对文件操作的命令
提示:以下是本篇文章正文内容
一、前节回顾
上一节中我们主要介绍了如下几个对目录进行操作的基本命令以及关机重启命令{
1.“ls”:显示目录底下的内容
2.“cd”:切换当前工作路径
3.“pwd”:显示当前的工作路径
4.“mkdir”:创建空目录
5.“rmdir”:删除空目录
6.shutdown -h now:立即关机
7.shutdown -r now:立即重启
(想具体了解这几个命令的使用方式的请点击下方链接访问:
Linux基础命令(一))
}
二、(文件/目录)时间
1.在开始介绍文件操作命令前,我们先来说说Linux底下(文件/目录)时间(就是说Linux底下文件和目录都有自身的一个时间),三个参数{
1.访问时间(Access Time,简称 atime):我们每次读取一次文件或查看一次文件该时间都会进行修改【比如你这个文件是个文本,我如果使用查看文件内容的命令去查看你这个文本文件里面有什么东西,那么我看一次这个访问时间就会改一次】
2.数据修改时间(Modify Time,简称 mtime):当文件的数据内容被修改时,该时间就会改变(我前面查看了你的文本文件里面有什么了吧,那么我如果在进行修改,把里面的内容更改的话那么数据修改时间就会改变)
3.状态修改时间(Change Time,简称 ctime):当文件的权限或者属性被修改时,该时间也会随之改变(可以理解为我前面的“访问时间”或“数据修改时间”只要一有改动,那么我这个时间也是会随之一起进行变化。因为对文件来说,就算你的访问时间变化了其他没变,也算是文件本身的属性改变)
}
三、文件操作命令(一)
1.stat命令
stat是查看文件或目录的详细信息的命令。
- 命令名称:stat
- 命令全称:display file or file system status
- 所在路径:/usr/bin/stat
- 执行权限:所有用户
- 功能描述:查看文件或目录的详细信息(可以理解为windows下右击一个应用之后点属性弹出来的东西)
命令格式
stat 文件/目录
举个例子:
[root@localhost ~]# ls -lh
总用量 48K
-rw-r--r--. 1 root root 0 1月 14 07:53 2020-01-01 18:01
-rw-r--r--. 1 root root 0 1月 14 07:52 2020-01-02 09:10:33
drwxr-xr-x. 2 root root 4.0K 1月 13 07:59 aa
-rw-------. 1 root root 1.2K 1月 11 11:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 27K 1月 11 11:22 install.log
-rw-r--r--. 1 root root 7.4K 1月 11 11:21 install.log.syslog
[root@localhost ~]# stat aa/ 【(stat xx)stat后接目录或文件名】
File: "aa/"
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: 803h/2051d Inode: 919029 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-01-14 07:56:51.227165819 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 07:55:07.394163343 +0800
[root@localhost ~]#
从上至下的解释:
(File:名称 Size:大小 Blocks:块 IO Block:IO块
Device:设备 Inode:节点 Links:硬链接 Access:权限
Uid:用户id Gid:组id Access:访问时间
Modify:数据修改时间 Change:状态修改时间)
【仔细注意下面三条的时间,就是我们前面讲的Linux下文件或目录的三条时间】
~~
~~
2.touch命令
那么我们既然有可以查看文件或目录详细信息的命令,我们已经知道了目录如何创建,那么我们也想查看我们的文件的详细内容,那我们的文件又从何创建呢?touch可以帮助到你:
touch命令主要的作用是创建空文件或修改文件时间。
- 命令名称:touch
- 命令全称:change file timestamps
- 所在路径:/bin/touch
- 执行权限:所有用户
- 功能描述:创建空文件或修改文件时间
命令格式
touch [选项] 文件名
选项:
-a:只修改文件的访问时间
-c:仅修改文件的时间参数(3个时间参数都改变),如果文件不存在,则不建立新文件
-d:后面可以跟欲修订的日期,而不用当前的日期,即把文件的atime和mtime时间改为指定的时间
-m:只修改文件的数据修改时间
-t:命令后面可以跟欲修订的时间,而不用目前的时间,时间书写格式为【YYMMDDhhmm】
那么我先来举两个用touch修改文件时间的例子(常用修改时间例子):
(修改文件访问时间)
[root@localhost ~]# ls -lh
总用量 48K
-rw-r--r--. 1 root root 0 1月 14 07:53 2020-01-01 18:01
-rw-r--r--. 1 root root 0 1月 14 07:52 2020-01-02 09:10:33
drwxr-xr-x. 2 root root 4.0K 1月 13 07:59 aa
-rw-------. 1 root root 1.2K 1月 11 11:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 27K 1月 11 11:22 install.log
-rw-r--r--. 1 root root 7.4K 1月 11 11:21 install.log.syslog
[root@localhost ~]#
[root@localhost ~]# stat aa/
File: "aa/"
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: 803h/2051d Inode: 919029 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2021-01-14 07:56:51.227165819 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 07:55:07.394163343 +0800
[root@localhost ~]#
[root@localhost ~]# touch -a -d "2020-01-01 13:11" aa/
[root@localhost ~]#
[root@localhost ~]# stat aa/
File: "aa/"
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: 803h/2051d Inode: 919029 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 13:11:00.000000000 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 08:19:13.022154519 +0800
[root@localhost ~]#
(如上,我目录下有aa这个目录,我用stat查看了aa目录的访问时间,
发现它的访问时间是“2021-01-14 07:56:51”--2021年1月14日7点56分51秒访问过
那么我们知道它的原始时间后,我们利用“touch -a -d “2020-01-01 13:11 aa/””
的方式对它的访问时间进行了一个修改;-a是只修改访问时间,-d是指后面可跟上一段
要修改的时间,修改完之后再次stat查看发现时间就变成了我们修改的时间)
(修改数据修改时间)
[root@localhost ~]# ls -lh
总用量 48K
-rw-r--r--. 1 root root 0 1月 14 07:53 2020-01-01 18:01
-rw-r--r--. 1 root root 0 1月 14 07:52 2020-01-02 09:10:33
drwxr-xr-x. 2 root root 4.0K 1月 13 07:59 aa
-rw-------. 1 root root 1.2K 1月 11 11:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 27K 1月 11 11:22 install.log
-rw-r--r--. 1 root root 7.4K 1月 11 11:21 install.log.syslog
[root@localhost ~]# stat aa/
File: "aa/"
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: 803h/2051d Inode: 919029 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 13:11:00.000000000 +0800
Modify: 2021-01-13 07:59:57.512804253 +0800
Change: 2021-01-14 08:19:13.022154519 +0800
[root@localhost ~]# touch -m -d "1999-01-01 12:01" aa/
[root@localhost ~]# stat aa/
File: "aa/"
Size: 4096 Blocks: 8 IO Block: 4096 目录
Device: 803h/2051d Inode: 919029 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-01-01 13:11:00.000000000 +0800
Modify: 1999-01-01 12:01:00.000000000 +0800
Change: 2021-01-14 08:27:35.851153422 +0800
[root@localhost ~]#
(这个例子我们将-a只修改访问时间换成了 -m只修改数据修改时间,
后面依旧-d并接上要修改的时间,最后stat再查看一下就发现已经更改)
【记住,最后一个状态修改时间是不能修改的,它是随着你前面的“访问时间”和
“数据修改时间”变化而变化的;但是它不是你前面修改了什么时间他就会跟着变成
什么时间,而是你修改了前面的时间之后,状态修改时间会自动变成系统的最新的时间
----举个例子,比如你访问时间修改成了“1999-11-11 12:11”,状态修改时间
的话他是不会也变成“1999-11-11 12:11”的,而是你修改成功的时候系统当前什么
时间,他就是什么时间】
最后我还说过了,touch是可以创建文件的,我们来举一个创建文件的例子:
(创建文件)
[root@localhost aa]# ls -lha
总用量 8.0K
drwxr-xr-x. 2 root root 4.0K 1月 1 1999 .
dr-xr-x---. 3 root root 4.0K 1月 14 08:07 ..
[root@localhost aa]#
[root@localhost aa]# touch snljh
[root@localhost aa]# ls -lha
总用量 8.0K
drwxr-xr-x. 2 root root 4.0K 1月 14 08:37 .
dr-xr-x---. 3 root root 4.0K 1月 14 08:07 ..
-rw-r--r--. 1 root root 0 1月 14 08:37 snljh
[root@localhost aa]#
(直接touch后面接一个文件名就可以直接创建出一个文件了)
~~
~~
3.cat命令
那么我们已经创建好了文件了,但是总觉得哪里有点不对鸭,我们想起上一节,我们既可以创建也可以进入目录,那么我们这一节创建文件,那能不能进入文件呢?能鸭,不过不叫进入文件,我们是查看文件里面有什么。
cat命令是用来查看文件本身的数据内容
- 命令名称:cat
- 命令全称:concatenate files and print on the standard output
- 所在路径:/bin/cat
- 执行权限:所有用户
- 功能描述:查看文件内容并标准输出(查看文件里的内容并直接显示在屏幕上)
命令格式
cat [选项] 文件
选项:
-A:相当于-vET选项的集合,用于列出所有隐藏符号
-E:列出每行结尾的回车符$
-n:显示行号
-T:把Tab键用^显示出来
-v:列出特殊字符
我们随便举两个常用例子:
(直接查看)
[root@localhost aa]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
[root@localhost aa]#
(直接cat后面接你要查看的文件的路径,
如上使用的是绝对路径查看,
我查看的是“根目录下的etc目录下的名叫issue的文件的内容”,
要你的文件里面有东西他才会显示,要不然没东西只显示空白)
(-n进行查看)
[root@localhost aa]# cat -n /etc/issue
1 CentOS release 6.6 (Final)
2 Kernel \r on an \m
3
[root@localhost aa]#
(还是查看issue这个文件,不过我加了-n选项,文本就会在前面自动显示行号,
如上,我有三行数据【最后一行有数据的,大家可以自行-A显示特殊符号查看一下】)
~~
~~
4.more命令
我们查看文件是有很多种查看的命令的,cat只是其中一种,现在我们来介绍第二种;
more是分屏查看文件
- 命令名称:more
- 命令全称:file perusal filter for crt viewin
- 所在路径:/bin/more
- 执行权限:所有用户
- 功能描述:分屏查看文件(一页一页向上向下翻)
命令格式
more 文件名
举2个例子 :
(查看内容少的文件)
[root@localhost aa]#
[root@localhost aa]# more /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
[root@localhost aa]#
(还是刚才那个文件,和cat一样的操作,
这时候有人问了,这不是和cat一样么?那直接cat不香嘛,cat功能还多;
那么请看下面的例子)
(cat查看内容多的文件)
[root@localhost aa]# cat /var/log/anaconda.log
......
11:22:06,271 INFO : leaving (1) step writeksconfig
11:22:06,271 INFO : moving (1) to step setfilecon
11:22:06,271 DEBUG : setfilecon is a direct step
11:22:06,271 INFO : setting SELinux contexts for anaconda created files
11:22:11,196 INFO : leaving (1) step setfilecon
11:22:11,196 INFO : moving (1) to step copylogs
11:22:11,196 DEBUG : copylogs is a direct step
11:22:11,196 INFO : Copying anaconda logs
[root@localhost aa]#
(cat有一个缺陷,就是如果你的文件内容过多的话,
cat直接查看会直接跳到文件的最后几行,前面的你想看的话还得自己慢慢翻上去;
如上,log目录下的anaconda.log文件内容很多的,大家可以自己试试cat看看,
就可以知道缺陷了,你想看第一条的内容还得自己慢慢往上面翻,还不一定翻得到)
(more查看长文件)
[root@localhost aa]# more /var/log/anaconda.log
08:56:06,299 INFO : stage2 url is cdrom:///dev/sr0:/mnt/stage2
08:56:06,341 INFO : Loading SELinux policy
08:56:06,892 INFO : getting ready to spawn shell now
08:56:07,129 INFO : Running anaconda script /usr/bin/anaconda
08:56:08,452 INFO : CentOS Linux is the highest priority installclass, using it
08:56:08,457 INFO : created new libuser.conf at /tmp/libuser.4kQJyR with instPath="/mnt/sysimage"
08:56:08,458 INFO : anaconda called with cmdline = ['/usr/bin/anaconda', '--stage2', 'cdrom:///dev/sr0:/mnt/stage2', '--grap
hical', '--selinux']
--More--(8%)
......
[root@localhost aa]#
(可以知道more是翻页式从第一页开始游览文件的,就是一页一页看的。操作指令如下:
- 空格键:向下翻页(空格一次就是看下一页一次)
- b:向上翻页(上一页的意思)
- 回车键:下一行(一行一行的看的意思)
- /字符串(直接/后面加上你要搜索的字符串,他会自动搜索你想找的东西)
- q:退出(退出more查看文件内容)
以上选项都是直接按键盘就会生效了的,大家自己试试吧
)
~~
~~
5.less命令
less也是查看文件的命令,和more相似,不过less是分行显示文件内容
- 命令名称:less
- 命令全称:opposite of more
- 所在路径:/usr/bin/less
- 执行权限:所有用户
- 功能描述:分行显示内容(支持小键盘一行一行向下向上翻)
less命令的指令操作基本和more一致,不过less可以支持小键盘的上下左右键进行查看文件内容,可以更加针对每一行的数据仔细审查。
(less的基本指令操作可以参照more的,直接按键盘对应键位就可以了。另外less具备more不具备的小键盘上下左右键进行查看文件)–就是你电脑键盘右下角不是有如下图这样的按键嘛,可以直接小键盘操作文件内容;–这里就不示范了
【那这里又有人会说了less和more一样?那么这两个命令有共同存在的必要么?具体的命令对比我会在后面总结在和大家讲讲】
总结
本节我们讲述了一些简单的文件操作命令,但是这一文件操作命令章节并没有结束,还有一点命令没有讲,但是因为篇幅实在有点多了,所以想留到下一节再继续讲剩下的命令,那么我们回顾一下这一节所学的命令{
1.stat:查看文件或目录的详细信息
2.touch:创建文件或修改文件时间(修改时间的话只能改访问时间和数据修改时间)
3.cat:查看文件内容并标准输出(直接显示到屏幕)
4.more:分页查看文件(一页一页翻)
5.less:分行查看文件(一行一行翻)
}
今天我们学习了很多查看文件内容的命令,做个对比吧:
如果你是想查看内容很少的文件:cat命令
如果你是想查看内容很多的文件:less命令(基本可替代more,可以小键盘一行一行翻,也可以进行more全部操作)
我是结花,我们下次见。