正则表达式
配置ip
临时:
Ifconfig eth0 1p/24
route add default gw 网关地址
/etc/resovl.conf------ànameserver dns的ip地址
/etc/hosts #本地解析-------》ip地址 域名
Hostnamectl set-hostname 主机名
永久:
/etc/sysconfig/network-scripts/ifcfg-网卡名
Onboot=yes
Bootproto=static
Ipaddr=ip地址
Netmark=255.255.255.0
Gateway=网关地址
DNS1=DNS的ip地址
DNS2=DNS的ip地址
Systemctl restart netmark
公钥:公共的密钥,所以要发出去
正则表达式
grep是 文本操作符
正则表达式是用来从文本中提取对你有用的信息
[root@bogon ~]# /etc/profile
[root@bogon ~]# /etc/bashrc
[root@bogon ~]# /root/.bash_profile
[root@bogon ~]# /root/.bashrc
如果直接在[root@bogon ~]上写python,就是自带的,如果系统启动就能调用python3.6,就要在
vim /etc/profile下面加上:
PATH=/usr/local/python3.5.1/bin:$PATH
export PATH
我们现在登录的终端的shell,就是一个bash
由于老师在下面文件的前面加上echo ‘文件名’,所以加载什么文件都会显示
我们在正常的登录下,会加载/ect/profile,但是如果输入bash后,却不加载这个文件,但会加载
Bashrc写入固化的语句,就不受是否用bash登录影响了。
grep
-n :显示行号
-o :只显示匹配的内容
-q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容
-l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc
-A :如果匹配成功,则将匹配行及其后n行一起打印出来
-B :如果匹配成功,则将匹配行及其前n行一起打印出来
-C :如果匹配成功,则将匹配行及其前后n行一起打印出来
--color
-c :如果匹配成功,则将匹配到的行数打印出来
-E :等于egrep,扩展
-i :忽略大小写
-v :取反,不匹配
-w:匹配单词
[root@bogon ~]# cat /etc/passwd | grep "root"
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]#
增加-n
[root@bogon ~]# grep -n 'root' /etc/passwd
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]# grep -o 'root' /etc/passwd
root
root
root
root
-q不输出结果
[root@bogon ~]# grep -q 'root' /etc/passwd
[root@bogon ~]# echo $?
0
-l是文件名
[root@bogon ~]# grep -l 'root' /etc/passwd
/etc/passwd
[root@bogon ~]#
显示带root的下面两行(报错时,查error时有用)
[root@bogon ~]# grep -A 2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
显示带root的前面两行(报错时,查error时有用)
[root@bogon ~]# grep -B 2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
--
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]#
-C就是上下两行
[root@bogon ~]# grep -C 2 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
[root@bogon ~]#
-c是count的意思,数行数
[root@bogon ~]# grep -c 'root' /etc/passwd
2
-i忽略大小写
[root@bogon ~]# cat 111.txt
hello
Hello
HELLO
123
1123
[root@bogon ~]# grep -i 'hello' 111.txt
hello
Hello
HELLO
[root@bogon ~]# grep 'hello' 111.txt
Hello
取不包含hello的
[root@bogon ~]# grep -iv 'hello' 111.txt
123
1123
只要root单词,用-w
[root@bogon ~]# cat 111.txt
hello
Hello
HELLO
123
1123
root123
root 123
root_123
root
[root@bogon ~]# grep -w 'root' 111.txt
root 123
root
带^root是指以root开头,nologin$是指nologin结尾
[root@bogon ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@bogon ~]# grep 'nologin$' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
b与n中间隔着一个字符,任意一个字符
[root@bogon ~]# grep '^b.n' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
[root@bogon ~]#
*代表左边那个字符出现0个或1个以上,之后可以任意字符
[root@bogon ~]# cat a.txt
a
ab
abb
abbb
abc
abcd
acd
cd
[root@bogon ~]# grep 'ab*' a.txt
a
ab
abb
abbb
abc
abcd
acd
+ 号代表以左边开头的全部字符,不能用grep,要用egrep或grep -E
egrep包含了grep的所有功能,所以不知道写哪个就写egrep
[root@bogon ~]# egrep 'ab+' a.txt
ab
abb
abbb
abc
abcd
[root@bogon ~]# egrep 'ab{2}' a.txt
abb
abbb
[root@bogon ~]#
只要abb,就要用$结尾了
[root@bogon ~]# egrep 'ab{2}$' a.txt
abb
[root@bogon ~]#
2-4个B
[root@bogon ~]# egrep 'ab{2,4}' a.txt
abb
abbb
大于等于2个B
[root@bogon ~]# egrep 'ab{2,}' a.txt
abb
abbb
[root@bogon ~]# egrep 'ab?' a.txt
a
ab
abb
abbb
abc
abcd
acd
解释egrep的命令
[root@bogon ~]# man egrep
只取中括号里面的一个
[root@bogon ~]# egrep 'r[abc123\-\/]t' a.txt
r1t
r2t
rat
\-必须要在结尾,否则匹配不到带-的
[root@bogon ~]# egrep 'r[abc123\-\/]t' a.txt
r1t
r2t
rat
r/t
[root@bogon ~]# egrep 'r[abc123\/\-]t' a.txt
r1t
r2t
rat
r-t
r/t
[root@bogon ~]#
点是任意一个的意思
[root@bogon ~]# egrep 'r.t' a.txt
rot
r1t
r2t
rat
r-t
r/t
?是一个或多个
[root@bogon ~]# egrep 'r?t' a.txt
root
rot
roooot
r1t
r2t
rat
raat
r-t
r/t
[root@bogon ~]#
[a-z]内只匹配小a到小z
[root@bogon ~]# egrep 'r[a-z]t' a.txt
rot
rat
[root@bogon ~]# egrep 'r[a-zA-Z]t' a.txt
rot
rat
[root@bogon ~]# egrep 'r[a-Z]t' a.txt
rot
rat
[root@bogon ~]#
中间可以有很多在数字
[root@bogon ~]# egrep 'r[0-9]+t' a.txt
r1t
r2t
r23456789t
[root@bogon ~]#
中间有两个数字的:
[root@bogon ~]# egrep 'r[0-9]{2}t' a.txt
r99t
[root@bogon ~]#
^以什么开头
[root@bogon ~]# egrep '^r' a.txt
root
rot
roooot
r1t
r2t
rat
raat
r-t
r/t
r23456789t
r99t
[root@bogon ~]#
[root@bogon ~]# egrep '^[0-9]' a.txt
[^0-9]当^在中括号内就取反
[root@bogon ~]# egrep '^[^0-9]' a.txt
a
ab
abb
abbb
abc
abcd
acd
cd
abbbbbbbb
root
rot
roooot
r1t
r2t
rat
raat
r-t
r/t
r23456789t
r99t
[root@bogon ~]#
包含abb或abc的命令:
[root@bogon ~]# egrep 'ab(b|c)' a.txt
abb
abbb
abc
abcd
abbbbbbbb
[root@bogon ~]#
这样也行
[root@bogon ~]# egrep -e 'abc' -e 'abb' a.txt
abb
abbb
abc
abcd
abbbbbbbb
[root@bogon ~]#
通配符与正则表达式
通配符:提高操作效率
touch {a..c}.txt
正则表达式:
^行首
$行尾
*前面字符的0个或多个
.单个字符
上图中x\{m,\}中,\是为了解释{,只是在grep才需要,在egrep是不需要\的
[root@bogon ~]# egrep 'ab{1}' a.txt
ab
abb
abbb
abc
abcd
abbbbbbbb
[root@bogon ~]# egrep 'ab{1,3}' a.txt
ab
abb
abbb
abc
abcd
abbbbbbbb
[root@bogon ~]# egrep 'ab{1,}' a.txt
ab
abb
abbb
abc
abcd
abbbbbbbb
[root@bogon ~]#
sed流编辑器,是以行为单位的处理程序(定指或命令)
[root@bogon ~]# head -10 /etc/passwd > b.txt
[root@bogon ~]# cat b.txt
输出b.txt所有记录
[root@bogon ~]# sed '' b.txt
不打印输出结果用-n(静默模式)
[root@bogon ~]# sed -n '' b.txt
可以指定多个规则,跟egrep一样
[root@bogon ~]# sed -e '' b.txt
-i如果'' 内没有内容的话,就是打印出来,否则就会直接修改文件
[root@bogon ~]# sed -i c b.txt
删除第3行,打印出来,不是真的删除了,文件本身没修改
[root@bogon ~]# sed '3d' b.txt
第3行打印一次,然后继续输出第4行等
[root@bogon ~]# sed '3p' b.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
只打印第3行 p=print
[root@bogon ~]# sed -n '3p' b.txt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@bogon ~]#
第3行改为111,打印出来(文件没有真的修改)c=change
[root@bogon ~]# sed '3c 111' b.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
111
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]#
3a就是追加的意思,在第3行后追加一行
[root@bogon ~]# sed '3a 111' b.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
111
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@bogon ~]#