04_03管理及IO重定向


计算机五大部件:

运算器、控制器:cpu

存储器:RAM

输入输出设备:


程序:指令和数据


控制器:指令

运算器:

存储器:


地址总线:内存寻址

数据总线:传输数据

控制总线:控制指令


寄存器:cpu暂时存储器


I/O:硬盘,键盘鼠标


程序


INPUT设备:

OUTPUT设备


系统设定:

默认输入设备:标准输入,STDIN,0(描述符)

默认输出设备:标准输出,STDOUT,1

标准错误输出:STDERR,2

 

标准输入:键盘

标准输出和错误输出:显示器

 

之前那用过passwd --stdin


I/O重定向:


Linux:

>:覆盖输出。只输出标准输出,错误输出属于不同的数据流。容易发生致命错误。例:ls /var > /tmp/test.out。

>>:追加输出

 

set:

help set  

-C:禁止对已经存在文件使用覆盖重定向:

 强制覆盖输出,则可使用>|

+C:关闭上述功能

 

2>:重定向错误输出,只能输出错误输出

2>>:追加方式


如想既定向标准输出,又定向错误输出呢?

可同时使用。例:ls /varr > /tmp/var3.out 2> /tmp/err.out 文件名可以相同,一个命令不可能既正确又错误


&>:重定向标准输出或错误输出至同一个文件。不支持&>>追加方式


<:输入重定向

<<:Here Document.例 cat << EOF 以输入EOF为结束

例:cat >> /tmp/myfile.txt << EOF,生成文档

 


管道:前一个命令的输出,作为后一个命令的输入


命令1 | 命令2 | 命令3 | ...

例:echo "hello,world." | tr 'a-z''A-Z'

echo "redhat" | passwd --stdin hive

cat /etc/passwd | sort等同于sort /etc/passwd  

若取出所有用户名进行排序:

cut -d: -f1 /etc/passwd |sort | tr 'a-z''A-Z'

 

tee:

man tee

例:echo ”hello,world" | tee /tmp/hello.out 既显示在屏幕上也保存在文件中

 

只显示文件行数:wc -l /etc/passwd | cut -d' ' -f1


练习:

1、统计/usr/bin/目录下的文件个数

#ls /usr/bin | wc -l 注意不能使用ls -l,会多一行

2、取出当前系统上所有用户的shell,要求,每种shell只显示一次,并且按顺序进行显示

#cut -d: -f7 /etc/passwd | sort -u

3、思考:如何显示/var/log目录下每个文件的内容类型?

#file /var/log/*

#cd /var/log #file ’ls /var/log‘方法2,分两步,必须在log目录下进行

4、取出/etc/inittab文件的第六行

#head -6 /etc/inittab | tail -l

5、取出/etc/passwd文件中倒数第九个用户的用户名和shell,显示到屏幕上并将其保存至/tmp/uers文件中

#tail -9 /etc/passwd | head 1 | cut -d: -f1,7 | tee /tmp/users

6、显示/etc目录下所有以pa开头的文件,并统计其个数

#ls -d /etc/pa* | wc -l 加-d,不加的话所有目录下的文件都显示出来

7、不适用文本编辑器,将alias cls=clear一行内容添加至当前用户的.bashrc文件中

#echo "alias cls=clear" | >> ~/.bashrc