管道及IO 重定向 > < >> <<
计算机组成:
运算器,控制器:CPU
存储器:RAM
输入/输出设备 I/O
程序: 指令和数据
控制器:指令
运算器:
存储器:
地址总线: 内存寻址
数据总线: 传输数据
控制总线: 控制指令
寄存器: CPU暂时存储器
系统设定:
默认输出设备: 标准输出 STDOUT 1
标准输入设备: 标准输入 STDIN 0
标准错误输出: STDERR 2
标准输入: 键盘
标准输出和错误输出: 显示器
I/O 重定向 :改变输入输出的默认来源
Linux:输出重定向 :
> : 输出重定向,覆盖输出
>> : 输出重定向,追加输出
set -C : 禁止对已经存在的文件使用覆盖重定向输出,若想强制覆盖,则用 >|
set +C : 关闭上诉功能
2> : 重定向错误输出 ,覆盖
2>> : 重定向错误输出,追加
标准输出和错误输出属于两个不同的数据流。
&> redirect 重定向所有正确和错误输出
Linux 输入重定向:
< : 输入重定向
tr : 大写字符转换
tr ‘a-z‘ ‘A-Z‘ < /etc/test 表示将/etc/test 下的字符作为输入,重定向给tr。
即将/etc/test 下的所有小写转换为大写
<< : Here Document 在此处生成文档
cat << END
the first line
the second line
END
将上面的两行作为文档输出 输入END 标志结束,END 为标志符号,也可以用其他表示,一般我们用END,或EOF
管道: 前一个命令的输出,作为后一个命令的输入
命令1 | 命令2 | 命令3
echo "hello,word" | tr ‘a-z‘ ‘A-Z‘
tee 命令: 从标准输入读取数据,并发送至标准输出和文件
echo "Hello ,Word " | tee /tmp/hello.out
案例应用:
1 统计/usr/bin/目录下的文件个数
# ls /usr/bin | wc -l
2 取出当前系统上所有用户的shell,要求每个shell 只显示一次, 且顺序显示
# cut -d : -f7 /etc/passwd | sort -u
3 如何显示、/var/log 目录下的每个文件类型
# ls -l /var/log -- > file /var/log/*
# 或者直接用
# cd /var/log -- > file `ls /var/log` (bash的命令替换的形式)
4 取出/etc/inittab 文件的第六行
# head -6 /etc/inittab | tail -1
5 取出/etc/passwd 文件中的倒数第九个用户的用户名和shell,显示到屏幕上并并且保存至 /tmp/users 文件中
# tail -9 /etc/passwd | head -1 | cut -d: -f 1,7| tee /tmp/users
6 显示/etc/目录下所有以pa开头的文件,并统计 个数
# ls -d /etc/pa* |wc -l
7 不使用文本编辑器,将alias cls = clear 一行内容添加到当前用户的 .bashrc 文件中
# echo "alias cls = clear " >> ~/.bashrc
原文地址:https://www.cnblogs.com/thelovelybugfly/p/10742668.html