【Linux】【实战系列】10 分钟掌握日常开发中 Linux 文本与文件处理命令

文章目录

  • 文本查看和处理
    • cat
    • tail
    • head
    • more & less
      • more
      • less
    • grep
      • 组合融合技
    • awk
  • 文本编辑
    • vi & vim
      • 三种模式
      • 使用
        • 基本使用
        • 其它使用技巧
  • 文件搜索
    • find
  • 最后
  • 个人简介

  • hello,大家好,我是 Lorin,今天和大家分享一期 Linux 命令实战教学,作为一个开发者熟悉并掌握常见的 Linux 命令可以说是基本功,这一期我将总结一些文本与文件处理的常见 Linux 命令以及一些日常工作中的常用使用技巧,如果大家喜欢后续还会分享一到两期网络、进程、内存相关的的实战系列。

文本查看和处理

cat

  • cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。
命令格式:
cat [-AbeEnstTuv] [--help] [--version] fileName常用参数:
-n 或 --number:由 1 开始对所有输出的行数编号
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行// 日常工作中我们可以用来读取文件
cat log.txt// 读取 log.txt 的数据进行编号并写入到 log1.txt
cat -n log.txt > log1.txt// 清空 log.txt 文件 注:这个只是为了炫技没有任何用处,劝大家少用
// 在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它则会立即得到一个 EOF。
cat /dev/null > log.txt

tail

  • tail 命令常用于查看文件的内容,经常和 -f 一起使用常看正在改变的文件,比如程序正在打印的日志。
  • 默认只打印文件末尾 10 行。
命令格式:
tail [参数] [文件]tail log.txt常用参数:
-f:循环打印正在发生改变的文件,如我们在工作中常用于读取正在程序正在打印的日志文件tail -f log.txt-n:命令默认打印文件末尾 10 行数据,可以使用 -n 指定行数tail -n 20 log.txt // 读取文件末尾 20 行数据tail -n +20 log.txt // 读取从 20 行开始到末尾的数据// 这里推荐一个缩写的写法:读取末尾 200 行同时循环打印正在改变的文件
tail -200f log.txt

head

  • 前面我们使用 tail 来读取文件的末尾,如果我们现在要读取文件的首行内容怎么办呢?当然我们可以使用 tail 从读取,那么你要读取的数据也太多了,我们可以使用 head 实现
命令格式:
head [参数] [文件]// 默认读取文件前 10 行数据
head log.txt常用参数:
-c<数目> 显示的字节数
-n<行数> 显示的行数// 显示文件前 20head -n 20 log.txt// 显示文件前 20 个字节
head -c 20 log.txt

more & less

  • 前面我们了解了 tail & head 可以从头或者尾查看文件,如果我们文件很大且需要每页依次读取怎么办呢?别慌我们还有 more 和 less 命令。

more

  • Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似).
命令格式:
more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]more log.txt常用参数:
-num 一次显示的行数
+/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
+num 从第 num 行开始显示
fileNames 欲显示内容的文档,可为复数个数// 比如我们读取文件 log.txt 从第 5 行开始显示 一次显示 10 行 且匹配文件前匹配 nginx 字符串后开始显示more -10 +3 +/nginx log.txt

less

  • less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页,大家有兴趣可以了解一下。
命令格式:
less [参数] 文件 

grep

  • Linux grep (global regular expression) 命令用于查找文件里符合条件(字符串或正则表达式)的文件或对应行。
命令格式:
grep [参数] pattern [文件]grep -c 2 'test' log.txt
grep -c 2 'test' log.txt常用参数:
-i:忽略大小写进行匹配
-v:反向查找,只打印不匹配的行
-r:递归查找子目录中的文件
-l:只打印匹配的文件名
-c:只打印匹配的行数// 日常我们使用经常的参数有 -i-c , 如实现匹配 log.txt 中 包含 test 字符串(忽略大小写)的行,并展示匹配行的上下两行grep -i -c 2 'test'  log.txt-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用,看着有点绕,我们来看看具体的案例,你会发现也可以使用直接使用正则表达式实现这个功能
// 当我们需要匹配多个关键字时是一个很有用的功能,比如我们可以这样使用:// 匹配包含 test 或 hello 关键字的行 
grep -c 2 -e 'test|hello' log.txt// 匹配同时包含 test 和 hello 关键字 
grep -c 2 -e 'test&hello' log.txt

组合融合技

  • 我们日常工作中会有这样一个场景,读取正在打印的日志文件同时匹配包含对应字符串的行,我们可以这样实现:
tail -f log.txt | grep -i 'test'
注:此处 grep 不支持 -c 仅使用 grep 匹配功能// 或者我们只想匹配前 20head -n 20 log.txt |  grep -C 2 -i 'bash'
  • 在日常开发中,我们可以去尝试使用这些命令的组合使用,你可能会收获到想不到的惊喜。

awk

  • AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
  • awk 命令很强大也很复杂,但在日常实际工作场景中其实使用得不多,这里我做一些简单的介绍,有兴趣的朋友可以去了解。
