Linux基础指令(四)

news2024/11/16 20:27:38

目录

  • 前言
  • 1. find & which 指令
    • 1.1 find
    • 1.2 which
    • 1.3 alias
    • 1.4 where
  • 2、grep 指令
  • 3、xargs 指令
  • 结语:

前言

欢迎各位伙伴来到学习 Linux 指令的 第四天!!!

在上一篇文章 Linux基本指令(三) 当中,我们学会了通过学习 echo 指令,引入了 Linux 系统中,输出重定向、追加重定向、输入重定向等概念的学习,同时也重新认识了 cat 指令究竟是在做什么事情。而后我们了解了查阅文本的阅读工具指令 more 和 less,并对比了其的异同。然后我们顺势讲到了 head 和 tail 指令,让我们在查阅文本信息的时候,方便许多的指令,最后我们再由 head 指令 和 tail指令顺势的引出了 管道文件 的概念,然后给大家讲清楚了什么是管道,为什么要有管道,管道有什么用处等概念。

再上一篇指令文章的学习中,我们开始逐步的接触到了一些系统层面的概念,难度肯定有所提升,但就是这样的难度,我们还有很多要面临!

OK,废话不多说,我们开启今天的学习,
今天我们要学习的是……


1. find & which 指令

1.1 find

大家如果去 man 一下 find,可以发现,find 的选项 特别特别多!真的是看不过来一点。
所以呢,我这里就讲一个最常见的

find ~ -name 要查找的名字(文件或者目录都可以)
// 这其中的 ~ 号,就是家目录的意思,大家可以理解为,find就是从家目录开始,往下一层一层去搜素你要查找的信息

在这里插入图片描述

1.2 which

which就是 在系统路径中,去查找 特定的指令 所在的路径 !!

which + 想要查找的指令

在这里插入图片描述
看到这里,我相信,很多人肯定有个疑惑
为什么指令还可以查找的???
为什么指令还有所谓的路径???
最后。。。什么是指令????

如果有兴趣了解这些问题的话,大家可以看看 如何看待Linux下的各种命令 这篇文章。

如果没有过多的兴趣,那么大家只需要记住一句话就可以了,那就是,Linux下的各种命令 / 指令,它的本质都是可执行程序!!!


1.3 alias

不知道有没有细心的铁子注意到这么一个现象,那就是为什么 which ls 下面不仅显示了 ls 的路径,还显示了其它东西呢??? 这个 alias 是个什么东西呀??

在这里插入图片描述

alias #给命令其别名
alias hh='ls -al'  # 给ls -al 这一条命名,起了另外一个名字,叫做hh

在这里插入图片描述
给 ls -al 起别名,换言之就是,起了别名之后, hh 就是 ls -al ,ls -al 就是 hh,运行谁,都是一样的效果!!

大家也不用担心起了别名之后,怎么删除这个别名,当退出用户账号之后,这个别名也就自动失效了。

1.4 where

这个指令,是给大家拓展一下的,它也是用来查找文件路径的一个指令(不严格匹配),这个日常用的比较少,大家了解一下就好了。

在这里插入图片描述


2、grep 指令

在这里插入图片描述
我们可以看到,grep ‘666‘ file,把 file 这个文件中有关 ’666‘ 的文本信息过滤出来,并且打印在屏幕上!

所以什么是 grep ?? —— grep 就是一个行文本过滤工具!

不知道大家对 cat 这条指令还有没有印象,cat 就是查看目标文件的内容
而与它相反的是 tac,tac 就是逆置查看目标文件的内容

那假设,我此时,想要将 file 这个文件中的所有关于’666’的文本信息过滤出来,并且逆置显示出来,我可以怎么做呢?(大家可以先思考,你会怎么做)

首先要过滤,其次要逆置,本质上,这属于两条命令的工作了,那涉及到连接多条命令,我们是不是可以考虑用刚刚学习到的管道来处理呢??

grep '666' file.txt  | tac

在这里插入图片描述
我们还可以在上面的基础上,再提取前3行的文本信息,然后输出重定向到一个文件当中!!!

grep '666' file.txt  | tac | head -3 > tmp.txt

在这里插入图片描述
类似这种玩法,还有很多,这里就不一一给大家展示了,有兴趣的可以自己下来去尝试组合一下,运用上面所学习到的 head、tail、或者是输出重定向等等指令,灵活运用。

其次 grep,还可以带 -n 行号进行过滤显示,这里的行号,表示的是,该文本信息在文件中,对应的是第几行的意思。

grep -n ‘666’ file.txt

在这里插入图片描述

我们刚刚讲 grep 的时候,它的作用是,把包含 666 的行,给我过滤显示出来
那么加上 -v之后,它的意思就变成了,把 包含 666 的行给我去掉,我不要了,我只要不包含 666 的行文本

grep -v '666' file.txt   

演示案例,我换了一个方便观察的文本进行演示。带上 -v 之后,包含 main 的那一行文本,就被过滤出去了。
在这里插入图片描述

同样的, -v 的同时,也可以带上行号显示

grep -vn 'main' file.txt 

在这里插入图片描述

