day6.3

day6.3

输入输出

重定向

# 什么是重定向?
	将原本要输出到屏幕的数据信息,重新定向到指定文件中。
# 为什么要使用重定向?
1.输出的内容比较重要的时候时,我们想要把它保存到文件中
2.在后台执行的程序,我不想让他输出的内容,干扰,显示到屏幕上。
3.将定时任务结果保存下来(备份是否成功)
4.一些执行的命令,知道他可能会有错误输出,当不想看到错误输出
5.执行一个命令,可能报错和正确的输出并存,类似错误日志需要分别输出至不同的文件

标准输入与输出

# 执行一个shell程序时通常会自动打开三个文件描述符
名称 文件描述符 作用
标准输入(stdin) 0 通常是键盘,也可以是其他文件或者命令的输出的内容可以作为标准输入
标准输出(srdout) 1 默认输出到屏幕
错误输出(stderr) 2 默认输出到屏幕
文件名称(filename) 3+
# 进程将从标准输入中得到数据,将正常输出打印至屏幕终端,将错误的输出的信息也打印至屏幕终端。
进程使用文件描述符(file descriptost)来管理打开文件

输入输出过程检测

# 查看输入输出设备
[root@28technicians ~]# ls -l /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 08:14 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 08:14 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 08:14 /dev/stdout -> /proc/self/fd/1

输入输出重定向符号

类型 操作符 用途
标准覆盖输出重定向 > 或者 1> 将命令的执行结果输出到指定文件中,而不是直接显示在屏幕上
标准追加输出重定向 1>>或者>> 将命令执行的结果追加输出到指定文件中
错误覆盖输出重定向 2> 将程序错误的输出结果输出到执行文件中,会覆盖原文件内容
错误追加输出重定向 2>> 将程序错误的输出的结果追加到指定文件中,不会覆盖
标准输入重定向 <<或者< 将符号右边的内容交给符号左边的命令
所有输出结果 & 重定向所有输出

输出重定向

# 标准输出重定向(覆盖)
[root@28technicians ~]# ll xxx > nba
[root@28technicians ~]# cat nba
-rw-r--r--. 1 root root 0 Apr 11 16:23 xxx

# 标准输出重定向(追加)
[root@28technicians ~]# echo "123456789" >>nba
[root@28technicians ~]# cat nba
-rw-r--r--. 1 root root 0 Apr 11 16:23 xxx
123456789

# 将标准输出和标准错误输出重定向到不同文件
[qq@28technicians ~]$ find /etc -name "*.conf" 1>a 2>b

# 将标准输出和标准错误输出重定向到同一个文件中
1.[qq@28technicians ~]$ find /etc -name "*.conf" &>c
2.[qq@28technicians ~]$ find /etc -name "*.conf" >d 2>&1

输入重定向

# 输入重定向,既原本从键盘等设备获取的输入信息,重定向由命令的输出作为输入
标准输入:< 等价 0 <
dd if=/dev/zero of=/file1.txt bs=1M count=20

dd if=/dev/zero of=/opt/disk bs=1K count=102

[root@28technicians ~]# dd bs=1k count=1024 </dev/zero >/opt/disk
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0150209 s, 69.8 MB/s

posted @   Gabydawei  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示