首页 > 其他分享 >day10_管道符与grep与find

day10_管道符与grep与find

时间:2024-02-13 19:11:07浏览次数:34  
标签:opt 文件 grep day10 txt root find localhost

关于代码文件和图片文件的存放

务必搞清楚,绝对路径和相对路径

image-20220310091545643

关于linux命令执行的结果,以及后续处理

image-20220310092020284

关于文件打开的底层流程(文件句柄的概念)

image-20220310093220818

tail -f用法

1.要求被检测的文件,存在

2.可以tail -f检测


关于html乱码以及UTF-8编码表的概念

image-20220310094915142

字节和字符挂钩的

简单记忆

1.查看你机器的字符集(编码表)是什么,是linux的LANG变量(字符集作用可以修改linux的中英文提示)

echo $LANG

[root@yuanlai-0224 ~]# echo $LANG
en_US.UTF-8   # en_US 表示英文  UTF-8 表示全世界通用的一个支持N多个国家语言的编码表(一个网站)

全世界有N多种语言,N多种网站,那么这些不同语言,如何再计算机中表示,以及用容量单位表示。

需要记住的是

目前,最主流的,全世界通用的是UTF-8编码表

以及

中文是3个字节

英文是1个字节

比如,实际应用场景

1.你必须在你的网页文件中,指定是UTF-8编码,你的html文件里的中文汉字,才能够正确的在网络中传输(bit容,比如你发一个图片是2M的概念) (汉字,使用utf-8编码成容量单位后,才可以进行传输)



image-20220310101133767

wc统计字符(字节)

在linux的UTF-8编码表下,如下记忆

[root@localhost ~]# echo $LANG
en_US.UTF-8

  • 在UTF-8这个编码表下

  • 中文是3个字节(bytes)

  • 英文是1个字节(1个英文字母等于1bytes)

实践

[root@localhost ~]# echo "haohappy"  |  wc -c # -c是统计,数一数有几个字节(bytes)
9


[root@localhost ~]# echo "王力宏" |wc -c
10

关于find找文件的类型

image-20220310102107393

---image-20220310102157483

find -o参数,找出多种类型的文件

image-20220310102801591

\关于find的-size参数

image-20220310103132156

今日笔记

grep

grep是对数据进行过滤查找关键字

源数据可以是

  • 文件内容 grep hello /opt/hello.txt,找出存在hello的那一行
  • 命令的执行结果 ,这个需要结合管道符使用,cat /etc/passwd | grep 'root'
测试数据

I teach linux.

I like python.

My qq is 877348180.

My name is chaoge.

Our school website is http://yuchaoit.cn。

Where is my girl friend.

Who is your boy friend.
My phone number is 15233334444.

1.找出存在My字符的行

linux是区分大小写的,注意

-n 参数,显示存在该关键字的行号

grep -n 'root' /etc/passwd

-i grep忽略大小写

grep -i 'root' /etc/passwd ,无论大小写,找出/etc/passwd文件中,包含的root信息

grep '关键字'  文件名


[root@localhost opt]# grep 'My' testgrep.txt 
My qq is 877348180.
My name is chaoge.
My phone number is 15233334444.
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# 



[root@localhost opt]# grep -n  'My' testgrep.txt 
5:My qq is 877348180.
7:My name is chaoge.
14:My phone number is 15233334444.

找出小写的my的行

[root@localhost opt]# grep -n  'my' testgrep.txt 
11:Where is my girl friend.
[root@localhost opt]# 

比如,搜索系统的一些日志文件,找出关于root相关的信息

[root@localhost opt]# grep -n  'root'  /var/log/messages 

[root@localhost opt]# grep -n  'root'  /var/log/secure

grep不仅能从文件里搜索关键字,只要是文本数据,就可以进行搜索过滤

grep作用是,从文件中(而非文件夹)匹配出存在该关键字的那一行信息。

[root@localhost opt]# grep 'apple' ./*
./t1.txt:apple1
./t2.txt:apple2
./t3.txt:apple3
grep: ./北京: Is a directory


[root@localhost opt]# grep 'aoligei'  古诗2.txt 
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# grep 'aoligei'  t1.txt 
aoligei
[root@localhost opt]# 
[root@localhost opt]# grep -n  'aoligei'  t1.txt 
7:aoligei

