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 :查看当前文档内容

# 相比 catless 可以实现上下翻页等功能 
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

 

posted @ 2021-11-17 09:34  文尼不是橡皮泥  阅读(44)  评论(0)    收藏  举报