写点什么

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

作者:测试人
  • 2023-07-20
    北京
  • 本文字数:885 字

    阅读完需:约 3 分钟

免费领取:测试资料+性能测试+接口测试+自动化测试+测试开发+测试用例+简历模板+测试文档

本文为霍格沃兹测试开发学社学员学习笔记分享

原文链接:https://ceshiren.com/t/topic/26295

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

  • 标准输入 0

  • read a;echo $a

  • 标准输出 1

  • echo ceshiren.com

  • 错误输出

  • ls not_exist_dir


2、 管道重定向

  • 管道与管道之间可以重定向

  • 管道与文件之间可以重定向

echo 11 > /tmp/1read var </tmp/1
错误输出:ls not_exist_dir > /tmp/output将错误输出2重定向到1里ls not_exist_dir > /tmp/output 2>&1
复制代码

3、 管道连接


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
#如下两个方式可以获得变量xecho hello world | { read x; echo $x; }echo hello world | while read x; do echo $x; done
复制代码

6、 Linux 三剑客介绍

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

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

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


7、 与 SQL 的对比


8、 BRE 基本正则表达式

  • ^ 开头 $结尾

  • [a-z] [0-9] 区间,如果开头带有^表示不能匹配区间内的元素

  • * 0 个或多个

  • . 表示任意字符

9、 ERE 扩展正则表达式

  • 基本正则表达式(BRE)基础上的扩展

  • ? 非贪婪匹配

  • + 一个或者多个

  • () 分组

  • {} 范围约束

  • | 匹配多个表达式的任何一个

发布于: 刚刚阅读数: 4
用户头像

测试人

关注

专注于软件测试开发 2022-08-29 加入

霍格沃兹测试开发学社,测试人社区:https://ceshiren.com/t/topic/22284

评论

发布
暂无评论
软件测试/测试开发丨Linux 三剑客与管道使用_Linux_测试人_InfoQ写作社区