greo的忽略大小写参数 -i 结合-n显示行号

[root@localhost opt]# grep -n -i 'apple' t1.txt t2.txt t3.txt   
t1.txt:1:apple1
t1.txt:2:apple1
t1.txt:3:apple1
t1.txt:4:apple1
t1.txt:8:Apple1
t1.txt:9:apple1
t1.txt:10:Apple1
t2.txt:1:apple2
t3.txt:1:apple3



利用grep找出nginx软件,配置文件中,定义的网站监听端口号

[root@localhost opt]# grep -n -i 'listen'  /etc/nginx/nginx.conf
39:        listen       80;

管道符

管道符,和grep结合的是最多的

管道符,在linux中的表达符号是 

|     (快捷键shift + \)



管道符得标准定义

管道是一种通信机制,通常用于进程间的通信。

它表现出来的形式将==前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)==。

image-20220310105056770

利用grep和管道符,来查看系统用户信息

1.找出chaoge用户的信息
/etc/passwd 是系统的用户信息存放文件
在这个文件中,是用户通过命令创建的用户,id号是从1000开始的,比如
useradd yejinyang01
添加完之后,就会在这个文件中生成一行信息


关于查找用户是否存在的命令
# grep 'yejingyang' /etc/passwd
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# # 如何查看linux是否存在某用户,如yejingyang
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# id yejingyang
id: yejingyang: no such user

通过grep找到用户,表示该用户存在
[root@localhost opt]# id yejinyang
uid=1001(yejinyang) gid=1001(yejinyang) groups=1001(yejinyang)
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# 
[root@localhost opt]# grep 'yejinyang'  /etc/passwd
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash


管道符

命令1  | 命令2 

命令1,拿到用户文件信息   |  交给grep再去过滤

[root@localhost opt]# cat /etc/passwd |  grep 'yejinyang'
yejinyang:x:1001:1001::/home/yejinyang:/bin/bash
[root@localhost opt]# 
[root@localhost opt]# grep 'yejinyang' /etc/passwd


管道符常见用法

检查进程

1.查看系统进程信息的命令

ps  -ef  # -e 显示所有的进程信息  -f 格式化显示出进程的id号,等其他信息

2.上述命令,找到了一堆进程,如何过滤出我们要的信息呢?

学习如何,正确使用 grep 和管道符,去过滤机器上某个进程,判断某个进程是否存在

1.找出vim的进程

2.找出nginx的进程

image-20220310112801881


image-20220310112912086


image-20220310113141656


image-20220310113259065

检查端口

1.需要学习,检查系统端口的命令,这个命令,和ps -ef  一样,是查看系统某资源信息
netstat -tunlp   # 这个组合参数,是查看系统上,所有的端口信息

2. 过滤出,机器上,和ssh远程连接的端口信息,提示程序名叫ssdh,或者端口号是22

结合查看端口的命令+ 管道符+ grep,实现,高效的过滤

netstat -tunlp   | grep  'nginx'




统计文件数量

# 1.统计系统中/var/log目录下有多少个log文件
1.先找出/var/log下所有的log文件,find是递归搜索,找出所有的log后缀文件,不放过一个
find /var/log -name '*.log' | wc -l

image-20220310114327968

统计系统用户数量

/etc/passwd 

cat /etc/passwd |  wc -l

管道符,结合find命令搜索信息

1.找出系统中所有的txt文件,然后再过滤出,其中包含了apple信息的txt是哪些


1.
find / -name '*.txt'  # 这个命令找出的,每一个txt文件的名字吧,并且就是,一堆,一行一行的文本而已

2.我要判断出,这些文件,哪一个是包含了apple字符串内容的
一个个的去grep这些文件才行!!!



1.解读1

image-20220310114949867

2.解读2

image-20220310115229936

需求

1.找出系统上所有的txt文本

2.判断哪些文件中是包含了apple文本行的

grep -l 显示匹配到数据的的文件名

这道题,需要用到grep+管道符+xargs理解。

xargs

作用是,简单的说 就是把其他命令的给它的数据,传递给它后面的命令作为参数

先抛出需求

image-20220310115629153

语法如下

命令1 | xargs 选项

选项

-i 用 {} 代替传递的数据



xargs实现批量备份

