前面小节介绍了文件和目录相关的操作,本小节介绍如何使用 file
、cat
、more
、tail
命令在不同场景下去查看文件相关信息和内容。
file
命令可以用来查看文件类型,还能查看文件的编码格式,下面列举一些 file
命令的参数:
file 命令参数名称 | 功能与作用描述 |
---|---|
-b | 表示 --brief ,显示查看结果时,不显示文件名 |
-c | 表示 --checking-printout ,显示指令执行过程 |
-f | 表示 --files-from FILE ,列出文件中文件名的文件类型 |
-F | 表示 --separator STRING ,使用指定符号替换输出文件名后的默认的 : |
-i | 输出 mime 类型的字符串 |
-L | 表示 --dereference ,查看对应软链接对应文件的文件类型 |
-z | 表示 --uncompress ,尝试查看压缩文件信息 |
这里还是以 /home
目录里面的文件为例,命令如下:
cd /home
ls
file a.txt
file new_dir
cd study/
file alltxt.tar
file alltxt.tar.gz
file alltxt.tar.bz2
file alltxt.tar.Z
执行结果如下图:
Tips:如图所示,使用
file
命令可以看到文件的编码、文件类型。
在 file
命令后面跟上一个 -b
参数重复一次上面的流程,命令如下:
cd /home
ls
file -b a.txt
file -b new_dir
cd study/
file -b alltxt.tar
file -b alltxt.tar.gz
file -b alltxt.tar.bz2
file -b alltxt.tar.Z
执行结果如下图:
Tips:如图所示使用
-b
参数查看的文件信息时没有打印出文件名。
进入到 /home/study
,使用 -z
参数去查看压缩包信息,命令如下:
cd /home/study
ls
file -z alltxt.tar.gz
file -z alltxt.tar.bz2
file -z alltxt.tar.Z
执行结果如下图:
Tips:如图所示,展示了压缩包相关的信息。
cat
命令可以用来查看文件内容,下面列举一些 cat
命令的参数:
cat 命令参数名称 | 功能与作用描述 |
---|---|
-A | 表示 --show-all ,展示所有内容 |
-b | 表示 --number-nonblank ,对查看的内容的非空行,对其行数编号 |
-n | 表示 --number ,对查看的内容行数编号输出 |
-v | 表示 --show-nonprinting ,使用^ 和M- 引用,除了LFD和 TAB 之外 |
-E | 表示 --show-ends ,在每行的最后展示KaTeX parse error: Expected 'EOF', got '符' at position 1: 符̲号;就是无论你输入了什么,屏幕…符号结尾 |
-e | 同 -vE |
-s | 表示 --squeeze-blank ,抑制空行输入,就是如果你有多行连续的空行,他会压缩成一行输出 |
-T | 表示 --show-tabs ,将跳格字符显示为^I |
-t | 同 -VT |
这里以之前小节配置过的 /etc/sysconfig/network-scripts/ifcfg-ens160
文件为例,使用如下命令查看其中的内容:
cd /etc/sysconfig/network-scripts
ls
cat ifcfg-ens160
执行结果如下图:
Tips:在输入路径或者文件名称的时候可以使用
Tab
键来补全。
命令如下:
cat -b ifcfg-ens160
cat -n ifcfg-ens160
执行结果如下图:
Tips:
-b
表示排除掉空行的内容,然后对其输出编号,会后会补上一行空行展示出来。
more
命令也用来查看文件内容,下面列举一些 more
命令的参数:
more 命令参数名称 | 功能与作用描述 |
---|---|
+n | 从第 n 行开始显示 |
-n | 定义屏幕大小为 n 行 |
+/pattern | 在每个档案显示前搜寻该字串 pattern ,然后从该字串前两行之后开始显示 |
-c | 从顶部清屏,然后显示 |
-d | 提示 Press space to continue,'q' to quit(按空格键继续,按q键退出) ,而禁用响铃功能 |
-l | 忽略 Ctrl+l(换页) 字符 |
-p | 通过清除窗口而不是滚屏来对文件进行换页,与 -c 选项相似 |
-s | 把连续的多个空行显示为一行 |
-u | 把文件内容中的下画线去掉 |
这里以查看 /etc/mtools.conf
文件内容为例,命令如下:
cd /etc
more mtools.conf
执行结果如下图:
Tips : 如图中所示,可以按
空格
键继续浏览剩下内容,也可以按q
键结束浏览。
tail
命令也用来查看文件内容,下面列举一些 tail
命令的参数:
tail 命令参数名称 | 功能与作用描述 |
---|---|
-f | 表示 --follow[={name|descriptor}] ,该参数用于监听文件新增内容。 |
-c | 表示 --bytes=[+]NUM ,从 num 字节位置读取指定文件 |
-n | 表示 --lines=[+]NUM ,从 num 行位置读取指定文件。 |
-F | 同 -f |
-q | 表示 --quiet ,从不输出给出文件名的首部 |
-s | 表示 --sleep-interval=N ,与-f合用,表示在每次反复的间隔休眠S秒 |
以 /etc/mtools.conf
文件为例,如要查看最后 6 行内容,命令如下:
cd /etc
tail -5 mtools.conf
执行结果如下图:
Tips:使用如图所示的命令可以查看
mtools.conf
文件的最后 5 行内容。
以 /etc/mtools.conf
文件为例,如要从第 45 行开始显示内容,命令如下:
tail -n +45 mtools.conf
执行结果如下图:
Tips:使用如图所示的命令可以查看
mtools.conf
文件的第 45 行开始的内容。
在实际工作中,经常会使用 -f
去监听日志新增内容,达到开发者调试的目的,这里为了演示方便,需要打开之前安装过的 MobaXterm
,按照之前第 7 小节的步骤,打开两个登录窗口,示例如下:
首先进入 /home
目录,新建一个日志文件 access.log
,命令如下:
cd /home
ls
touch access.log
执行结果如下图:
接下来使用 tail
命令跟上 -f
参数对 access.log
日志文件监听,命令如下:
tail -f access.log
执行结果如下图:
接下来在新打开的窗口中,进入 /home
目录,向 access.log
文件写入内容:
cd /home
echo "这是第一条测试内容(time=2020-05-05 18:00)" >> access.log
echo "这是第二条测试内容(time=2020-05-05 19:00)" >> access.log
echo "这是第三条测试内容(time=2020-05-05 20:00)" >> access.log
执行结果如下图:
Tips:这种监听日志的方法经常用在后端程序开发调试工作中。
此时模拟日志数据输入完成,接着打开原来的监听窗口,如下图所示:
本小节介绍了如何使用 file
、cat
、more
、tail
去查看文件内容,读者根据不同场景来选择合适的命令查看文件内容,其中 tail -f
命令经常用于后端开发日志监听,来调试代码的作用,也能帮助快速捕捉到程序异常,提升修复问题的效率。