RHEL-用戶基礎-管道

管道


主要概念

1.用UNIX所謂的“管道”可以把一個進程標準輸出流與另一個進程的標準輸入流連接起來。

2.UNIX中的許多命令被設計爲過濾器,從標準輸入中讀取輸入,將輸出傳送到標準輸出。

3.bash用“|”在兩個命令之間創建管道。


進程的輸出可以被重定向到終端顯示器以外的地方,或者可以讓進程從終端鍵盤以外的地方讀取輸入。(簡而言之:進程的輸入可以不從鍵盤,進程的輸出也可以不從顯示器)

一種最常用、最有利的重定向形式是把這二者結合起來,在這種形勢下,一個命令輸出(標準輸出)被直接“用管道輸送”到另一個命令的輸入(標準輸入)中,從而構成了Linux(和UNIX)所謂的管道(pipe)。


當兩個命令用管道連接起來時,第一個進程的標準輸出流被直接連接到第二個進程的標準輸入序列。

連接在管道中的所有進程被稱爲進程組(process group)


管道:把前一個命令的輸出,作爲後一個命令的輸入

命令1 | 命令2 | 命令3 |···


把passwd中用戶名取出來,進行排序

[root@host2 tmp]# cut -d: -f1 /etc/passwd | sort


把passwd中UID號取出來,進行排序

[root@host2 tmp]# cut -d: -f3 /etc/passwd | sort -n


把passwd中用戶名取出來,進行排序,然後變成大寫

[root@host2 tmp]# cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'


【tee】

tee - read from standard input and write to standard output and files

從標準輸入讀取數據,並且發送至標準輸出和文件

即:屏幕輸出一份,保存至文件一份

[root@host2 tmp]# echo "Hello Red Squirrel" | tee /tmp/hello.out
Hello Red Squirrel
[root@host2 tmp]# cat hello.out 
Hello Red Squirrel


【wc】

wc - print newline, word, and byte counts for each file


只顯示文件的行數,不能顯示其他信息:

[root@host2 tmp]# wc -l /etc/passwd | cut -d' ' -f1
33

[備註:cut -d的''中間是空格]



題目:

1.統計/usr/bin目錄下的文件個數

[root@host2 tmp]# ls /usr/bin/ | wc -l
1434


2.取出當前系統上所有用戶的shell,要求每種shell只顯示一次,並且按順序進行顯示

[root@host2 tmp]# cut -d: -f7 /etc/passwd | sort -u
/bin/bash
/bin/sync
/sbin/halt
/sbin/nologin
/sbin/shutdown


3.思考:如何顯示/var/log目錄下每個的內容類型?

[root@host2 tmp]# file /var/log/*


4.取出/etc/inittab文件中的第5行

[root@host2 tmp]# head -5 /etc/inittab | tail -1
# System initialization is started by /etc/init/rcS.conf


5.取出/etc/passwd文件中倒數第9個用戶的用戶名和shell,顯示到屏幕上並將其保存至/tmp/users文件中

[root@host2 tmp]# tail -9 /etc/passwd | head -1 | cut -d: -f1,7 | tee /tmp/users
haldaemon:/sbin/nologin


6.顯示/etc目錄下所有以pa開頭的文件,並統計其個數

[root@host2 tmp]# ls -d /etc/pa* | wc -l
4


7.不使用文本編輯器,將alias cls=clear 一行內容添加至當前用戶的.bashrc文件中

[root@host2 tmp]# echo "alias cls=clear" >> ~/.bashrc


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