Linux 命令:tail

1. 写在前面

本文主要介绍 Linux tail 命令:可用于查看文件的内容,有一个常用的参数 -f 常用于查阅实时更新的日志文件。

关注 公众号 获取最新博文: 滑翔的纸飞机

2. tail 命令

tail 命令的基本语法是:

tail [OPTION]... [FILE]...

示例准备两个文件:state.txt 和 capital.txt,包含国家和城市名称。

MacBook-Pro:tail dev$ cat state.txt
---------------------------------------------------
China
Mongolia
North Korea
South Korea
Japan
Philippines
Vietnam
Laos
Cambodia
Myanmar
Thailand
Malaysia
Brunei Darussalam
Singapore
Indonesia
East Timor
Nepal
Bhutan
Bengal
India
Pakistan
Sri Lanka
Maldives
Kazakhstan
Kyrgyzstan
Tajikistan
Uzbekistan
Turkmenistan
Afghanistan
Iraq
Iran
MacBook-Pro:tail dev$ cat capital.txt
---------------------------------------------------
Beijing
Shanghai
Guangzhou
Shenzhen
Tianjin
Hong Kong
Nanking
Macau
Tibet
Sian
chu-hai
TienTisn
ChengTu
Foochow
Kweilin
Ningpo
Swatow
Teochew
Kityall
Foochow
Tsamkong
tientsin
yangchow
soochow
Kaying
Lahsa
Hohhot

默认,不带任何选项,则只显示指定文件的最后 10 行。

例如:

MacBook-Pro:tail dev$ tail state.txt
---------------------------------------------------
Sri Lanka
Maldives
Kazakhstan
Kyrgyzstan
Tajikistan
Uzbekistan
Turkmenistan
Afghanistan
Iraq
Iran

参数:

参数描述
-f/-F循环读取
-q不显示处理信息
-c显示指定字节数
-n显示文件的尾部 n 行内容
-q不输出文件名
-r输出按行以相反顺序显示,此外,该选项还会改变 -b、-c 和 -n 选项

2.1 示例

(1)-n num 显示文件的尾部 n 行内容

必须在命令中指定 “num”,否则会显示错误。该命令也可以不使用符号 “n”,但必须使用"-"号。

MacBook-Pro:tail dev$ tail -n 3 state.txt
---------------------------------------------------
Afghanistan
Iraq
Iran
MacBook-Pro:tail dev$ tail -3 state.txt
---------------------------------------------------
Afghanistan
Iraq
Iran

tail 命令还带有 head 命令中没有的 +选项。有了这个选项,tail 命令将从指定的文件行号开始打印数据,而不是打印到文件末尾。如命令:tail +n file_name,数据将从行号n开始打印,直到指定文件的末尾。

MacBook-Pro:tail dev$ tail +30 state.txt
---------------------------------------------------
Iraq
Iran

(2)-c num 显示指定字节数

打印指定文件的最后 num字节。换行符算作一个字符,因此如果 tail 打印出换行符,它将算作一个字节。在该选项中,必须写入 -c,然后根据需要写入正数或负数。如果使用 +num,则显示从指定文件开始跳过 num 字节后的所有数据;如果使用 -num,则显示指定文件的最后 num 字节。

**注意:**如果 num 前没有正负号,命令将显示指定文件的最后 num 字节。

负数:显示最后5个字节数据;

MacBook-Pro:tail dev$ tail -c -5 state.txt
---------------------------------------------------
Iran或者:
MacBook-Pro:tail dev$ tail -c 5 state.txt
---------------------------------------------------
Iran

正数:文件开始跳过260字节后打印所有数据;

MacBook-Pro:tail dev$ tail -c +260 state.txt
---------------------------------------------------
istan
Afghanistan
Iraq
Iran

(3)-q 不输出文件名

如果给出的文件超过 1 个,则使用该命令。使用该命令时,每个文件中的数据前面都没有文件名。

不使用 -q 选项:输出文件名;

MacBook-Pro:tail dev$ tail state.txt capital.txt
---------------------------------------------------
==> state.txt <==
Sri Lanka
Maldives
Kazakhstan
Kyrgyzstan
Tajikistan
Uzbekistan
Turkmenistan
Afghanistan
Iraq
Iran==> capital.txt <==
Teochew
Kityall
Foochow
Tsamkong
tientsin
yangchow
soochow
Kaying
Lahsa
Hohhot

使用 -q 选项:不输出文件名;

MacBook-Pro:tail dev$ tail -q state.txt capital.txt
---------------------------------------------------
Sri Lanka
Maldives
Kazakhstan
Kyrgyzstan
Tajikistan
Uzbekistan
Turkmenistan
Afghanistan
Iraq
Iran
Teochew
Kityall
Foochow
Tsamkong
tientsin
yangchow
soochow
Kaying
Lahsa
Hohhot

(4)-f 循环读取

-f 选项一起调用时,Linux tail 命令会监控指定的文件。如果删除该文件,输出将被取消。正如开头所解释的,日志文件会定期轮换。因此,新文件将以旧文件名创建。要在日志文件轮换后继续监控该文件,我们可以使用 -F 选项:

