码迷,mamicode.com
首页 > 其他好文 > 详细

管道及I/O重定向

时间:2019-04-20 21:41:33      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:set   添加   替换   取出   个数   文件   存储器   doc   倒数   

管道及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

管道及I/O重定向

标签:set   添加   替换   取出   个数   文件   存储器   doc   倒数   

原文地址:https://www.cnblogs.com/thelovelybugfly/p/10742668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!