@(软件测试技术栈)
Linux基础命令
文件类命令
1.磁盘与目录
- df
- ls
- midir
- cd
cd /d
,进入d盘,不是cd d:
,CMD是d:
cd ~
,跳转直自己的home目录 - pwd
- $PWD
2.文件编辑
- vi、vim
vi 1.txt
i:insert
a:append
ESC:退回命令模式
:
w:write
q:quit
! 强制 - sed
3.文件权限
drwxrwxr-x 2 25172814 25172814 4096 Dec 8 10:38 12
-rw-rw-r-- 1 25172814 25172814 2018 Dec 21 15:04 4.text
第1位:表示文件夹类型,d表示目录 ,-表示文件
第2-4位,所有者权限标识
第5-7位,组用户权限标识
第8-10位,其他用户权限标识
三种身份
当前用户u
当前组用户g
非同组用户o
三种权限
r,读
w,写
x,执行
参考:https://www.cnblogs.com/vivian-test/p/5071488.html
- ll,查看文件权限
- chmod,更改文件模式(权限)
chmod o+w 1.txt
,o表示非同组用户,+表示增加权限,w表示写权限,1.txt是文件名
chmod a-x 1.txt
,a表示全部用户,-表示去掉权限 - chown,更改文件所有者和所属群组
- chgrp,更改文件所属群组
4.文件搜索
- find
5.文件内容
- cat
- more
- less
- grep
6.特殊文件
- ln,软链,相当于windows的快捷方式
ln -s 1.txt 3.txt
,设置软链后编辑3.txt就等于编辑1.txt
7.文件
- rm 删除文件和目录
rm 1.txt
- cp 复制文件或目录
cp 1.txt 2.txt
,复制1.txt,名称为2.txt,如果2.txt存在直接覆盖
cp 目录1/11.txt 目录2/22.txt
,从目录1复制文件到目录2 - mv 移除和重命名
mv 4.txt 5.txt
,4.txt从命名为5.txt
目录1/11.txt 目录2/33.txt
,可以写上路径,从目录1移动到目录2
进程类命令
- ps,进程快照
ps aux
ps -ef
- top,持续交互式
网络类命令
- netstat
netstat -tlnp
,当前对外开放的端口
netsta -tnp
,当前连接 - curl
管道
1.输入与输出
-
read,用来读取输入,并赋值给变量
把123赋值给x
ehco,输出变量
printf,输出变量
file,将输出重定向到另一个文件,每次都覆盖
file,将输出追加重定向到另一个文件
[图片上传中...(image-529af8-1590217226563-7)]-
<file,输入重定向
管道,前一个命令的输出传给后一个命令的输入
管道会开启一个新的进程,与read组合使用时要注意。
Linux三剑客
gerp,基于正则表达式查找满足条件的行
grep pattern file
pattern:正则表达式
file:没给文件时,会找标准输出
1.grep的参数
- -i,忽略大小写
- -v,不显示匹配的行
- -o,每个匹配内容用独立的行显示
- -E,使用拓展正则表达式
- -r,递归搜索文件夹
2.基本正则表达式
使用正则表达式,最好用单引号括住表达式
-
^开头
$结尾
[a-z]、[0-9]区间,其中任意一个
[^a] 不匹配a
*表示0个或多个
.表示任意字符
3.拓展正则表达式
使用拓展正则表达式,需要加上-E参数
- ? 非贪婪匹配
- +表示一个或多个
- () 分组
- {} 范围限定
- | 匹配多个表达式中的一个
awk,根据定位到的数据行处理其中的分段
语法:awk 'pattern{action}
掌握字段数据处理
- -F参数,指定字段分隔符,没有指定默认以空格为分隔符
- (0,代表当前的记录,为避免)符号与引用变量的$混淆,需要使用{}括起来
- $1,代表第一个字段
- $N,代表第N个字段
-
PWD |awk -F '/' '{print $2}'`
以/为分隔符,打印第二个字段
sed,根据定位到的数据行修改其中的数据
- s代表搜索
- /可以是其他符号,一般用/
- g代表全局搜索修改
- -e可以使用多个表达式
echo $PWD |sed -e's/1/a/g' -e's/h/999/'
[图片上传中...(image-1c07c0-1590217226563-10)]
Bash语言
变量
1.变量定义
- = 左右不要有空格
- 如果内容有空格,需要使⽤单引号或者双引号
- 双引号⽀持转义 $开头的变量会被⾃动替换
2.变量引用
$
逻辑控制
1.if
❖ if [ condition ] ; then …;fi
❖ if [ condition ] ; then …;else …;fi
❖ if [ condition ] ; then …;elif …;fi
❖ 简单的逻辑可以使⽤ && || 去替代
❖ [ -f file ] && echo file exist || echo file not exist
❖ 条件可以⽤命令返回值代替
2.for
-
⽤于递归数组
arry=(1 2 3 4);for i in ${arry[@]};do echo $i;done
-
用于递归以空格隔开的字符串序列
ss="aa bb cc dd";for x in $ss;do echo $x ;done
-
用于递归某个命令的返回值
for x in
ls;do echo $x ;done
3.while
-
设置循环条件
i=0;while ((i<3));do echo $i;((i=i+1));done
-
⼀⾏⾏的读取⽂件内容
while read line; do echo $line ; done < 3.txt
4.退出控制
- return 函数返回
- exit 脚本进程退出
- break 退出当前循环
- continue 跳过当前的循环,进⼊下⼀次循环
函数
1.注释
2.传参
❖ 1 ,3 分别表⽰第⼏个参数。默认shell只⽀持9个参 数,使⽤shift可以传递更多的参数。
❖ (@,)* 表⽰所有的参数,不含{:1:3}, ({:)#} 来表⽰多个参数。
3.定义函数
4.执行函数
5.调试函数 -x