cat命令_学习笔记_cat命令用法

Linux运维学习笔记之常用命令 cat/less/more/tail

上节内容,我们一起了解了 cp/mv/rm 三个命令的操作后,今天我们再来讲一下我们日常工作当中需要使用到的功能,就是查看日志文件或是配置文件的内容,

大家都知道,运维工作经常要做的就是做巡检,而巡检查看最多的就是各种日志文件。另外应用程序出错,查找原因也是要查看配置文件与日志文件。从中查找出问题所在。

在 liunx 中我们常用的命令就有

cat (concatenate)命令用于连接文件并打印到标准输出设备上。

主要用于查看比较少内容的文件或需要改写的文件,比如查看配置文件或清除日志文件内容。

实例1:查看网卡配置文件,查看完后,如果对它进行修改,使用 vi/vim命令,具体用法翻看之前的章节

[root@localhost network-scripts]# cat ifcfg-eth0   #查看网卡配置
DEVICE=eth0
TYPE=Ethernet
UUID=a5cd9ea3-81fb-4b91-bc0f-eff0aefb7d5b
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
HWADDR=::3E::0C:
PEERDNS=yes
PEERROUTES=yes
LAST_CONNECT=
[root@localhost network-scripts]# 

实例2:用于修改文件或清除文件内容

cat -n dest_file > source_file #dest_file 文件内容加上行数,并写入 source_file
cat -b d1_file d2_file > d3_file #d1与d2文件加上行数,然后再附加到 d3文件
cat /dev/null > /home/che/test.txt #清空 test.txt 内容
[root@localhost chenmz]# cat test.txt   #查看 test文件内容
akljwrewerrwerwrsfdfsdf
sdfsdfsdfsfsdfsfsdf
rwewrwerwrwrwerwr
yutyutyututyu
iouiouiououiouioiuoiu
ljlkjkljkljljl
hkjkhjkhjkhjkhjk
ghgjghjgjghjgj
fghfgfhgfhfhfgh
[root@localhost chenmz]# cat -n test.txt > dest.txt  #把 test文件的内容加上行数,并改名为 dest
[root@localhost chenmz]# cat dest.txt 
     1  akljwrewerrwerwrsfdfsdf
     2  sdfsdfsdfsfsdfsfsdf
     3  rwewrwerwrwrwerwr
     4  yutyutyututyu
     5  iouiouiououiouioiuoiu
     6  ljlkjkljkljljl
     7  hkjkhjkhjkhjkhjk
     8  ghgjghjgjghjgj
     9  fghfgfhgfhfhfgh
[root@localhost chenmz]# cat /dev/null > /home/chenmz/dest.txt  #清空 dest内容
[root@localhost chenmz]# cat dest.txt      #再使用cat,无内容可显示了。
[root@localhost chenmz]# 

less (less)随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页.

less [参数] 文件 

常用参数:

-N 显示行数,便于查看位置

-m 显示内容百分比,便于了解内容多少

-e 当文件显示结束后,自动离开

实例,加上参数后可以很清楚自己查看的内容

[root@localhost chenmz]# less -emN ctp.log 
      :: [CTPQuartzScheduler_Worker-2]  INFO: AutoChangePhaseJob: - 完成进行中项目的自动切换项目阶段定时任务,耗时:26MS
      :: [CTPQuartzScheduler_Worker-4]  WARN: ConfigManagerImpl: - load data is null from db, dataKey : cip_monitor^@log_period^@1
      :: [CTPQuartzScheduler_Worker-4]  WARN: ConfigManagerImpl: - load data is null from db, dataKey : cip_monitor^@meaasge_period^@1
      :: [开始定时执行任务]  INFO: InsertDataTask: - 定时器开始
      :: [开始定时执行任务]  INFO: OA: - *********** 付款申请单 开始 ***********
      :: [开始定时执行任务]  INFO: InsertDataTask: - 付款申请单 结束
      :: [开始定时执行任务]  INFO: OA: - *********** 供应商 开始 ***********
      :: [开始定时执行任务]  INFO: InsertDataTask: - 供应商档案 结束
      :: [开始定时执行任务]  INFO: OA: - *********** 付款结算单 开始 ***********
     :: [开始定时执行任务]  INFO: InsertDataTask: - 付款结算单 结束
     :: [开始定时执行任务]  INFO: OA: - *********** 凭证集成 开始 ***********
     :: [开始定时执行任务]  INFO: InsertDataTask: - 凭证集成 结束
     :: [开始定时执行任务]  INFO: OA: - *********** 请购单 开始 ***********
     :: [开始定时执行任务]  INFO: InsertDataTask: - 采购申请单 结束
     :: [开始定时执行任务]  INFO: InsertDataTask: - 定时器开始
     :: [开始定时执行任务]  INFO: OA: - *********** 付款申请单 开始 ***********
     :: [开始定时执行任务]  INFO: InsertDataTask: - 付款申请单 结束
     :: [开始定时执行任务]  INFO: OA: - *********** 供应商 开始 ***********
     :: [开始定时执行任务]  INFO: InsertDataTask: - 供应商档案 结束