可能有人要问了,那… grep 还能带其他的选项吗?? —— 答案是,能!
但我们先来看一组现象

在这里插入图片描述

我们可以看到,hello 文件里的printf 有纯大写的,也有纯小写的,还有大小写混合的!!
grep ’printf‘ hello 之后,我们可以看到,显示出来的是纯小写的 printf,也就是说,grep,它是一种绝对匹配!!

有人又要问了,什么是绝对匹配?! —— 绝对匹配就是 严格区分大小写

那问题来了,那能不能让 grep 不区分 大小写进行过滤啊?? —— 答案是,能!

grep -i  	# 忽略大小写的不同,所以大小写视为相同

在这里插入图片描述

最终的结果看,-i 确实可以忽略大小写的不同,只要是包含 printf 这几个字母的行文本,都被过滤显示了出来!!


3、xargs 指令

虽然说这个指令可能不是很常见,但是我们还是有必要了解一下它是干什么的!!

首先,xargs,它是参数的意思

然后,我们先来看看 echo 的一些操作

echo ”-l -a -i“ 	//那么-l -a -i 就会显示在屏幕上
echo “-l -a -i“ | wc -l		//就会统计管道文件中数据的行数

我们都知道 ls 这个命令,有很多的选项。
那假如我此刻我想要 把 echo ”-l -a -i“ 输出的内容,通过管道,交给 ls,我应该怎么操作呢?

在这里插入图片描述
我们可以看到,如果直接就将其交给管道,是行不通的,它并没有把 -l -a -i 等选项带给 ls,ls 以默认的方式执行了。

这又是为什么呢???

echo ”-l -a -i“ 输出的内容,交给管道,再给到 ls 的话,那么也相当于,ls 需要从管道当中读取 " -l -a -i " 这些数据,可是 ls 它会不会读取呢?? —— 它不会!!

但是 ls 它有命令行参数呀!!那我就猜测,能不能把 ehco 通过管道传递给 ls 的数据 转化为 命令行参数,交给 ls,这样,ls不就可以相当于 带上了 -l -a -i 这些选项了吗???

等等!我们刚刚不是才说了,xargs,它是参数的意思的吗???

于是,我就想着,那我能不能给它带上,然后 ls 就可以 将 ehco 传递给管道的数据进而转化为 自己的命令行参数,以此达到 ls -l -a -i 的效果呢???

echo "-l -a -i" | xargs ls

在这里插入图片描述
很好!!我非常满意,实操结果,跟我们的预期一模一样,xargs 它就是这么用的!!

所以我们回头看, xargs是干嘛用的呢!! ==》
目前的层次,我们可以简单理解为,xargs 就是将管道输出的数据 转化为 命令行参数,然后再带给后面某个程序去使用!!!

最后,可能有人要疑惑啦!说,通过你刚刚将的案例,那是不是只能是 通过 echo 将数据传递给管道,然后才能使用 xargs这样的工具吗???
==》
答案:肯定不是的!不管是通过什么传递给管道的数据,都可以使用!!

在这里插入图片描述
就像上边的,我用echo 将数据 输出重定向到了一个文件当中,然后我再通过 cat,将 tmp 文件中的数据输出到管道中,最后再由 xargs 将管道的输出数据 转化为命令行参数带给 ls,也是一样的效果的!!

而这一组案例中,我可不是通过 echo 将数据输出给管道的!!

OK,grep 这条指令,我们就讲到这里!!


结语:

OK,本章的基本指令就讲到这。如果能给你带来一定的帮助,或者是收获,我很开心。
同时,觉得对你有帮助的伙伴们,也可以 点赞👍 + 收藏⭐️ + 关注➕ 支持一下!
感谢各位观看!!

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

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

相关文章

Python爬虫-某网酒店评论数据

前言 本文是该专栏的第6篇,后面会持续分享python爬虫案例干货,记得关注。 本文以某网的酒店数据为例,采集对应酒店的评论数据。具体思路和方法跟着笔者直接往下看正文详细内容。(附带完整代码) 注意:本文的案例“数据集”,选用的是本专栏上一篇“Python爬虫-某网酒店数…

【JAVA-Day19】深入探讨 Java 泛型和枚举的精髓

深入探讨 Java 泛型和枚举的精髓 深入探讨 Java 泛型和枚举的精髓摘要引言一、Java 泛型二、Java 枚举三、泛型和枚举的区别和使用场景区别泛型和枚举的使用场景泛型的使用场景枚举的使用场景 四、总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&am…

后端中间件安装与启动(Redis、Nginx、Nacos、Kafka)

