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

管道命令詳解:
以前只知道用管道命令,並沒有深究。其實管道就是用"|"符號來連接兩個命令,以前面命令的標準輸出作爲後面命令的標準輸入,如下圖所示(是不是很形象)。

注意:

1、管道命令會自動忽略錯誤的標準輸入

2、管道命令後面接的命令必須能夠接收標準輸入,不能接收的命令包括ls、cp、mv等

管道應用示例:

管道需要搭配其他命令來使用,下面來幾個例子。

1、查看tomcat進程詳情(常用,管道入門級)

ps -ef | grep tomcat

ps命令用於報告當前系統進程狀態,-e參數表示顯示所有用戶所有進程,-f參數表示全格式顯示,ps -ef的輸出如下圖:


這一條條的結果,通過管道,輸入給後面的命令。

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開始看:

   

你要問我問啥輸出這麼多重複的,你自己敲一下cat /proc/cpuinfo就明白了。

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

看到這道題,你會想怎麼去做?寫個循環i++ j++?還是用公式(1+100)*n/2?

我們的bash可以非常巧妙的解決這個問題。

首先我們要知道linux 中有個計算器,叫bc,我們先來看看他的用法。

  1. 直接輸入bc進入程序

  2. 扔給bc一條算式

看到第二種用法,我們或許就意識到了,bc可以直接計算輸入給他的字符串!

是不是很有趣?

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

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

等等..用空格隔開?把空格換成加號不就行了麼?我們來:

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

看我們拿到了什麼?

再來Echo {1..100} |tr ' ' '+'|bc 
這裏寫圖片描述

看看~是不是很厲害呢?

管道符是linux 中重要的符號,真的是很棒的發明~

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章