Linux基础(9)/流程控制与管道
来源:互联网 发布:sql union 去重 编辑:程序博客网 时间:2024/05/17 23:29
流程控制
顺序执行
如何顺序执行多条命令?
使用分号;
例:顺序执行命令的缺点
顺序执行命令时,前面的命令执行不成功,而后面的命令又依赖上一条命令的结果,最后会出现错误。而且有时候直观的看你还无法判断结果是否正确。
选择执行
- 为什么需要选择执行?
上一条命令执行成功与否都做出相对应的处理。例:我们使用which来查找是否安装某个命令,如果找到就执行该命令,否则什么也不做。如果没有选择执行,则会报错。 - 选择执行的两个命令 && 和 ||
&&:如果前面的命令执行成功,则执行&&后面的命令,否则不执行。
||:如果前面的命令执行不成功,则执行||后面的命令,否则不执行。
命令执行成功则返回值0
- 为什么需要选择执行?
管道
什么是管道?
管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。管道又分为匿名管道和具名管道
- 使用一些过滤程序时经常会用到的就是匿名管道,在命令行中由|分隔符表示
具名管道简单的说就是有名字的管道,通常只会在源程序中用到具名管道
管道的使用
初体验
ls -al /etc | less #通过管道将前一个命令(ls)的输出作为下一个命令(less)的输入
cut 命令,打印每一行的某一字段
打印/etc/passwd文件中以:为分隔符的第1个字段和第6个字段分别表示用户名和其家目录
cut /etc/passwd -d ':' -f 1,6
打印/etc/passwd文件中每一行的前\后N个字符
cut /etc/passwd -c -5 # 前五个(包含第五个) cut /etc/passwd -c 5- # 前五个之后的(包含第五个) cut /etc/passwd -c 5 # 第五个 cut /etc/passwd -c 2-5 # 2到5之间的(包含第五个)
- grep 命令,在文本中或 stdin 中查找匹配字符串
grep结合正则表达式能够实现功能复杂高效的查找。这里简单的介绍一下使用,在正则表达式一节我会详细介绍。- 初体验/使用grep查找文件中符合匹配字符串的内容
其中参数r表示递归搜索子目录的文件;参数n表示打印行号;参数I表示忽略大小写 - 匹配字段中使用正则表达式
- 初体验/使用grep查找文件中符合匹配字符串的内容
- wc 命令,简单小巧的计数工具
- wc 命令用于统计并输出一个文件中行、单词和字节的数目
- 通过管道使用wc
ls -dl /etc/*/ | wc -l
- wc 命令用于统计并输出一个文件中行、单词和字节的数目
- sort 排序命令
- 字典排序/sort
- 反转排序/sort -r
- 按特定字段排序
用参数t分割;用参数k指定第几字段
uniq 去重命令(以history命令为例)
- 输出重复行
history| cut -c 8- | cut -d ' ' -f 1 | sort|uniq
过滤重复行
history| cut -c 8- | cut -d ' ' -f 1 | sort|uniq -dc #输出重复过的行(重复的只输出一个)及重复次数history| cut -c 8- | cut -d ' ' -f 1 | sort|uniq -D # 输出所有重复的行
history命令用来查看命令行输入历史。第8行开始是命令信息。所以使用cut命令从第8行截取,并且取出第一个元素。然后排序和去重。
- 输出重复行
题外话:
一个有趣的图片查看方法
安装aview和imagemagick,然后用asciiview命令显示图片。sudo apt-get install aview imagemagick;asciiview lena.jpg #先cd 到含有图片lena.jpg的目录下,再执行该命令
↑原图片 ↓asciiview打开的图片
当然asciiview还有其他参数,可以调节输出的图像。cowsay和fortune
先安装install cowsay和fortune;cowsay是用卡通形象来输出用户输入的文本;fortune的功能是随机生成一句话。
cowsay可不只奶牛一个角色,你可以尝试其他的角色。比如下面这个:
是不是觉得很有意思呢?
- Linux基础(9)/流程控制与管道
- Linux命令执行顺序控制与管道
- Linux命令执行顺序控制与管道
- 【Linux】命令执行顺序控制与管道
- Linux命令执行顺序控制与管道
- Linux命令执行顺序控制与管道
- linux脚本编写基础(环境变量、shell流程控制)
- 【Linux基础】重定向与管道
- java基础(二)流程控制与面向对象
- 黑马程序员--java基础流程控制与方法(上)
- 黑马程序员--java基础流程控制与方法(下)
- Shell基础(五):条件判断与流程控制
- java基础(4)--流程控制与数组
- Java基础<三>---> 流程控制与函数
- Dart基础-控制流程与异常处理
- java基础之流程控制与方法
- 实验楼Linux学习笔记(九)之 命令执行顺序控制与管道
- 7、linux命令执行顺序控制与管道
- Win7安装Redis
- vue-resource插件使用
- java并发编程实践学习(3)组合对象
- JSP第二篇【内置对象的介绍、4种属性范围、应用场景】
- 注册表问题
- Linux基础(9)/流程控制与管道
- maven常用的命令
- 【学习人工智能的最佳姿势】人工智能多务虚,深度学习常务实
- 设置html5 的video 当前播放时间
- dubbo与Spring MVC整合
- Android SmartTabLayout worm蠕虫蠕动/普通平整动画切换动画属性
- nginx实现请求转发
- yum 使用报错
- 超简单生产者消费者模型