菜鸟学Linux 第012篇笔记 Linux I/O重定向
计算机五大部件
运算器、控制器:cpu
存储器:RAM
输入/输出设备
程序=指令+数据
控制器:读取指令
运算器:做数据运算
存储器:做数据存储
相互运作原理(仅做理解)
控制器读取指令,并在指令控制下告诉运算器去哪里取数据并做运算,运算结果再由控制器
保存到存储器
地址总线:用于做内存寻址
数据总线:传输数据
控制总线:控制指令
物理上总线可以利用,一根总线可以实现以上三种功能
寄存器:Cpu内部的一个暂时存储器
I/O
input 设备
output设备
系统设定
默认输出设备:标准输出STDOUT文件描述符:1
默认输入设备:标准输入STDIN文件描述符:0
标准错误输出:STDERR文件描述符:2
标准输入:键盘keyboard
标准输出和错误输出:显示器screen
I/O 重定向(输入输出重定向)
linux重定向符号
覆盖输出>
追加输出>>
输入<
结束标记<
错误输出2> 和 2>>
标准和错误输出 &> 不支持覆盖输出
e.g.
ls /etc > /tmp/etc.out 将本应该显示在屏幕上的信息
重定向定入到/tmp/etc.out
ls /etc &> /tmp/etc.out
ls /etc > /tmp/etc.out 2> /tmp/etc
cat >> /tme/home.out <
set -C 禁止对已经存在文件使用覆盖重定向
强制覆盖输出,由使用>|
set +C 关闭上述功能
管道:前一个命令的输出做为后一个命令的输入
命令1|命令2|命令3
e.g.cut -d: -f1 /etc/passwd | sort | tr 'a-z' 'A-Z'
tee(read from standard input and write to standard output and files)
同时输出到标准输出,同时也输出到文件
e.g. echo "hello, world." | tee /tmp/hello.out
wc(print the number of newlines, words, and bytes in files)
e.g. wc -l /etc/shadow | cut -d' ' -f1 显示一个文件的行数
小练习
1、统计/usr/bin目录下的文件个数;
2、取出当前系统上所有用户的shell,要求每种shell只显示一次,并且按顺序显示;
3、思考:如何显示/var/log目录下每个文件的内容类型?
4、取出/etc/inittab文件的第6行;
5、取出/etc/passwd文件中倒数第9个用户的用户名和shell,显示到屏幕上并保存至/tmp/users文件中;
6、显示/etc目录下所有以pa开头的文件,并统计其个数;
7、不使用文件编辑器,将alias cls=clear 一行内容添加至当前用户的./bashrc文件中;
KEY
1、ls /usr/bin | wc -l
2、cut -d: -f7 | sort -u
3、file `ls /var/log` 需要先切换到/var/log目录下
4、cat /etc/inittab | head -6 |tail -1
5、cat /etc/passwd | tail -9 | head -1 | cut -d: -f1,7 | tee /tmp/users
6、ls -d /etc/pa* | wc -l
7、echo "alias cls=clear" >> /user1/.bashrc