Linux学习-day10

grep

对文件(非文件夹)进行过滤查找关键字

grep  hello  /opt/hello.txt   #基本格式,注意区分大小写
grep -n 'root'  /etc/passwd   #-n参数,显示存在该关键字的行及对应行号
grep -i 'root' /etc/passwd    #-i参数,忽略大小写
grep -n -i 'apple' t1.txt t2.txt #-i与-n合并使用

[root@localhost opt]# grep -n -i 'listen'  /etc/nginx/nginx.conf #利用grep找出nginx软件配置文件中,定义的网站监听端口号
39:        listen       80;

管道符

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

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

管道符,在linux中的表达符号是 
|     (快捷键shift + \)

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

/etc/passwd 是系统的用户信息存放文件
在这个文件中,是用户通过命令创建的用户,id号是从1000开始的

关于查找用户是否存在的命令--方法1
# grep 'user1' /etc/passwd
[root@localhost opt]# # 如何查看linux是否存在某用户,如user1
[root@localhost opt]# id user1 #user1用户不存在
id: user1: no such user
[root@localhost opt]# useradd user1 #添加user1用户
[root@localhost opt]# id user1 
uid=1001(user1) gid=1001(user1) groups=1001(user1)
[root@localhost opt]# grep 'user1'  /etc/passwd
user1:x:1001:1001::/home/user1:/bin/bash

关于查找用户是否存在的命令--方法2
命令1  | 命令2 
命令1,拿到用户文件信息   |  交给grep再去过滤

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

管道符常见用法

查看系统进程信息的命令
ps  -ef  #-e显示所有的进程信息;-f格式化显示出进程的id号,等其他信息

检查端口

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

2. 过滤出,机器上,和ssh远程连接的端口信息,提示程序名叫ssdh,或者端口号是22
结合查看端口的命令+ 管道符+ grep,实现,高效的过滤
netstat -tunlp   | grep  'nginx'

统计文件数量

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

统计系统用户数量

cat /etc/passwd |  wc -l

管道符结合find命令

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

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

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

find -name '*.txt' | xargs -i grep -l 'apple' {}  #find找出txt文件,grep出文件有哪些apple,-l列出文件信息名称


xargs

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

	命令1 | xargs 选项

选项

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

xargs实现批量备份

[root@bogon ~]# touch {1..10}.log
[root@bogon ~]# ll
total 20
-rw-r--r--. 1 root root    0 Jun 11 20:36 10.log
-rw-r--r--. 1 root root    0 Jun 11 20:36 1.log
-rw-r--r--. 1 root root    0 Jun 11 20:36 2.log
....
-rw-r--r--. 1 root root    0 Jun 11 20:36 8.log
-rw-r--r--. 1 root root    0 Jun 11 20:36 9.log
[root@bogon ~]# find -name '*.log' | xargs -i cp {} {}.bak
[root@bogon ~]# ll
total 20
-rw-r--r--. 1 root root    0 Jun 11 20:36 10.log
-rw-r--r--. 1 root root    0 Jun 11 20:38 10.log.bak
-rw-r--r--. 1 root root    0 Jun 11 20:36 1.log
-rw-r--r--. 1 root root    0 Jun 11 20:38 1.log.bak
-rw-r--r--. 1 root root    0 Jun 11 20:36 2.log
-rw-r--r--. 1 root root    0 Jun 11 20:38 2.log.bak
....
-rw-r--r--. 1 root root    0 Jun 11 20:36 9.log
-rw-r--r--. 1 root root    0 Jun 11 20:38 9.log.bak

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

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

批量重命名

[root@bogon ~]# touch {1..20}.txt
[root@bogon ~]# ll
total 8
-rw-r--r--. 1 root root    0 Jun 11 20:44 10.txt
-rw-r--r--. 1 root root    0 Jun 11 20:44 11.txt
-rw-r--r--. 1 root root    0 Jun 11 20:44 12.txt
-rw-r--r--. 1 root root    0 Jun 11 20:44 13.txt
-rw-r--r--. 1 root root    0 Jun 11 20:44 14.txt
....
-rw-r--r--. 1 root root    0 Jun 11 20:44 8.txt
-rw-r--r--. 1 root root    0 Jun 11 20:44 9.txt
[root@bogon ~]# ls | xargs -i rename .txt .log {}
[root@bogon ~]# ll
total 8
-rw-r--r--. 1 root root    0 Jun 11 20:44 10.log
-rw-r--r--. 1 root root    0 Jun 11 20:44 11.log
-rw-r--r--. 1 root root    0 Jun 11 20:44 12.log
-rw-r--r--. 1 root root    0 Jun 11 20:44 13.log
....
-rw-r--r--. 1 root root    0 Jun 11 20:44 6.log
-rw-r--r--. 1 root root    0 Jun 11 20:44 7.log
-rw-r--r--. 1 root root    0 Jun 11 20:44 8.log
-rw-r--r--. 1 root root    0 Jun 11 20:44 9.log

补充知识

文件句柄

[root@localhost ~]# ps -ef | grep vim  #正常查看vim编辑器
root      17622   1575  0 21:08 pts/0    00:00:00 grep --color=auto vim
[root@localhost ~]# ps -ef | grep vim  #当有用户正在用vim编辑时,会留下文件句柄,即多出多这一条,只有编辑完成,退出后文件句柄被释放,多出的一条才会消失
root      17679  17637  1 21:09 pts/1    00:00:00 vim chunxiao.txt
root      17681   1575  0 21:09 pts/0    00:00:00 grep --color=auto vim

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

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

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

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

目前,最主流的,全世界通用的是UTF-8编码表
中文是3个字节;英文是1个字节

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

[root@localhost html]# vim index.html
<meta charset="utf-8" />   #这行的作用就是指定UTF-8编码方式,不加的话显示的网页就是乱码形式的
欢迎来到这个世界

find命令补充

find / -type f -name '*.tar' -o -name '*.tgz' -o -name '*.zip' -o -name '*.tar.gz'  #或者,查找多个文件
find / -size +5M -name '*.tar'  #查找目录下大于5M的压缩包;-代表小于,不加代表等于

-exec和上午xargs是一个意思,找到资料后的动作处理
-ok也是一样,只不过多了一个确认的过程
posted on 2024-06-16 09:11  day_day_u_p  阅读(21)  评论(0)    收藏  举报