新聞中心
細心的讀者肯定還記得在2.6節(jié)學習tr命令時曾經見到過一個名為管道符的東西。同時按下鍵盤上的Shift+\鍵即可輸入管道符,其執(zhí)行格式為“命令A | 命令B”。管道命令符的作用也可以用一句話來概括“把前一個命令原本要輸出到屏幕的標準正常數(shù)據(jù)當作是后一個命令的標準輸入”。在2.8節(jié)講解grep文本搜索命令時,我們通過匹配關鍵詞/sbin/nologin找出了所有被限制登錄系統(tǒng)的用戶。在學完本節(jié)內容后,完全可以把下面這兩條命令合并為一條:

成都創(chuàng)新互聯(lián)公司從2013年創(chuàng)立,先為亳州等服務建站,亳州等地企業(yè),進行企業(yè)商務咨詢服務。為亳州企業(yè)網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
找出被限制登錄用戶的命令是grep "/sbin/nologin" /etc/passwd;
統(tǒng)計文本行數(shù)的命令則是wc -l。
現(xiàn)在要做的就是把搜索命令的輸出值傳遞給統(tǒng)計命令,即把原本要輸出到屏幕的用戶信息列表再交給wc命令作進一步的加工,因此只需要把管道符放到兩條命令之間即可,具體如下。這簡直是太方便了!
[root@linuxprobe ~]# grep "/sbin/nologin" /etc/passwd | wc -l
33這個管道符就像一個法寶,我們可以將它套用到其他不同的命令上,比如用翻頁的形式查看/etc目錄中的文件列表及屬性信息(這些內容默認會一股腦兒地顯示到屏幕上,根本看不清楚):
[root@linuxprobe ~]# ls -l /etc/ | more
total 1400
drwxr-xr-x. 3 root root 97 Jul 10 17:26 abrt
-rw-r--r--. 1 root root 16 Jul 10 17:36 adjtime
-rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
-rw-r--r--. 1 root root 12288 Jul 10 09:38 aliases.db
drwxr-xr-x. 2 root root 49 Jul 10 17:26 alsa
drwxr-xr-x. 2 root root 4096 Jul 10 17:31 alternatives
-rw-------. 1 root root 541 Jan 28 2017 anacrontab
-rw-r--r--. 1 root root 55 Jan 29 2017 asound.conf
-rw-r--r--. 1 root root 1 Jan 29 2017 at.deny
drwxr-xr-x. 2 root root 31 Jul 10 17:27 at-spi2
drwxr-x---. 3 root root 41 Jul 10 17:26 audisp
drwxr-x---. 3 root root 79 Jul 10 17:37 audit
drwxr-xr-x. 4 root root 94 Jul 10 17:26 avahi
--More--在修改用戶密碼時,通常都需要輸入兩次密碼以進行確認,這在編寫自動化腳本時將成為一個非常致命的缺陷。通過把管道符和passwd命令的--stdin參數(shù)相結合,我們可以用一條命令來完成密碼重置操作:
[root@linuxprobe ~]# echo "linuxprobe" | passwd --stdin root
Changing password for user root.
passwd: all authentication tokens updated successfully.大家是不是覺得管道符命令有些相見恨晚?管道符的玩法還有很多,比如,在發(fā)送電子郵件時,默認采用交互式的方式來進行,我們完全可以利用一條結合了管道符的命令語句,把編輯好的內容與標題一起“打包”,最終用這一條命令實現(xiàn)郵件的發(fā)送。
[root@linuxprobe ~]# echo "Content" | mail -s "Subject" linuxprobe
[root@linuxprobe ~]# su - linuxprobe
Last login: Fri Jul 10 09:44:07 CST 2017 on :0
[linuxprobe@linuxprobe ~]$ mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/linuxprobe": 1 message 1 new
>N 1 root Sun Aug 30 17:33 18/578 "Subject"如果讀者是一名Linux新手,可能會覺得上面的命令組合已經十分復雜了,但是有過運維經驗的讀者又會感覺如隔靴撓癢般不過癮,他們希望能將這樣方便的命令寫得更高級一些,功能更強大一些。比如通過重定向技術能夠一次性地把多行信息打包輸入或輸出,讓日常工作更有效率。為了大家對我們這本書的捧場,劉遄老師當然要義不容辭地把技術拱手奉上。
下面這條自造的命令就結合使用了mail郵件命令與輸入重定向的分界符,其目的是讓用戶一直輸入內容,直到用戶輸入了其自定義的分界符時,才結束輸入。
[root@linuxprobe ~]# mail -s "Readme" root@linuxprobe.com << over
> I think linux is very practical
> I hope to learn more
> can you teach me ?
> over
[root@linuxprobe ~]#當然,大家千萬不要誤以為管道命令符只能在一個命令組合中使用一次,我們完全可以這樣使用:“命令A | 命令B | 命令C”。為了幫助讀者進一步理解管道符的作用,劉遄老師在講課時經常會把管道符描述成“任意門”。想必大家小時候都看過“哆啦A夢”動畫片吧。哆啦A夢(也就是我們常稱的機器貓)經常為了取悅大雄而從口袋中掏出一件件寶貝,其中好多次就用到了任意門這個道具。其實,管道符就好像是用于實現(xiàn)數(shù)據(jù)穿越的任意門,可以幫我們提高工作效率,完成之前不敢想象的復雜工作。
文章題目:創(chuàng)新互聯(lián)linux教程:3.2 管道命令符
網頁URL:http://www.dlmjj.cn/article/coodegj.html


咨詢
建站咨詢
