RHCSA/RHCE8红帽Linux认证学习教程
上QQ阅读APP看书,第一时间看更新

3.7 管道

在Windows的CMD中执行netstat -an命令,会获取大量的内容,显示当前系统的端口状态及建立的连接。如果想查看端口445的状态,可以用如下命令。

这里find "445"是在哪里查询445呢?是从前面netstat -an命令的结果中来查询。这当中的竖杠“|”就是管道的意思,管道的用法如下。

管道可以把多个命令连接起来,管道前面命令的结果作为管道后面命令的参数。

例如,要查看/etc/passwd的第6行到第10行的内容,命令如下。

先用head获取/etc/passwd的前10行,然后通过管道传递给tail,获取/etc/passwd前10行的后5行,也就是从第6行到第10行的内容。

又如,要获取网卡ens160含有IP的那行内容,命令如下。

先通过ifconfig ens160获取ens160的IP,然后通过grep从这个结果中过滤到含有“inet ”的行。grep的意思是从指定的文件或内容中获取含有某个关键字的行。

注意

上面命令inet的后面有一个空格。

这里使用了管道之后,只显示了最终的结果,管道前面命令的结果并没有保留。如果想把管道前面命令的结果保留下来,可以用tee命令。例如,下面的命令。

这里ifconfig ens160先把结果通过管道传递给tee命令,保存在bb.txt中,然后结果正常输出到屏幕上。这样ifconfig ens160的结果既保存在bb.txt中,也输出到屏幕上了。

再看下面的例子。

这里ifconfig ens160先把结果传递给tee命令,保存在bb.txt中。然后结果本应继续输出到屏幕上的,但是又遇到了管道,把结果传递到grep过滤含有关键字的行,这样最终看到的是含有“inet ”的那行。

下面查看bb.txt的内容,命令如下。