管道
主要概念
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
本文出自 “天天向上” 博客,请务必保留此出处http://liyasong.blog.51cto.com/3096629/1573826
原文地址:http://liyasong.blog.51cto.com/3096629/1573826