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也是一样,只不过多了一个确认的过程
浙公网安备 33010602011771号