tail -f logfile或tail -F logfile

监控多个日志文件的变化:

tail -f ./*.log

(5)-r 按行以相反顺序显示

未使用-r选项:按行输出;

MacBook-Pro:tail dev$ jpzhang$ tail -n 10 state.txt
---------------------------------------------------
Sri Lanka
Maldives
Kazakhstan
Kyrgyzstan
Tajikistan
Uzbekistan
Turkmenistan
Afghanistan
Iraq
Iran

使用-r选项:按行相反输出;

MacBook-Pro:tail dev$ tail -r -n 10 state.txt
---------------------------------------------------
Iran
Iraq
Afghanistan
Turkmenistan
Uzbekistan
Tajikistan
Kyrgyzstan
Kazakhstan
Maldives
Sri Lanka

(6)管道(|)

tail 命令可以与许多其他 unix 命令进行管道连接。在下面的示例中,tail 命令的输出将作为带有 -r 选项的 sort 命令的输入,以对来自文件 state.txt 的最后 7 个名称按相反顺序进行排序。

未排序:

MacBook-Pro:tail dev$ tail -n 7 state.txt
---------------------------------------------------
Kyrgyzstan
Tajikistan
Uzbekistan
Turkmenistan
Afghanistan
Iraq
Iran

逆序:

MacBook-Pro:tail dev$ tail -n 7 state.txt | sort -r
---------------------------------------------------
Uzbekistan
Turkmenistan
Tajikistan
Kyrgyzstan
Iraq
Iran
Afghanistan

它还可以与一个或多个过滤器进行管道连接,以进行额外处理。在下面的示例中,我们使用了 catheadtail 命令,并使用指令(>)将其输出存储在名为 list.txt 的文件中。

MacBook-Pro:tail dev$ cat state.txt | head -n 20 | tail -n 5  > list.txt
MacBook-Pro:tail dev$ cat list.txt
---------------------------------------------------
East Timor
Nepal
Bhutan
Bengal
India

首先,cat 命令输出 state.txt 文件中的所有数据,然后管道将 cat 命令的所有输出转到 head 命令。head 命令输出从开始(第 1 行)到第 20 行的所有数据,然后管道将 head 命令的所有输出转到 tail 命令。现在,tail 命令输出最后 5 行数据,并通过(>)指令操作符将输出转入文件 list.txt。

至此,在Linux中使用tail命令有一个基础了解。 它是head命令的补充,关注公众号,后续更新head命令的使用。

感谢您花时间阅读文章!
关注公众号不迷路!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/20952.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day46 动态规划part06

完全背包问题 完全背包和01背包问题唯一不同的地方就是&#xff0c;每种物品有无限件。先遍历物品还是先遍历背包以及遍历顺序 根据递推公式可知&#xff1a;每一个dp需要根据上方和左方的数据推出&#xff0c;只要保证数据左上方数据是递推出来的这种两个for循环的顺序就是可…

【故障诊断】基于EMD的振动信号时频分析新方法研究附matlab代码

matlab % 步骤1&#xff1a;加载振动信号数据 load(‘vibration_signal.mat’); % 加载振动信号数据&#xff0c;假设信号存储在变量signal中 % 步骤2&#xff1a;定义EMD函数 function imfs emd(signal) imfs []; % 存储提取的IMF分量 while ~isMonotonic(signal)[imf, r…

PostgreSQL的内存参数

PostgreSQL的内存参数 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777PostgreSQL 提供了多种内存参数&#x…

一个高效的go语言字符串转驼峰命名算法实现函数

在go语言的开发中我们经常需要对各种命名进行规范&#xff0c; 今天给大家介绍的是一个高效的将字符串转 驼峰命名 &#xff08;即 首字母大写的命名方式&#xff09;的函数。 // 字符串转驼峰命名 // author tekintian <tekintiangmail.com> func CamelStr(str string) …

【python学习】Anaconda的介绍、下载及conda和pip换源方式(切换到国内镜像源)

什么是Anaconda Anaconda 是一个专为数据科学和机器学习预装了多种库的Python发行版。 提供了包管理与环境管理的功能解决了多个版本python并存的问题解决了第三方包安装问题 如何下载Anaconda 官网地址&#xff1a;https://www.anaconda.com/ 点击右上角的 Free Download …

PostgreSQL 和Oracle锁机制对比

PostgreSQL 和Oracle锁机制对比 PostgreSQL 和 Oracle 都是业界广泛使用的关系型数据库管理系统&#xff0c;它们在锁机制方面都有独到的设计来控制并发访问&#xff0c;确保数据的一致性和完整性。下面我们详细比较一下这两个数据库系统的锁机制。 1. 锁类型 PostgreSQL P…

C语言王国——选择与循环(1)

目录 一、引言 二、选择结构 1&#xff0c;if语句 1.1&#xff0c;if...else...语句 1.2&#xff0c;多分支语句 1.3悬空else的问题 2&#xff0c;switch语句 2.1&#xff0c;switch 2.2&#xff0c;break 2.3&#xff0c;default 一、引言 写了几个C语言代码我发现C语…

ReduceTask工作机制

&#xff08;1&#xff09;Copy阶段 ReduceTask从各个MapTask上远程拷贝一片数据&#xff0c;并针对某一片数据&#xff0c;如果其大小超过一定阈值&#xff0c; 则写到磁盘上 &#xff0c;否则直接放到内存中。 &#xff08;2&#xff09;Merge阶段 在远程拷贝数据的同时 &a…

go模拟经典面试题

讲下MySQL事务 &#xff08;1&#xff09;事务的概念 事务就是对数据库执行一系列操作&#xff0c;这些操作要么全部成功执行&#xff0c;要么全部失败&#xff0c;不会存在部分成功的情况。 &#xff08;2&#xff09;事务的ACID特点 原子性&#xff1a;一个事务中的所有操…

def用法 Python:深度解析函数定义与调用的奥秘

def用法 Python&#xff1a;深度解析函数定义与调用的奥秘 在Python的编程世界中&#xff0c;def 关键字如同一座神秘的灯塔&#xff0c;照亮了我们探索函数定义与调用的道路。它不仅是创建函数的起点&#xff0c;更是构建高效、可维护代码的关键所在。本文将通过四个方面、五…

华为坤灵交换机S300, S500, S210,S220, S200, S310 如何WEB抓包

通过S系列交换机配置端口镜像实现抓包 1、应用场景 端口镜像是指将经过指定端口(源端口或者镜像端口)的报文复制一份到另一个指定端口(目的端口或者观察端口)。在网络运营与维护的过程中&#xff0c;为了便于业务监测和故障定位&#xff0c;网络管理员时常要获取设备上的业务报…

FFmpeg中视频 Filters 使用文档介绍

FFmpeg中Filters 简介 FFmpeg是一个强大的多媒体框架,它支持多种音视频编解码器、容器格式、协议等。其中,FFmpeg的Filters(过滤器)是FFmpeg中一个非常强大的功能,它允许用户对音视频数据进行各种处理,包括但不限于视频滤镜、音频效果、视频转换等。 到目前为止,FFmpeg…

Lua使用方式介绍

背景 Lua是C语言开发的脚本语言&#xff0c;设计的目的是为了嵌入到程序中&#xff0c;因此被设计得轻量小巧。Nginx配置中可以直接嵌入Lua 代码或引入Lua 文件&#xff0c;Redis支持运行Lua语句和脚本&#xff0c;Wireshark中使用Lua脚本自定义协议。 本文用于收集常用的语法…

JMeter源码解析之SplashScreen.java

JMeter源码解析之SplashScreen.java完结 SplashScreen.java主要作用 JMeter GUI启动加载界面。 文件路径 路径地址&#xff1a;…\apache-jmeter-5.1\src\core\org\apache\jmeter\SplashScreen.java 关于SplashScreen内容中的代码解析 package org.apache.jmeter;import …

队列——一种操作受限的线性表

队列 队列&#xff08;Queue&#xff09;简称队&#xff0c;也是一种操作受限的线性表&#xff0c;只允许在表的一端进行插入&#xff0c;而在表的另一端进行删除。向队列中插入元素称为入队或进队&#xff0c;删除元素称为出队或离队。队列中的元素是先进先出&#xff08;Fir…

大聪明教你学Java | 深入浅出聊 Stream.parallel()

前言 &#x1f34a;作者简介&#xff1a; 不肯过江东丶&#xff0c;一个来自二线城市的程序员&#xff0c;致力于用“猥琐”办法解决繁琐问题&#xff0c;让复杂的问题变得通俗易懂。 &#x1f34a;支持作者&#xff1a; 点赞&#x1f44d;、关注&#x1f496;、留言&#x1f4…

MySQL学习——选项文件的使用

MySQL 的许多程序都可以从选项文件&#xff08;有时也被称为配置文件&#xff09;中读取启动选项。选项文件提供了一种方便的方式来指定常用的选项&#xff0c;这样你就不必每次运行程序时都在命令行上输入这些选项。 要确定一个程序是否读取选项文件&#xff0c;你可以使用 -…

man命令的作用

man命令是Linux操作系统中一个非常实用的命令&#xff0c;它用于查看命令的手册页面&#xff0c;帮助用户了解特定命令的用法、选项和参数。这不仅对新用户在学习如何使用新命令时很有帮助&#xff0c;也方便了经验丰富的用户快速查找命令的详细信息。以下是具体介绍&#xff1…

[论文精读]Supervised Community Detection with Line Graph Neural Networks

论文网址:[1705.08415] Supervised Community Detection with Line Graph Neural Networks (arxiv.org) 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 ⭐内涵大量可视…

高速模拟信号链的设计学习

目录 概述&#xff1a; 定义&#xff1a; 断开&#xff1a; 链路设计&#xff1a; 结论&#xff1a; 概述&#xff1a; 由于对共模参数及其与设备之间的关联缺乏了解&#xff0c;客户仍然会提出许多技术支持问题。ADC数据表指定了模拟输入的共模电压要求。关于这方面没有太…