学向勤中得,萤窗万卷书。这篇文章主要讲述输入输出相关的知识,希望能为你提供帮助。
重定向
什么是重定向?
将原本要输出到屏幕上的内容,重新输入到其他设备中
为什么要学重定向?
# 1.输出的内容,比较重要的时候,我们想把它保存到文件中
# 2.在后台执行的程序,我不想让它输出的内容,干扰到屏幕
# 3.将定时任务的结果保存下来(备份,是否成功)
# 4.一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出
# 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。
命令返回值
如何判断一个命令是否执行成功?????
echo $?命令的返回值
返回值是0,则代表上一条命令执行成功
返回值非0,则代表上一条命令执行不成功
输入输出文件描述符
名称 | 文件描述符 | 作用 |
stdin | 0 | 标准输入 |
stdout | 1 | 标准输出 |
stderr | 2 | 错误输出 |
【输入输出】 文件名 | 3+ |
[root@shiying < sub> ]# ll /proc
total 0
dr-xr-xr-x.9 rootroot0 Apr 13 18:01 1174
[root@shiying < /sub> ]# ll /proc/1174/fd
total 0
lrwx------. 1 root root 64 Apr 13 18:01 0 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 18:01 1 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 18:01 2 -> /dev/pts/0
lrwx------. 1 root root 64 Apr 13 18:45 255 -> /dev/pts/0
[root@shiying < sub> ]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdout -> /proc/self/fd/1
[root@shiying < /sub> ]# ll /dev/std*
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Apr 13 18:01 /dev/stdout -> /proc/self/fd/1
含有zls文件名的内容标准输出到/tmp/b.log,错误内容输出到/tmp/a.log
[root@shiying < sub> ]# find / -type d -name *zls* 2> /tmp/a.log 1> /tmp/b.log
[root@shiying < /sub> ]# cat /tmp/a.log
输入输出符号
名称 | 符号 | 作用 |
标准输入重定向 | <
或者 0<
| 将符号右边的内容交给符号左边的命令 |
<
<
或者 0<
<
| ||
标准输出覆盖重定向 | >
或者 1>
| 将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中 |
标准输出追加重定向 | >
>
或者1>
>
| 将原本要输出在屏幕上的正确内容,追加到重定向的文件中 |
错误输出覆盖重定向 | 2>
| 将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中 |
错误输出追加重定向 | 2>
>
| 将原本要输出在屏幕上的错误内容,追加到重定向的文件中 |
## 错误输出和正确输出,同时写入同一个文件
[root@shiying < sub> ]# find /type d -name *111* & > /tmp/a.txt
[root@shiying < /sub> ]# find /type d -name *111* > /tmp/a.txt 2> & 1
# 正确输出 错误输出放进正确输出里,然后全部重定向到/tmp/c.txt
[yyy@shiying < sub> ]$ find / -type d -name *111* > /tmp/c.txt 2> & 1
#正确输出 错误输出和别的所有输出同时放进c.txt文件里
[yyy@shiying < /sub> ]$ find / -type d -name *111* & > /tmp/c.txt
# > >
[root@shiying < sub> ]# cat > > 111.txt < < EOF
> 456
> 789
> qwe
> EOF
[root@shiying < /sub> ]# cat 111.txt
1 a !
2 b @
3 c #
4 d $
5 e %
456
789
qwe
[root@shiying < sub> ]# echo qqq > > 222.txt
[root@shiying < /sub> ]# cat 222.txt
456
qqq
# >
[root@shiying < sub> ]# ls /oiuui > 222.txt
ls: cannot access /oiuui: No such file or directory
[root@shiying < /sub> ]# cat 222.tx
cat: 222.tx: No such file or directory
[root@shiying < sub> ]# cat 222.txt
# 正确内容覆盖到重定向的文件中,错误输出到屏幕上,222.txt文件中内容为空
[root@shiying < /sub> ]# ls /oiuui > 222.txt
ls: cannot access /oiuui: No such file or directory
[root@shiying < sub> ]# cat 222.txt
[root@shiying < /sub> ]# > 222.txt
[root@shiying < sub> ]# cat 222.txt
# 错误输出 报错内容会写进文件里
[root@shiying < /sub> ]# ls /oiuui 2> 222.txt
[root@shiying ~]# cat 222.txt
ls: cannot access /oiuui: No such file or directory
输入重定向
[root@shiying ~]# cat < /etc/passwd
< 可省略
dd if=/dev/zero of=/file1.txt bs=1M count=20
dd if=/dev/zero of=/opt/disk bs=1K count=1024
ddbs=1K count=1024< /dev/zero > /opt/disk
dd < /dev/zero > /opt/disk bs=1K count=1024
知识点
#1.文件描述符 0 1 2 3+
#2.标准输入 0< < 0< < < <
#3.标准输出 > > > 1
#4.重定向 输出:1> > > 2> > > & > > >
输入:< 0< < < 0< <
推荐阅读
- 国家公园 生态之窗
- Linux SRE课程第二周作业
- Linux第五天 网络IP地址配置与日志服务器的搭建
- LNMP生产实战环境
- K8S的配置资源管理
- CentOS 重定向输入输出
- 用shell脚本,创建一个整数和计算器程序并打印数字脚本
- 黑苹果入门教程
- 管理系统中的进程