RHEL-用戶基礎-管道

管道shell


主要概念bash

1.用UNIX所謂的「管道」能夠把一個進程標準輸出流與另外一個進程的標準輸入流鏈接起來。編輯器

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

3.bash用「|」在兩個命令之間建立管道。ui


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

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


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

鏈接在管道中的全部進程被稱爲進程組(process group)進程


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

命令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
相關文章
相關標籤/搜索