『無慾則無求』Linux常用命令 — 29、管道符

1、管道符介紹

管道符|,也是shell命令。

管道符的作用是鏈接多個命令,把命令1的結果作爲命令2的操作對象。

命令格式:命令1 | 命令2
命令1的正確輸出作爲命令2的操作對象

提示:
管道符的基本作用和之前說過的-exec選項的基本作用是一樣的。命令1的結果作爲命令2的操作對象的這種操作稱爲文本流操作(就相當於流水線,第一個人操作完流水線轉給第二個人操作)。但是find命令不支持文本流操作,在find命令中加入管道符,輸出的結果是不正確的,所以在find命令中添加了-exec \;模擬管道符的作用。

2、管道符應用

(1)例子1:

舉個例子,我們經常需要使用“ll”命令查看文件的長格式,不過在有些目錄中文件衆多,比如/etc/目錄,使用“ll”命令顯示的內容就會非常多,只能看到最後的內容,而不能看到前面輸出的內容。
這時我們馬上想到more命令可以分屏顯示文件內容,可是怎麼讓more命令分屏顯示命令的輸出呢?

注意:more命令是分屏顯示文件中的數據,是顯示字符串。而ll命令是輸出的是命令的結果(也就是輸出的是文件名)。

我想到了一種笨辦法:

#用輸出重定向,把ll命令的輸出保存到/root/testfile文件中
[root@localhost ~ ] #ll -a /etc/ >> /root/testfile

#既然testfile是文件,當然可以用more命合分屏顯示了
[root@localhost ~] # more /root/testfile
總用量1784
drwxr-xr-x.105 root root 12288 10月 21 12:49.
dr-xr-xr-x.26 root root 4096 6月 5 19:06..
.…首路部分輸出…
-rwxr-xr-x.1 root root 687 6月22 2012 auto.smb
--More--(7%)

可是這樣操作實在不方便,這時就可以利用管道符了。命令如下:

[root@localhost ~ ] #ll -a /etc/ | more

因爲管道符是文本流操作,管道符把前邊 ll命令的結果轉換成文本,然後供more命令分屏顯示。

(2)例子2:

通過ll命令,在顯示/etc/文件夾裏文件的結果中,搜索yum的文件名,應該使用find命令?還是grep命令?

通過上邊的提示,find命令是搜索文件名,grep命令是搜索文本內容的,管道符是文本流操作,之後都是文本結果(也就是字符串),所以需要用grep命令。還有就是find命令也不支持管道符操作。

[root@localhost ~ ] #ll -a /etc/ | grep yum

(3)例子3:

netstat 命令(CentOS7中,需要安裝net-snmp.x86_64,net-tools.x86_64兩個包纔有此命令。7.5系統中已經自動安裝)格式如下:

netstat 命令是一個非常重要和常見的查詢網絡狀態的網絡命令。

命令格式:
[root@localhost ~] # netstat [選項]
選項:
-a:列出所有網絡狀態,包括 Socket程序
-c秒數:指定每隔幾秒刷新一次網絡狀態
-n:使用Ip地址和端口號顯示,不使用域名與服務名
-p:顯示PID和程序名
-t:顯示使用TCP協議端口的連接狀況-u:顯示使用UDP協議端口的連接狀況
-1:僅顯示監聽狀態的連接
-r:顯示路由表
常用需求
# 需求:查看當前遠程登陸有多少人
[root@localhost ~ ] #netstat -an | grep "ESTABLISHED" | wc -l

網絡中爲ESTABLISHED狀態的,表示是遠程鏈接。
wc -l :統計有多少行。

# 查詢系統中所有開啓的端口。
[root@DevOps ~]# netstat -tuln
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章