每天一个Linux命令——管道命令(pine、"|")

管道命令详解:
以前只知道用管道命令,并没有深究。其实管道就是 用"|"符号来连接两个命令,以前面命令的标准输出作为后面命令的标准输入,如下图所示(是不是很形象)。
每天一个Linux命令——管道命令(pine、
注意:

1、管道命令会自动忽略错误的标准输入

2、管道命令后面接的命令必须能够接收标准输入,不能接收的命令包括ls、cp、mv等

管道应用示例:

管道需要搭配其他命令来使用,下面来几个例子。

1、查看tomcat进程详情(常用,管道入门级)

ps -ef | grep tomcat

ps命令用于报告当前系统进程状态,-e参数表示显示所有用户所有进程,-f参数表示全格式显示,ps -ef的输出如下图:

每天一个Linux命令——管道命令(pine、

这一条条的结果,通过管道,输入给后面的命令。

grep全称是Globally search a Regular Expression and Print,能使用特定模式匹配(包括正则表达式)搜索文本,并默认输出匹配行。所以用管道连接后,这个命令就表示显示所有进程,并且格式化输出,然后用“tomcat”字符串来过滤每一行,得到最终的输出结果。

2、查看物理cpu个数(进阶级,多管道连用)

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

拆解:

cat /proc/cpuinfo:查看cpu详细信息

grep "physical id":用“physical id”过滤每一行

sort:将输入结果按照ASCII值进行排序

uniq:去重

wc -l:计算行数

我们从sort开始看:

每天一个Linux命令——管道命令(pine、   每天一个Linux命令——管道命令(pine、

你要问我问啥输出这么多重复的,你自己敲一下cat /proc/cpuinfo就明白了。

3、用管道计算1+2+3+……+100(奇技淫巧版)

看到这道题,你会想怎么去做?写个循环i++ j++?还是用公式(1+100)*n/2?

我们的bash可以非常巧妙的解决这个问题。

首先我们要知道linux 中有个计算器,叫bc,我们先来看看他的用法。

  1. 直接输入bc进入程序

    每天一个Linux命令——管道命令(pine、

  2. 扔给bc一条算式

看到第二种用法,我们或许就意识到了,bc可以直接计算输入给他的字符串!

是不是很有趣?

那我们能不能拿到一个1+2+3+..+99+100的字符串呢?

我们知道echo {1..100}可以生成1 2 3 4 5 … 100的字符串,中间以空格隔开。

每天一个Linux命令——管道命令(pine、

等等..用空格隔开?把空格换成加号不就行了么?我们来:

Echo {1..100} |tr ' ' '+'

看我们拿到了什么?

再来Echo {1..100} |tr ' ' '+'|bc 
这里写图片描述

看看~是不是很厉害呢?

管道符是linux 中重要的符号,真的是很棒的发明~

更多管道符的用法让我们一起去探索吧~


你可能感兴趣的:(每天一个Linux命令)