软件测试/测试开发丨Linux 三剑客与管道使用

1、 程序运行环境输入与输出

  • 标准输入 0
    • read a;echo $a
  • 标准输出 1
    • echo ceshiren.com
  • 错误输出
    • ls not_exist_dir

软件测试/测试开发丨Linux 三剑客与管道使用_第1张图片

2、 管道重定向

  • 管道与管道之间可以重定向
  • 管道与文件之间可以重定向
echo 11 > /tmp/1
read var  /tmp/output
将错误输出2重定向到1里
ls not_exist_dir > /tmp/output 2>&1

3、 管道连接

软件测试/测试开发丨Linux 三剑客与管道使用_第2张图片

4、 管道连接符 |

  • 管道连接符 | 可以连接多个程序的执行
  • 管道连接是以子进程的方式启动的
管道符前后是两个命令,{}里面有两个命令,即命令的集合;
echo hogwarts的输出被重定向到下一个命令;
read line; echo input is $line; 读取一行并输出;

echo hogwarts | { read line; echo input is $line; }
curl https://ceshiren.com/categories.json \
  | grep -o '{"id[^}]*}' \
  | awk -F, '{print $2,$6}' \
  | awk -F '"' '{print $7,$4}' \
  | sed 's#:##' \
  | sort -nr \
  | head -5

5、 管道执行的上下文控制

  • 使用 { command; } 注意花括号与内部命令之间的空格与分号
  • 使用控制逻辑 while read 组合
  • 使用 $() ``
#这个方式无法获得变量x,echo接着通过read命令度过来,无法获得,因为这两个命令通过管道连接起来,是以子进程方式运行,子进程运行完就立马销毁了,可以使用{}将两个命令当作一个进程来进行处理

echo hello world | read x; echo $x

#如下两个方式可以获得变量x
echo hello world | { read x; echo $x; }
echo hello world | while read x; do echo $x; done

6、 Linux 三剑客介绍

  • grep:基于正则表达式查找满足条件的行

  • awk:根据定位到的数据行处理其中的分段

  • sed:根据定位到的数据行修改数据

  • 官方文档:

    • GNU Grep 3.11
    • www.gnu.org/software/ga…
    • sed, a stream editor

7、 与 SQL 的对比

Linux 三剑客 SQL Structured Query Language
grep 数据查找定位 select * from table like ‘%xx’
awk 数据切片 select field from table
sed 数据修改 update table set field=new where field=old

8、 BRE 基本正则表达式

  • ^ 开头 $结尾
  • [a-z] [0-9] 区间,如果开头带有^表示不能匹配区间内的元素
  • * 0 个或多个
  • . 表示任意字符

9、 ERE 扩展正则表达式

  • 基本正则表达式(BRE)基础上的扩展
  • ? 非贪婪匹配
  • + 一个或者多个
  • () 分组
  • {} 范围约束
  • | 匹配多个表达式的任何一个

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

你可能感兴趣的:(软件测试,linux,运维,服务器,软件测试,自动化测试,功能测试,程序人生)