image-20220310120133214

xargs实现批量重命名

image-20220310120737860

全系统中搜索,包含某数据的文件名

[root@localhost tmp]# find /  -type f  -name '*.txt' | xargs  -i grep -l 'xiake' {}
/var/log/nginx/mima.txt

下午补充 find其他用法

image-20220310150415241

标签:opt,文件,grep,day10,txt,root,find,localhost
From: https://www.cnblogs.com/fuminer/p/18014734

相关文章

  • [LeetCode] 2108. Find First Palindromic String in the Array
    Givenanarrayofstringswords,returnthefirstpalindromicstringinthearray.Ifthereisnosuchstring,returnanemptystring"".Astringispalindromicifitreadsthesameforwardandbackward.Example1:Input:words=["abc&quo......
  • grep 中 \W和\w正则匹配的含义
     \w ##匹配文字和数字字符,也就是[A-Za-z0-9],\W ##\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 01、[root@PC1test1]#lsa.txt[root@PC1test1]#cata.txt##测试文本3432dsab45cdf887kkkkjjjjj,,;;;sdffffabc8888dddkk22,kk33kww......
  • D. Find the Different Ones!
    前言拿到题目首先看数据量,n,q都是2e5的数量级,如果是暴力解的话时间复杂度会达到O(m*n)(最差情况m次询问,每次l和r为1和n),很明显会超时。这就意味着我们要在线性的时间内完成查询,即每次询问的查询时间保证在O(1)。题解准备一个数组b存储该连续相同数字串的起始点,然后我们从左向右遍历......
  • D. Find the Different Ones!
    原题链接核心\(p[i]\)代表离\(a[i]\)最近的不同元素code#include<bits/stdc++.h>usingnamespacestd;inta[200005]={0};intp[200005]={0};intmain(){intt;cin>>t;while(t--){intn;cin>>n;for(inti=1......
  • 153. Find Minimum in Rotated Sorted Array
    题目Supposeanarraysortedinascendingorderisrotatedatsomepivotunknowntoyoubeforehand.(i.e., [0,1,2,4,5,6,7] mightbecome [4,5,6,7,0,1,2]).Findtheminelement.Youmayassumenoduplicateexistsinthearray.Example1:Input:[3,4,5,1,2]O......
  • Find The MultipleC++
    这题就是找N的倍数m,M要求是由1和0组成且非0。可以用图来看,从1出发临边是1和0,然后广度遍历,第一个能能整除N的数输出就行。#include<iostream>#include<queue>usingnamespacestd;intmain(){intn=-1;while(cin>>n){if(n==0)break;longlon......
  • fatal: couldn't find remote ref master 问题解决!
    这个错误信息通常出现在使用Git命令尝试从远程仓库克隆、拉取(pull)或推送(push)时,指定的分支(在这个案例中是master)在远程仓库中不存在。这种情况可能由以下几个原因导致:1.分支名称错误远程仓库中不存在名为master的分支:随着Git和GitHub的更新,master分支被重新命名为main......
  • find命令
    当前目录搜索所有文件,文件内容包含“140.206.111.111”的内容find.-typef-name"*"|xargsgrep"140.206.111.111"列出当前目录及子目录下所有文件和文件夹find.在/home目录下查找以.txt结尾的文件名find/home-name"*.txt"同上,但忽略大小写fin......
  • 比较以下Unity AStar Pathfinding, NavMesh, Recast Navigation 寻路算法的优点与缺点
    一、AStarPathfindingAStarPathfinding是一种基于图搜索的寻路算法,它使用启发式搜索来找到最短路径。AStarPathfinding的优点包括:高效性:AStarPathfinding是一种高效的寻路算法,因为它使用启发式搜索来找到最短路径,可以大大减少搜索空间,从而提高寻路速度。灵活性:AStarPathf......
  • 【渗透工具】一款自动化分析网络安全应急响应工具--FindAll
    简介这款工具的推出将极大地提升蓝队应对网络安全事件的能力,不仅有助于提高响应效率,还能够降低工作复杂性。通过提供全面的信息搜集和高效的威胁分析,我们可以帮助蓝队成员在复杂的网络环境中保持优势,但应急响应是一个十分复杂的工作此工具只能帮助蓝队人员收集部分信息,如有异常发......