Linux
一、测试常用Linux命令
cd:切换目录
cd / # 进入系统根目录 cd . # 进入到当前目录 cd .. # 返回到上层目录 cd /tmp # 进入到指定目录(相对路径) cd ~. # 进入到当前用户的主目录
ls:列出当前目录的所有文件、目录信息
ls -l # 列出目录或文件的详细信息:权限、修改时间等 ls -a # 列出当前目录的全部文件与路径,包括隐藏文件 ls -A # 列出包括.与..的全部文件 ls -h # 列出文件的大小 ls /tmp. # 列出指定目录的内容 ls *.txt. # 列出全部.txt文件
pwd:显示当前目录的路径
whoami:显示当前登陆用户的身份
who:;显示当前系统登陆用户及所登陆的控制台
cp:复制文件或目录
cp -a # 相当于-pdr cp -f # 强制复制,不提示 cp vivi /tmp # 复制 vivi 文件到/tmp 目录下 cp /tmp/vivi /home # 复制/tmp/vivi 文件到/home 目录下 cp /home/vivi /tmp/coco # 复制/home/vivi 到/tmp 目录下并改名为 coco cp -p /tmp/coco /home # 复制/tmp/coco 到/home 目录下并复制文件属性
mv:移动文件或目录
mv -f # 强制移动,不提示 mv coco.txt /test cc.txt
grep:在文件中查找关键词
grep -v # 排除内容 grep -E # 可以同时实现两条命令的使用,当然也要加| grep --color=auto # 对过滤的字符串加颜色 grep -i # 不区分大小写 grep -w # 按单词搜索 grep -B # 除了显示匹配的一行之外,并显示该行之前的 N 行 grep -A # 除了显示匹配的一行之外,并显示该行之后的 N 行 grep -C # 除了显示匹配的一行之外,并显示该行之前后各 N 行 grep -o # 只显示匹配到的内容 grep -n # 显示行号 grep “coco” /etc/test # 在/etc/test 文件中查找关键字“
find:查找文件
find [路径] -name [选项] find test* # 在当前目录下查找以 test 开头的文件 find /etc/test* # 在/etc 目录中查找以 test 开头的文件 find /etc/test* -print # 在/etc 目录中查找以 test 开头的文件,并打印
ps:查看进程
ps -a # 所有与终端相关的进程 ps -x # 所有与终端无关的进程 ps -u # 以用户为中心组织进程状态信息显示 ps -o # 自定义要显示的字段列表,以逗号分隔 ps -ef # 查看进程
kill:结束进程
killall 服务名 #关闭服务的所有进程 kill -9 进程号 #强制关闭指定进程 killall -9 服务名 #强制关闭服务的所有进程
cat:查看文件内容
cat -n # 显示行号 cat -b 只显示非空行的内容(显示行号) cat -E 在每行结束处显示$ cat -s 压缩空行 cat -T 把 tab 键字符显示为^I cat /etc/coco # 查看/etc/coco 文件 cat /etc/coco |more # 分屏查看文件内容 cat /etc/coco |less # 分屏查看文件内容,可上下翻页
tar:打包
# 常见的文件类型为.tar.gz .tar.bz2 .tgz .tar.zip tar -c # 新建打包文件 tar -f:# 这个参数后面要接文件名,建议 -f 单独写一个参数 tar -t:# 查看打包文件 tar -z:# 通过 gzip 的支持进行压缩和解压缩,此时文件名最好为:.tar.gz tar -x:# 解压缩打包文件 tar -xzvf test.tar.gz/unzip test.zip # 解压文件 tar -czvf test.tar.gz test/zip -r test.zip test # 压缩命令 tar -t -f /tmp/etc.tar.gz # 查询
ifconfig:查看 ip 地址
ifconfig # 查看 ip 信息 ifdown eth0 # 禁用网卡 ifup eth0 # 启用网卡 ifconfig eth0 hw ether 00:11:22:33:44:55 # 修改网卡 eth0 的 MAC 地址
ping:检查网络是否连通
ping -c # 指定发送的 ping 包个数 ping -w # 指定 ping 命令超时时长 ping -W # 一次 ping 操作中,等待对方响应的超时时长 ping -s # 指定 ping 包报文大小 ping www.baidu.com # 测试连接“www.baidu.com”
mkdir :创建文件夹
mkdir ITester # 在当前目录下创建 ITester 子目录 mkdir /tmp/ITester_coco # 在指定目录/tmp 下创建 ITester_coco 子目录 mkdir -p coco_2/coco_3 # 在当前目录下创建 2 级目录 coco_2 和其子目录 coco_3 mkdir coco vivi jojo # 在当前目录下创建 3 个目录 coco vivi jojo(以空格分开)
touch:创建空文本文件
touch coco # 在当前目录下创建 coco 文件 touch /tmp/vivi # 在指定目录/tmp 下创建 vivi 文件
rm:删除
rm -rf 文件名 # 删除文件(递归删除,r:递归,f :强制) rm coco_2020 # 删除 coco_2020 文件 rm -f ITester2020 # 直接删除 ITester2020 文件(无需确认) rm -f coco2021 vivi2021 ITester2021 # 同时删除多个文件(无需确认) rm /tmp/coco # 删除指定目录/tmp 下的文件 coco rm co* # 删除以 co 开头的文件 rmdir # 删除空目录 rm -r coco # 递归的方式删除非空目录 coco rm -rf vivi # 直接删除非空目录 vivi(不用确认)
vi:创建文件或编辑
# (i 进入编辑模式,退出编辑按 ESC,q 表示退出;w 表示保存退出;q!表示强制退出;输入:不保存退出 q!,保存退出 wq) vi coco # 编辑 coco 文件 vi /tmp/vivi # 编辑指定目录/tem 下的 vivi 文件 :w # 保存修改 :q # 退出 vi 编辑器 :wq # 保存并退出 :q! # 退出 vi 编辑器,不保存修改
head:查看文件的前几行
head -n 后面接数字,表示查看前几行(也可以不加, 默认查看 文件前 10 行 ) head -5 # 查看前 5 行内容
tail :查看文件的后几行
tail -n # 后面接数字,表示查看几行(也可以不加, 默认查看文件后 10 行 ) tail -5 /etc/passwd # 查看后 5 行内容
less :查看当前文档内容
# 相比 cat,less 可以实现上下翻页等功能 less coco.txt # 查看 coco.txt
more:分页展示
# 不能回退,灵活上不如 less more coco.txt # 分页查看 coco.txt
chmod:更改目录和文件权限值
chmod -R 递归改变目录下所有子目录和文件的权限 chmod 766 coco # 将目录 coco 的权限更改为 4+2+1 4+2 4+2 chmod 777 vivi # 将文件 vivi 的权限更改为 4+2+1 4+2+1 4+2+1
chown:更改文件或目录的属组或属主
三剑客--grep、awk、sed
grep 基于正则表达式查找满足条件的行 数据定位
awk 根据定位到的数据行处理其中的分段 数据切片
sed 根据定位到的数据行修改数据 数据修改
类比sql
grep = select * from table like '%xx'
awk = select field from table
asd = update table set field = new where field = old
grep 数据定位(查找数据)
grep --version 查看grep版本
grep pattern file grep -i pattern file 忽略大小写 grep -v pattern file 不显示匹配的行 grep -o pattern file 把每个匹配的内容用独立的行显示 grep -E pattern file 使用拓展正则表达式 grep -A -B -C pattern file 打印命中数据的上下文 grep pattern -r . 递归搜索 遍历当前目录所有文件 ps aux | grep AliYunDun | grep -v -i update | grep -v grep
pattern 正则表达式
基本表达式(BRK)
^ 开头 $ 结尾
[a-z][0-9] 区间 如果区间开头带有^,表示不能匹配区间内的元素
* 0个或多个
. 表示任意字符
基本正则(BRK)与扩展正则的区别(ERE) -E
? 非贪婪匹配 匹配尽量少的元素
+ 一个或多个
() 分组
{} 范围约束
| 匹配多个表达式的任何一个
ps aux | grep 'AliYunDun$' # 匹配以AliYunDun结尾的单词的所在行 grep '^a..' 1.txt # 匹配 开头不是a的行 grep '[1,2,3]' # 匹配含有1,2,3的行 grep '[1-3]' # 匹配含有数字1-3的行
网络请求
拉取所有帖子
<a title="放眼全球,关注游戏质量变化:腾讯 WeTest 发布《2019 中国移动
游戏质量白皮书》" href="/topics/21963">放眼全球,关注游戏质量变化:
腾讯 WeTest 发布《2019 中国移动游戏质量白皮书》</a>
curl 'https://testerhome.com/' # 返回网页HTML5 # 四种方法查找到上方网页的帖子数量(第一个自写) curl 'https://testerhome.com/' | grep ' <a title.* href.*>*</a>' | grep -v 'img' | wc -l curl 'https://testerhome.com/' | grep '^ *<a title="[^"]*" href="/[^"]*">[^"]*</a>' | wc -l curl 'https://testerhome.com/' | grep '^ *<a title=".*" href="/.*">[^>]*</a>' | wc -l curl 'https://testerhome.com/' | grep -E "title.*href.*(topics|articles).*a>$" | wc -l
awk 语言解析(提取数据)
awk具备完整的编程特性,如执行命令,网络请求等
精通awk,是一个linux工作者的必备技能
awk可以代替grep的一部分工作
语法:
awk 'pattern{action}'
awk 'BEGIN{}END{}' # 开始和结束 awk '/Running/' # 正则匹配 awk '/aa/,/bb/' # 区间选择 awk'$2~/xxx/' # 字段匹配 awk 'NR==2' # 取第二行 awk 'NR>1' # 去掉第一行
字段分割函数:
F 给字段指定分隔符 (这个分隔符是字段本身的元素)
等同于 BEGIN{FS="_"}
OFS 给字段添加分隔符 (这个分隔符是自己输入的)
RS 给单行内容指定分隔符 分割为行 (这个分隔符是字段本身的元素)
ORS 给多行内容添加分隔符 分割、 (这个分隔符是自己输入添加的)
NF 字段数 指定最后一个元素 NF-1 即指定倒数第二个元素
NR 记录数(行数) NR>1 即指定第一行之后的内容
-F 指定分隔符(指定字段本身的某个元素为分隔符)、转义符号 \
echo '123' | awk -F '2' '{print $2}' # 或 echo '123' | awk -F\2 '{print $2}' # 以2为分隔符,打印第二个元素,输出 3 echo '1 2 3' | awk '{print $2}' # 默认以空格/tab为分隔符,打印第二个元素 # 输出 2 echo '1 2 3' | awk '{print $0}' # 打印所有内容 # 输出 1 2 3
OFS 给字段添加分隔符
echo '1 2 3' | awk '{OFS="-"}{print $1,$2,$3}' # 以-为分隔符输出 # 输出 1-2-3
NR 打印第几行之后的内容
awk 'NR>1' 1.txt # 打印第一行之后的内容
NF 打印第几个元素
echo '1 2 3' | awk '{OFS="-"}{print $NF}' # 打印最后一个元素 # 输出3 echo '1 2 3' | awk '{OFS="-"}{print $(NF-1)}' # 打印倒数第二个元素 # 输出2 # 注: # $0 代表当前记录 # $1 代表第一个字段 # $N 代表第N个字段 # $NF 代表最后一个字段
RS ORS 行分隔符
# 单行拆分为多行 echo $PATH | awk 'BEGIN{RS=":"}{print $0}' echo $PATH | awk 'BEGIN{RS=":"}{print NR,$0}' echo $PATH | awk 'BEGIN{RS=":"}END{print NR}' # 多行组合为单行 echo $PATH | awk 'BEGIN{RS=":"}{print $0}' | awk 'BEGIN{ORS="-"}{print $0}'
sed 数据操作
sed [addr]X[options] # -e 表达式 sed -n '2p' # 打印第2行 sed 's/hello/world/' # 修改 # -i 直接修改源文件 # -E 拓展表达式
基本用法
echo '1 2 3' | sed -n 1,2p # 输出第1,2行内容 echo '1 2 2' | sed 's/2/xxxx/' # 将第一个2替换为xxxx echo '1 2 2' | sed -e 's/1/xxx/ -e 's/2/ccc/' # 将1,2分别替换为xxx、ccc(替换第一个2) echo '12341234' | sed 's/2/x/g' # 将所有的2都替换为x
浙公网安备 33010602011771号