后端中间件安装与启动 RedisNginxNacosKafka Redis 1.打开cmd终端,进入redis文件目录 2.输入redis-server.exe redis.windows.conf即可启动,不能关闭cmd窗口 (端口配置方式:redis目录下的redis.windows.conf配置文件,…

线程池(重点)

1.线程池的三大方法 package com.kuang.pool;import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; //Executors工具类 三大方法 //使用线程池,创建线程 public class Demo01 {public static void main(String[] args) { // …

RHCSA_Linux 从命令行管理文件

目录 一、文件命令规范: 二、创建链接文件 1、创建软链接文件 2、创建硬链接文件 三、目录操作命令 1、创建目录 -- mkdir 2、统计目录及文件的空间占用情况 -- du 3、删除目录文件 四、创建、删除普通文件 1、创建普通文件 2、删除普通文件 五、数据流和…

春秋云镜 CVE-2010-1870/CVE-2013-1965

春秋云镜 CVE-2010-1870 S2-005 远程代码执行漏洞 靶标介绍 struts2将http的每个参数名解析为OGNL语句执行(可理解为java代码)。OGNL表达式通过#来访问struts的对象,struts框架通过过滤#字符防止安全问题,然而通过unicode编码(u0023)或8漏洞(43)即绕过…

【项目经验】:elementui多选表格默认选中

一.需求 在页面刚打开就默认选中指定项。 二.方法Table Methods toggleRowSelection用于多选表格,切换某一行的选中状态,如果使用了第二个参数,则是设置这一行选中与否(selected 为 true 则选中)row, selected 详细…

Docker部署单点Elasticsearch与Kibana

一 、 创建网络 因为需要部署kibana容器,因此需要让es和kibana容器互联。这里创建一个网络: docker network create es-net # 创建一个网络名称为:es-net 二 、拉取并加载镜像 方式一 docker pull elasticsearch:7.12.1 版本为elasticsearch的7…

线性代数基础-矩阵

八、矩阵的基础概念 1.矩阵 我们忘掉之前行列式的一切,列一种全新的数表,虽然长得很像,但是大不相同,首先一个区别就是矩阵不能展开成一个值,这里不讨论矩阵的空间意义 { a 11 x 1 a 12 x 2 a 13 x 3 . . . a 1…

CH573-09-BLE蓝牙安卓应用二次开发——RISC-V内核BLE MCU快速开发教程

一、基础工程搭建 在上一章最后一讲的BLE蓝牙例程中,我们使用了沁恒官方的BLE调试助手完成数据发送,接下来我们使用Android Studio完成一款简易的BLE调试助手。 1、参考文章 我这里参考了CSDN中的一位博主“摸爬滚打的程序媛”的文章以及对应文章中的…

2023最新玩客云刷机armbian,部署docker并配置各种常用容器镜像

#以下安装从基于 rootonecloud:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy刷机开始 (以下刷机教程部分资料来源于:玩客云刷ARMBIAN系统…

linux查看进程对应的线程(数)

首先,top或ps查看进程列表,确定要查看的进程pid,如下面40698 查看进程的线程情况 查看进程:top -p 40698 查看线程:top -p 40698 -d 3 -H 其中-d是刷新频率 可看到此进程共211个线程,运行中的是211个。…

C++基础-类和对象(下)

文章目录 前言一、构造深入1.初始化列表2.隐式类型转换1.隐式类型转换2.explicit 3.委托构造 二、类的静态成员1.静态成员声明2.静态成员定义3.静态成员特性 三、重载运算符和类型转化1.关系及算数运算符重载2.递增递减运算符重载及如何区分3.赋值运算符重载4.重载输入输出运算…

【基础篇】五、基于SpringBoot来整合SSM的案例(上)

文章目录 0、创建模块1、实体类的快速开发Lombok2、数据层开发(CRUD)3、分页4、条件查询5、业务层的标准开发6、业务层的快速开发(基于MyBatisPlus)7、表现层开发 接下来在SpringBoot下,把Spring、SpringMVC、MyBatis整…

项目进度管理(3-3)PERT计划评审技术详解

1 计划评审技术起源 PERT(Program Evaluation and Review Technique,项目评估和审查技术)的起源可以追溯到20世纪50年代,与美国国防部和美国海军的项目管理有关。 PERT的发展始于20世纪50年代初,当时美国国防部正面临…

ConfigMaps-2

文章目录 主要内容一.Volume 挂载 ConfigMap1.创建一个Pod,起挂载的内容,将来自下面的configmap:代码如下(示例): 2.解释 二.环境变量 ConfigMap1.创建一个名为 mysqlpass 且包含 passwordABCabc123 的 configmap&…

第一、二题见贴图第三题 实现求1-100之间的质数?

print("模式A") while True: for i in range (1,7): for j in range(1, 7): if j < i: print(j,end"\t") print() break print() print("模式B") while True: for i in range (6,…

【测开】Java快转Python 学习路径记录

写在前面 工作后需要用python&#xff0c;记录下学习的一些资料和总结&#xff0c;仅供参考&#xff0c;希望对你有帮助。 2023/9/8 (碎碎念&#xff1a;我太懂工作要用时自己却不会的感觉了…心好累&#xff0c;问大家怎么学就说这简单…md记录一下&#xff09; Part.1 对比 …

基于Java汽车服务商城系统 设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

知识图谱(3)关系抽取

信息抽取旨在从大规模非结构化或半结构化的自然语言文本中抽取结构化信息。关系抽取是其中的重要子任务&#xff0c;主要目的是从文本中识别实体并抽取实体之间的语义关系。 比如有下面的文本&#xff1a; International Business Machines Corporation (IBM or the company) …