首页 > 代码库 > linux下正则表达式
linux下正则表达式
正则表达式
1.用du -sh /* 查看根下所有目录占用的内存是多少
2.lsof -i :22 查看22端口
3.清空文件,cat /dev/null>access_log清空一个文件
4.如果在oldboy/ett目录下在创建一个目录,那么/oldbot/ett的硬链接数是多少,为什么?
2个,因为子目录下的..是父目录的硬链接
5检测一个命令是否是内置命令:type 命令名称
Linux的多用户多任务介绍:
1.用户的身份是用UID(useridentify)和GID(groupidentify)来识别的.
2.超级用户的UID=0,GID=0,再生产环境中一般禁止用root用户直接ssh连接服务器。其他的用户都是虚拟用户,特点是不可以登录
- 0代表超级用户,1-499代表虚拟用户,500-65535代表普通用户
4.服务运行时需要用户角色的,可以不用登陆,因此,工作中我们要运行mysql数据库,可以创建如下用户
group -g 49
useradd -u 49 -s /sbin/nologin -g 49
-s解释器命令改为不需要用户登录,直接可以进入
id mysql
tail -1 /etc/passwd
su - mysql
chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow 添加一个锁
chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow 解锁
linux中有3中类型的时间 stat 文件名
正则表达式
1.正则表达式就是一套处理字符串规则和方法,以行为为单位对字符串进行处理,通过特殊符号辅助,快速的过滤,替换某些字符串。
2.运维中,大量的访问错误日志,如何快速的过滤出我们想要的内容,就需要正则表达式
3.Linux中的正则表达式基于awk/sed/grep的正则表达式
^word:表示是以word开头
word$: 表示以word结尾的
grep “M” oldboy.txt 过滤出文件中的有M的句子
grep -i “M” oldboy.txt 不区分大小写
grep “m$” oldboy.txt 过滤出以m结尾的
4 .表示任意一个字符
grep “bl.og” olboy.txt 匹配出有blog的句子
gerp “bo.g” oldboy.txt匹配出有bog的句子
5 \转义字符,让有着特殊身份意义的字符还原原型
6. grep -n . oldboy.txt 这里的点代表所有,-n是将所有行都加上行号
grep “\.” oldboy.txt 将所有的点都过滤出来
*:重复0个或多个前面一个字符,例如0*;
grep “.*” oldboy 匹配所有
grep “^.*” oldboy.txt 匹配以任意字符开头的
7.[]字符集合的重复特殊字符的符号
grep “b[lo]og” oldboy.txt 匹配以l或者o组成的单位blog或者boog;
8.[^]表示非以什么内容开头的
grep “[^0-9]” oldboy.txt 匹配不包含数字的句子
9.\{n,m\}重复n到m次,前一个重复字符如a\{n,m\}
a\{n,\} 重复至少n次,前一个重复字符;
\{n\}重复n次,前一个字符
grep “64\{2,3\}448” oldboy.txt
扩展正则表达式:ERE
1)+表示重复一个或一个以上前面的字符
grep -E “64+581” oldboy.txt
egrep “64+581” oldboy.txt
2)?表示0个或者1个字符
grep -E “464?581” oldboy.txt
egrep “464?581” oldboy.txt
3)用竖线表示查找多个符合的字符串
egrep “33041|1521” /etc/services
4)找出“用户组”字符串,grep -E “b(lo|oo)g” oldboy.txt 找出blog和boog;
题目:取出eth0的IP地址
第一种办法
ifconfig eth0|grep “inet addr” |awk -F “:” ‘{print $1}’|awk -F “ ” ‘{print $1}’
第二种办法
ifconfig eth0|sed -n “2p” |awk -F “【: 】+”‘{print $1}’
以冒号空格为分隔符,+号代表把多个连续的分隔符变为1个。
第三种方法
ifconfig eth0 |sed -n ’inet addr/p’|sed ‘s#^.*addr:##g’|sed ‘s# Bc.*$##g’
第四种方法
ifconfig eyh0|sed -n ‘s#^.*addr:\(.*\) Bc.*$#\1#gp’
在括号中的内容就是代表了IP,后面的\1取代别的内容
echo “ddd kkk”>b.txt
sed ‘s#\(ddd\) \(kkk\)#\1 \2#g’ b.txt
ifconfig |sed -n ‘^.#addr:\([0-9].*\) Bcast:\([0-9].*\):*$#\|\2#gp’
一个空格都不可以错,要非常精确
如何取得/etiantian的权限?
stat -c %a /etiantian直接把644的权限过滤出来
如果在/oldboy/ett下在创建一个目录test,ett的硬链接数是多少
3个,test下的..代表上一级目录的硬链接
Eth0网卡路径:/etc/sysconfig/network-scripts/ifcfg-eth0
客户端路径:/etc/resolve.conf
一个lamp服务器被植入了广告,网站打开时就会调用这个地址造成恶劣的影响。
思路:遍历所有的目录文件,把以上被植入的内容删掉
模拟cd /root/oldboy 植入内容
find /root/oldboy -type f|xargs sed -i ‘1 i <script language=javascripts src=http://www.mamicode.com/www.baidu.com></script>’
所有的文件和包都被植入了广告
1.和运维人员确认问题
2.制定方案,备份数据,然后批量修改
3.写解决方案,给他们的运维
4.询问结果,并告知写详细查看日志,寻找问题来源
5.提供亡羊补牢的方案(站点目录的解决方案)
把黑客发的内容删除
find /root/oldboy -type f|xargs sed -i ‘1 i /<script language=javascripts src=http://www.mamicode.com/www.baidu.com></script>/d’
不要忘了寻找问题的来源并且修补漏洞,网站的目录权限降低,上传附件的入口没有详细过滤。
echo -n “oldboy”;echo “oldboy”不换行输出
echo -n 123
123[root@~]#
echo -e “oldboy\noldboy” 换行
请给出如下的格式date命令,11-02-26,再给出实现按周输出,如输出周六;
date +%y-%m-%d
date -s 修改时间
date +%w显示周几
要用echo打印出来要用反引号
echo `date +%F` 或者$(date %F)
企业案例打包
1.tar zcvf oldboy.tar.gz ./oldboy
2.tar tf oldboy.tar.gz查看包的内容
3.每天打个包的日期 tar zcvf oldboy-$(date +%F).tar.gz ./oldboy 每天打个包,显示日期
4.保留最近7天的内容 find /log -type f -name “*.log” -mtime +7|xargs rm -f
当用普通用户时,执行ifconfig,提示没有命令什么原因
因为ifconfig是系统命令,可以用全路径执行,可以放在家目录下的.bash_profile下;
linux下正则表达式