ctp.log 0%

然后,在这里可以直接使用通用的操作符,对文件进行操作

/字符串:向下搜索"字符串"的功能

?字符串:向上搜索"字符串"的功能

n:重复前一个搜索(与 / 或 ? 有关)

N:反向重复前一个搜索(与 / 或 ? 有关)

b 向上翻一页

d 向后翻半页

h 显示帮助界面

Q 退出less 命令

u 向前滚动半页

y 向前滚动一行

空格键 滚动一页

回车键 滚动一行

[pagedown]: 向下翻动一页

[pageup]: 向上翻动一页

比如在这个界面下,使用/java 则会向下搜索带有 java 的内容,直接定位

    java.net.UnknownHostException: restapi.amap.com: 域名解析暂时失败
            at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method) ~[?:.0_212]
            at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:) ~[?:.0_212]
            at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:) ~[?:.0_212]
            at java.net.InetAddress.getAllByName0(InetAddress.java:) ~[?:.0_212]
            at java.net.InetAddress.getAllByName(InetAddress.java:) ~[?:.0_212]
            at java.net.InetAddress.getAllByName(InetAddress.java:) ~[?:.0_212]
            at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:) ~[httpclient.jar:]
            at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:) ~[httpclient.jar    :]
            at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:) ~[httpclient.jar:4    .]
            at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:) ~[httpclient.jar:]
            at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:) ~[httpclient.jar:]
            at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:) ~[httpclient.jar:]
            at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:) ~[httpclient.jar:]
            at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:) ~[httpclient.jar:]
            at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:) ~[httpclient.jar:]
            at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:) ~[httpclient.jar:]
%

more(more)以一页一页的形式显示,更方便使用者逐页阅读,更有搜索字符功能。

more 命令比 less 更好用,自带百分比功能,其它功能与 less 类似,这里就不再去做演示了,有兴趣的,自己去对比一下。有两个参数要重点说明一下

+num 从第 num 行开始显示。比如+(表示从第行开始显示)

-s 多个空行不显示(用于有些文件很多空行,可以压缩显示空间)

more + ctp.log
more -s ctp.log

more 显示界面也是有操作符可以使用的

Enter 向下n行,需要定义。默认为1行

Ctrl+F 向下滚动一屏

空格键 向下滚动一屏

Ctrl+B 返回上一屏

= 输出当前行的行号

:f 输出文件名和当前行的行号

V 调用vi编辑器

!命令 调用Shell,并执行命令

q 退出more

tail(tail)查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

最为常用的一个命令,也是我最喜欢使用的一个命令,因为它可以直接查看正在不断变化的文件,比如说正在不断变化的 log 文件(比如应用的 log 文件)

实例

tail 命令默认是显示最后行的数据,如果要显示更多,则需要加上参数-n 数字 使用

tail -n  ctp #显示最后行的内容
tail -n - ctp #不显示前行,从第行起显示到结尾,等同 more + ctp

结合这四个命令,几乎我们可以对查看 log 文件或是配置文件都是很方便的哦,你学会了么?

其中常用度高到底的顺序为 tail>cat>more>less

原文链接:,转发请注明来源!