文件内容查看
直接查看文件内容
cat
Concatenate,串联,将一些文件的内容连续打印的屏幕上
cat [-AbEnTv]
-A 相当于-vET
-b 列出行号,但是空白行不标号
-n 列出行号,包括空白行
-E 将结尾的换行符用$显示
-T 将[Tab]用^I的形式显示出来
-v 列出一些看不出来的字符
tac
反向输出
nl
添加行号打印
nl [-bnw] 文件
-b 指定行号指定的方式
-b a 不论是否有空行,同样列出行号,类似cat -n
-b t 如果有空行,空的那一行不要列出行号(默认)
-n 列出行号表示的方法
-n ln 行号在屏幕最左方显示
-n rn 行号在自己栏位的最右方显示,且不加0
-n rz 行号在自己栏位的最右方显示,且加0
-w 行号栏位的占用的字符数
nl默认将输出的文件内容加上行号,且对行号可以做较多的显示设计。
翻页查看
cat、nl、tac都是一次性将数据全显示到屏幕上,但是不能一页一页查看。
more
最后会显示目前显示的百分比,在more运行的过程中,有几个按键可以用:
- 空格键:向下翻一页
- 回车键:向下翻一行
- /字符串:在这个显示的内容中,向下查找字符串这个关键词
- :f:立刻显示出文件名以及目前显示的行数
- q:离开more,不再显示该文件内容
- b或ctrl+b:往回翻页(只对文件有用,对管道无用)
less
- 空格键:向下翻一页
- [pagedown]:向下翻动一页
- [pageup]:向上翻动一页
- /字符串:向下查找字符串
- ?字符串:向上查找字符串
- n:重复前一个查找(与/和?有关)
- N:反向重复前一个查找
- g:前进到这个数据的第一行
- G:前进到这个数据的最后一行
- q:离开less
数据截取
取出文件前几行和后几行的操作
head
显示前几行
head [-n number] 文件
-n 后面接数字,表示显示几行
不加数字默认显示10行
显示15行
tail
显示后几行
tail [-n number] 文件
-n 后面接数字,表示显示几行
-f 表示持续刷新显示后面所接文件中的内容,等到按下ctrl+c才结束
也是默认显示10行
加-n 20显示后20行
现在看到man_db.conf一共有131行
执行tail -n +100 /etc/man_db.conf
可以显示100~131行
因为/var/log/messages
随时有数据写入,用-f
可以在该文件有数据写入时立即显示到屏幕上。用ctrl+c可以结束这个命令。
【例】
如果想取/etc/man_db.conf的第11到20行该怎么做?
先看一下前20行的内容
也就是要取前20行,然后在这20行中取后10行。可以用一个管道符号|来实现
管道符号的意思是前面的命令所输出的信息,通过管道交由后续的命令继续使用
所以这里的tail不需要文件名,因为tail需要的数据就是head处理后的数据。
【进阶】如果还要显示行号该怎么做?
先用nl给每个数列出序号,然后再取中间那段
调整顺序来从头标号
非纯文本文件
上面的指令都是用来看纯文本文件的,而看非纯文本文件可以用od来读
od [-t TYPE] 文件
-t 后面接各种类型的输出,比如
a 使用默认字符输出
c 使用ASCII字符输出
d[size] 利用十进制输出数据,每个整数占用[size]字节
f[size] 利用浮点数进制输出数据,每个整数占用[size]字节
o[size] 利用八进制输出数据,每个整数占用[size]字节
x[size] 利用十六进制输出数据,每个整数占用[size]字节
比如将/etc/issue
这个文件的内容以八进制列出存储值和ASCII的对照表
每个字符对应的数值是八进制,S对应的记录值是123,转化成十进制是83
修改文件时间或创建新文件
文件有三个主要的变动时间:
- mtime 内容数据变更时更新的时间
- ctime 文件状态改变时更新的时间(比如权限属性被更改)
- atime 文件内容被读取时更新的时间
可以看出默认显示的是mtime。
touch [-acdmt] 文件
-a 仅自定义access time(atime)
-c 仅修改文件的时间,若文件不存在则不建立新文件
-d 后面可以接想要自定义的日期而不用目前的日期
-m 仅修改mtime
-t 后面接想要自定义的时间而不用目前的时间,格式为YYYYMMDDhhmm
如果该文件不存在则会建立一个新的空文件,默认atime/ctime/mtime都是当前时间。
(这里ll就相当于ls -l)
用cp -a
将文件的属性内容全部复制过来,所以文件修改时间(mtime)和原来的文件相同。但是文件是刚刚建立的,所以状态时间(ctime)是现在的时间。然后现在用touch更改时间
atime和mtime都变成了14,但是ctime没变
换一种更改方式,将时间改为现在的时间2020/12/16/19:11
ctime没改变,一直是记录的目前时间。