文章目录
- 一. 防火墙相关
- 二. vi命令
- 三. grep命令
- grep与正则表达式
- 四. awk命令
- 五. sed命令
- 六. 字符串截取
- 七. scp命令
一. 防火墙相关
- 查看防火墙状态
firewall-cmd --state - 停止防火墙
systemctl stop firewalld.service - 启动防火墙
systemctl start firewalld.service - 查看开放的所有端口
firewall-cmd --list-ports - 开启指定端口(以80端口为例)
firewall-cmd --zone=public --add-port=80/tcp --permanent(注意需要重启防火墙) - 关闭指定端口
firewall-cmd --zone=public --remove-port=2181/tcp --permanent - 指定ip放通端口。本服务器上,指定192.xxx.xx.xx放通12341端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.xxx.xx.xx" port protocol="tcp" port="12341" accept"
- 重启防火墙命令
systemctl restart firewalld.service
二. vi命令
- 显示行号
:set number
- 删除一行
dd
- 格式化json文件
:%!python3 -m json.tool
三. grep命令
grep是linux中用于处理文件的工具之一。grep搜索输入文件,查找与正则表达式匹配的行,并将每个匹配的行标准输出。
[root@www ~]# grep [-acinv] [--color=auto] '搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,即显示出没有 '搜寻字符串' 内容的那一行!
-r :递归查找。
-l : 列出文件内容符合指定的样式的文件名称。
-L : 列出文件内容不符合指定的样式的文件名称
--color=auto :可以将找到的关键词部分加上颜色的显示
简单举例:
(1)将/etc/passwd中没有出现root的行取出来
# grep -v root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
(2)将/etc/passwd中没有出现root和nologin的行取出来
# grep -v root /etc/passwd | grep -v nologin
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
(3)根据文件内容递归查找目录
# grep ‘energywise’ * #在当前目录搜索带'energywise'行的文件
# grep -r ‘energywise’ * #在当前目录及其子目录下搜索'energywise'行的文件
# grep -l -r ‘energywise’ * #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件
grep与正则表达式
- [] 里面不论有几个字节,都谨代表某『一个』
- 行首与行尾字节 ^ $
- 任意一个字节 . 与重复字节 *
- { }限定字符范围
. (小数点):代表『一定有一个任意字节』的意思;
* (星号):代表『重复前一个字符, 0 到无穷多次』的意思,为组合形态
举例:
(1)找出 g??d 的字串,亦即共有四个字节, 起头是 g 而结束是 d
[root@www ~]# grep -n 'g..d' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
9:Oh! The soup taste good.
16:The world <Happy> is the same with "glad".
(2)列出有 oo, ooo, oooo 等等的数据,也就是说,至少要有两个(含) o 以上
[root@www ~]# grep -n 'ooo*' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.
18:google is the best tools for search keyword.
19:goooooogle yes!
(3)找出 g 开头与 g 结尾的行,当中的字符可有可无
[root@www ~]# grep -n 'g.*g' regular_express.txt
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
(4)找出 g 后面接 2 到 5 个 o ,然后再接一个 g 的字串
[root@www ~]# grep -n 'go\{2,5\}g' regular_express.txt
18:google is the best tools for search keyword.
(5)找出 2 个 o 以上的 goooo…g 除了可以是 gooo*g ,也可以是
[root@www ~]# grep -n 'go\{2,\}g' regular_express.txt
18:google is the best tools for search keyword.
19:goooooogle yes!
四. awk命令
awk是一种处理文本文件的语言、是一个强大的文本分析工具
语法
awk [选项参数] 'script' var=value file(s)
或
awk [选项参数] -f scriptfile var=value file(s)
选项参数说明
- -F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:
举例
编辑一个log,txt文件
2 this is a test
3 Do you like awk
This's a test
10 There are orange,apple,mongo
(1)
每行按空格或TAB分割,输出文本中的1、4项
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a test
3 Do you like awk
This's a test
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# awk '{print $1,$4}' log.txt
2 a
3 like
This's
10 orange,apple,mongo
(2)
-F 指定分隔字符分割
使用","分割
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a test,hahaha
3 Do you like awk
This's a test
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# awk -F , '{print $2}' log.txt
hahaha
apple
五. sed命令
sed命令可以对文本文件的内容进行新增、取代、删除、插入等
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数说明
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
动作说明
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦!
实例
(1)
替换
将log.txt文件中的test字符串替换成testUpdate字符串
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a test,hahaha
3 Do you like awk
This's a test
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# sed 's/test/testUpdate/g' log.txt
2 this is a testUpdate,hahaha
3 Do you like awk
This's a testUpdate
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a test,hahaha
3 Do you like awk
This's a test
10 There are orange,apple,mongo
可以使用-i直接对原文件进行修改
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a test,hahaha
3 Do you like awk
This's a test
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# sed -i 's/test/testUpdate/g' log.txt
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a testUpdate,hahaha
3 Do you like awk
This's a testUpdate
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]#
(2)
删除
将log.txt文件中的test字符串的行删除
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
2 this is a testUpdate,hahaha
3 Do you like awk
This's a testUpdate
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# sed -i '/test/d' log.txt
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log.txt
3 Do you like awk
10 There are orange,apple,mongo
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]#
将log.txt文件中第2~5行的内容全部删除
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log2.txt
LINUX!
Linux is a free unix-type opterating system.
This is a linux testfile!
Linux test
Google
Taobao
Runoob
Tesetfile
Wiki
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# sed -i '2,5d' log2.txt
[root@iZ2zedqr9yeos47fg4uor5Z shellscript]# cat log2.txt
LINUX!
Taobao
Runoob
Tesetfile
Wiki
其中-i会将修改写入原文件中
六. 字符串截取
参考网址:http://c.biancheng.net/view/1120.html
- 从指定位置开始截取
(1)从左边开始计数
${string: start :length}
其中,string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)
url="c.biancheng.net"
echo ${url: 2: 9}
结果为 biancheng
(2)从右边开始计数
${string: 0-start :length}
同第 1) 种格式相比,第 2) 种格式仅仅多了0-,这是固定的写法,专门用来表示从字符串右边开始计数
url="c.biancheng.net"
echo ${url: 0-13: 9}
结果为 biancheng。从右边数,b是第 13 个字符
- 从指定字符串开始截取
(1)使用 # 号截取右边字符
${string#*chars}
url="http://c.biancheng.net/index.html"
echo ${url#*:}
结果为//c.biancheng.net/index.html
(2)使用 % 截取左边字符
${string%chars*}
七. scp命令
- 功能:主要实现跨服务器的文件传输
- scp协议使用的默认端口号:22
- SCP协议常用端口号修改方法
1、备份原sshd_config文件
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
2、修改sshd_config文件,添加或修改如下行
Port 2222
3、重启sshd服务,使配置生效
service sshd restart
上述方法中,将SCP端口号修改为2222,可以按需进行修改。
- 本机复制文件到远程服务器
scp -P 端口号 -r 本地文件地址 用户名@地址:文件上传地址
将本地主机的/tmp目录下的test1文件拷贝到远程主机的/tmp目录下
scp /tmp/test1 root@host1:/tmp
传”-r”,把本地主机的/tmp目录上传到远程主机host1的/tmp目录下
scp -r /tmp root@hotst1:/tmp
- 远程服务器文件复制到本机
scp -P 端口号 -r 用户名@地址:文件地址 本地地址
从远程主机host1中的/tmp/目录下拷贝test1 文件到本地主机的/tmp目录
scp root@host1:/tmp/test1 /tmp
传”-r”,把host1主机下的tmp目录拷贝到本地主机的/tmp目录下
scp -r root@host1:/tmp /tmp