命令格式:
awk [选项参数] 'script' var=value file(s)awk [选项参数] -f scriptfile var=value file(s)// 用法简单示例
log.txt文本内容如下:
2 this is a test
3 Do you like awk
This's a test
10 There are orange,apple,mongo# 每行按空格或TAB分割,输出文本中的1、4项$ awk '{print $1,$4}' log.txt---------------------------------------------2 a3 likeThis's10 orange,apple,mongo

文本编辑

vi & vim

  • 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。
  • vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计,比如有一些大佬使用 vim 写程序,我还没体验过。

三种模式

  • vi/vim 共分为三种模式,命令模式(Command Mode)、输入模式(Insert Mode)和命令行模式(Command-Line Mode)。
用户刚刚启动 vi/vim,便进入了命令模式。在命令模式下按下i就进入了输入模式,使用Esc键可以返回到普通模式。在命令模式下按下 :(英文冒号)就进入了底线命令模式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用

基本使用
  • 使用 vi/vim 进入一般模式 vim test.text(若 test.text 保存时会创建)

![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?

  • 按下i就进入了输入模式

  • 按下 :(英文冒号)就进入了底线命令模式并输入 wq 命令保存退出

其它使用技巧
  • 进入一般模式后我们可以使用 /匹配字符 进行搜索
  • Ctrl + U 可以进行整行删除

文件搜索

find

  • Linux find 命令用于在指定目录下查找文件和目录,它可以使用不同的选项来过滤和限制查找的结果。
命令格式:
find [path] [expression]expression:是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等,可以使用的选项非常多,这里我举一些常见的示例:
-name pattern:按文件名查找,支持使用通配符 * 和 ?
-type type:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等
-user username:按文件所有者查找
-group groupname:按文件所属组查找
-amin n:查找在 n 分钟内被访问过的文件
-atime n:查找在 n*24 小时内被访问过的文件
-mmin n:查找在 n 分钟内被修改过的文件
-mtime n:查找在 n*24 小时内被修改过的文件// 查询当前目前及其子目录中下名为 log.txt 的文件
find . -name log.txt// 将当前目录及其子目录中的所有文件列出
# find . -type f// 查找 /home 目录下大于 1MB 的文件
find /home -size +1M

最后

  • 如果文章对你有帮助,请一键三连,关注、点赞、收藏,你的支持是我创作的最大动力,谢谢大家。

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。

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

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

相关文章

WebAssembly002 emcc Emscripten js端传入数组给c++

Emscripten下载 安装Emscripten&#xff1a;可以在Emscripten的官方网站&#xff08;https://emscripten.org/&#xff09;上找到安装说明。我的踩坑记录在&#xff1a;WebAssembly002 emcc install 解决 Error: Downloading URL ‘https://storage.googleapis.com/…‘ erro…

第九站(17天):C++IO流

文件IO流 对象:文件,控制台,特定数据类型stringstream (写数据输出流out,读数据输入流in) ofstream : ofstream outfile;//输出流:从键盘输出数据,写入到文件 //文件打开默认位ios::out//字节覆盖写 //可以截断设置为:ios::out | ios::trunc//将之前文件全部…

关于网络模型的笔记

1. OSI 七层参考模型&#xff1a; 简介&#xff1a; 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xff09;参考模型&#xff0c;即开放式系统互联。参考模型 是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联…

DolphinScheduler-3.2.0集群部署教程

本文目录 1.集群部署方案(2 Master 3 Worker)2.前置准备工作3.端口说明4.DS集群部署1.时间同步2.配置用户、权限3.配置集群免密登陆4.ZK集群启动5.初始化数据库1.创建数据库、用户、授权2.解压缩安装包3.添加MySQL驱动至libs目录 6.配置文件修改1.dolphinscheduler_env.sh 配置…

基于YOLOv5、v7、v8的竹签计数系统的设计与实现

文章目录 前言效果演示一、实现思路① 算法原理② 程序流程图 二、系统设计与实现三、模型评估与优化① Yolov5② Yolov7③Yolov8 四、模型对比 前言 该系统是一个综合型的应用&#xff0c;基于PyTorch框架的YOLOv5、YOLOv7和YOLOv8&#xff0c;结合了Django后端和Vue3前端&am…

【PyTorch】记一次卷积神经网络优化过程

记一次卷积神经网络优化过程 前言 在深度学习的世界中&#xff0c;图像分类任务是一个经典的问题&#xff0c;它涉及到识别给定图像中的对象类别。CIFAR-10数据集是一个常用的基准数据集&#xff0c;包含了10个类别的60000张32x32彩色图像。在上一篇博客中&#xff0c;我们已…

盖子的c++小课堂:第二十六讲:双向链表

前言 谢谢各位粉丝的支持,望我早日突破1000粉 双向链表 干货!单链表从原理到实现——附python和C++两个版本 - 知乎单链表是链表家族中的一员,每个节点依旧由 数据域(data)和指针域(next)组成,链表的具体概念下面有介绍: 机器学习入坑者:程序员基本功——链表的基…

消息队列RabbitMQ.01.安装部署与基本使用

目录 RabbitMQ的作用 Message queue 释义 问题思考 存在的问题 优化方案 案例分析 带来的好处 消息队列特点 Email邮件案例分析 Docker安装部署RabbitMQ 1.下拉镜像 2.运行RabbitMQ 3.打开防火墙端口号并重新运行防火墙 4.容器启动后,可以通过 docker logs 容器 查…

如何使用宝塔面板搭建Discuz论坛服务并结合内网穿透远程访问

文章目录 前言1.安装基础环境2.一键部署Discuz3.安装cpolar工具4.配置域名访问Discuz5.固定域名公网地址6.配置Discuz论坛 前言 Crossday Discuz! Board&#xff08;以下简称 Discuz!&#xff09;是一套通用的社区论坛软件系统&#xff0c;用户可以在不需要任何编程的基础上&a…

(三) MySQL字符集

MySQL字符集包括 基字符集&#xff08;CHARACTER&#xff09;与校对规则&#xff08;COLLATION&#xff09;这两个概念&#xff1a; latin1支持西欧字符、希腊字符等gbk支持中文简体字符big5支持中文繁体字符utf8几乎支持世界所有国家的字符utf8mb4是真正意义上的utf-8 查看当…

Git学习笔记(第6章):GitHub操作(远程库操作)

目录 6.1 远程库操作 6.1.1 创建远程库 6.1.2 命名远程库 6.1.3 本地库推送到远程库(push) 6.1.4 远程库拉取到本地库(pull) 6.1.5 远程库克隆到本地库(clone) 6.2 团队内协作 6.3 跨团队协作 6.4 SSH免密登录 6.1 远程库操作 命令 作用 git remote -v 查看所有远程…

【EISCOPUS双检索】2024电子、通信与智能科学国际会议(ECIS 2024)征稿通知!

2024年5月24日-27日 中国|长沙 会议重要日期 一轮截稿时间&#xff1a;2024年3月10日 录用通知时间&#xff1a;投稿后7-15天 注册截止时间&#xff1a;2024年5月10日 一、大会背景 随着互联网的不断创新&#xff0c;电子、通信和智能科学已经广泛应用于各个领域。为了为…

智慧博物馆信息化系统建设(1)

博物馆RFID藏品管理系统 博物馆藏品保管是一项十分复杂又繁琐的工作。从事保管工作除了经常、及时地进行藏品的登记、分类、编目、保养和修复等一系列工作外,还需要把有关藏品的信息迅速、正确地提供给利用者。要提高保管工作的效率,达到现代化的科学管理,从发展趋势看,进…

街机模拟游戏逆向工程(HACKROM)教程:[19]思路的多样性

在上一章,我们找到了检测敌人出现条件的地方,并测试成功,但是找到这个位置的思路并不只有这个方法,这里我们提供另一个思路。 我们已经知道,敌人出现需要一个条件,当这个条件满足时,敌人的出现,程序会需要初始化这个敌人出现的位置,也就是说,我们可以利用敌人的坐标…

教你三个方法去除图片上的涂鸦快收藏起来吧

在数字时代&#xff0c;我们经常需要在图片上进行各种编辑和修改&#xff0c;以使其符合我们的需求。然而&#xff0c;有时候我们会遇到一些图片上的涂鸦&#xff0c;这些涂鸦不仅影响了图片的美观度&#xff0c;还破坏了图片的整体效果。那么图片上的涂鸦怎么去掉&#xff0c;…

怎么移除WordPress后台工具栏“新建”菜单?如何添加“新建文章”菜单?

默认情况下&#xff0c;WordPress后台顶部管理工具栏有左侧有一个“新建”菜单&#xff0c;而且还有下拉菜单文章、媒体、链接、页面和用户等&#xff0c;不过我们平时用得最多的就是“新建文章”&#xff0c;虽然可以直接点击“新建”&#xff0c;或点击“新建 – 文章”&…

docker安装Rabbitmq教程(详细图文)

目录 1.下载Rabbitmq的镜像 2.创建并运行rabbitmq容器 3.启动web客户端 4.访问rabbitmq的微博客户端 5.遇到的问题 问题描述&#xff1a;在rabbitmq的web客户端发现界面会弹出如下提示框Stats in management UI are disabled on this node 解决方法 &#xff08;1&#…

赠书活动~

关注公众号获得&#xff0c;发送抽奖

JSON简单了解

文章目录 1、JSON介绍2、ES6模版字符串3、JS对象转化为JSON字符串3.1、手动JS对象转化为JSON字符串3.2、自动JS对象转化为JSON字符串 4、JS对象和java互相转换 1、JSON介绍 JSON 概念&#xff1a;JavaScript Object Notation。JavaScript 对象表示法&#xff0c;简单理解JSON是…

AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(九)

26.搭建开发环境 开发环境 | webpack 中文文档 (docschina.org) 之前运行时出现的警告和mode配置有关 目标11&#xff1a;配置开发服务器环境 webpack-dev-server 11.1 下载 webpack-dev-server 软件包到当前项目 11.2 设置打包的模式为开发模式&#xff0c;配置自定义命令 11…