厌伴老儒烹瓠叶,强随举子踏槐花。这篇文章主要讲述输入和输出相关的知识,希望能为你提供帮助。
重定向重定向定义
将原本要输出到屏幕上的内容,重新输入到其他设备中
我们可以理解为改变标准输入、标准输出的方向的就是重定向
重定向的用法
# 1.输出的内容,比较重要的时候,我们想把它保存到文件中
# 2.在后台执行的程序,我不想让它输出的内容,干扰到屏幕
# 3.将定时任务的结果保存下来(备份,是否成功)
# 4.一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出
# 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件。
拓展内容 命令返回值
如何判断一个命令是否执行成功?????
$? 命令的返回值
返回值是0,则代表上一条命令执行成功
返回值非0,则代表上一条命令执行不成功
# 执行成功
[root@ yjc ~ ] # ll zls
-rwxr-xr-x 1 root root 355 Apr 11 18:21 zls
[root@ yjc ~ ] # $?
-bash: 0: command not found
# 执行不成功
[root@ yjc ~ ] # $?
-bash: 2: command not found
输入输出文件描述符
名称 | 文件描述符 | 作用 |
stdin | 0 | 标准输入 |
stdout | 1 | 标准输出 |
stderr | 2 | 错误输出 |
文件名 | 3+ |
# 举例
我们使用cat可以查看文件的内容,cat会直接把这些内容传输到屏幕
*如果我们单使用cat不加参数,它就会从标准输入中读取数据并送到标准输出
[root@ yjc ~ ] # cat
a
a
123
123
^C
输入的内容都重新输出出来
[root@ yjc ~ ] # ps
PID TTYTIME CMD
1288 pts/000:00:00 bash
1337 pts/000:00:00 tail
1338 pts/000:00:00 ps
#查看1337进程中的文件描述符
[root@ yjc ~ ] # ls -l /proc/1337/fd
total 0
lrwx------ 1 root root 64 Apr 14 02:06 0 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 14 02:06 1 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 14 02:06 2 -> /dev/pts/0
lr-x------ 1 root root 64 Apr 14 02:06 3 -> /etc/passwd
lr-x------ 1 root root 64 Apr 14 02:06 4 -> anon_inode:inotify
# 查看标准输入输出设备
[root@ yjc ~ ] # ls -l /dev/std*
lrwxrwxrwx 1 root root 15 Apr 14 01:25 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Apr 14 01:25 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Apr 14 01:25 /dev/stdout -> /proc/self/fd/1
输入输出符号
名称 | 符号 | 作用 |
标准输入重定向 | <
或者0<
<
<
或者0<
<
| 将符号右边的内容交给符号左边的命令 |
标准输出覆盖重定向 | >
或者1>
| 将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中 |
【输入和输出】标准输出追加重定向 | >
>
或者1>
>
| 将原本要输出在屏幕上的正确内容,追加到重定向的文件中 |
错误输出覆盖重定向 | 2>
| 将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中 |
错误输出追加重定向 | 2>
>
| 将原本要输出在屏幕上的错误内容,追加到重定向的文件中 |
标准输出重定向, 先清空,后写入, 如果文件不存在则创建
[root@ yjc ~ ] # test.txt > abc
案例2:标准输出重定向(追加)
标准追加输出重定向, 向配置文件末尾追加内容
[root@ yjc ~ ] # echo "This is network conf" > > if
案例3:错误输出重定向
[root@ yjc ~ ] # useradd yjc
[root@ yjc ~ ] # su - yjc
//将标准输出和标准错误输出重定向到不同文件
[yjc@yjc ~]$ find /etc -name "*.conf" 1> a 2> b
案例4:正确和错误都输入到相同位置
#将标准输出和标准错误输出重定向到同一个文件, 混合输出
[yjc@yjc ~]$ find / -type d -name *zls* & > /tmp/a.txt
[yjc@yjc ~]$ find / -type d -name *zls*> /tmp/a.txt 2> & 1
#合并两个文件内容至一个文件
[yjc@yjc ~]$cat a b > c
#重定向到相同的位置
[root@ yjc ~ ] #find / -type d -name “*zls” > abc 2> & 1
案例5:重定向到空设备/dev/null
dev/null空设备,把产生的输出丢掉
输入重定向
输入重定向:原本从键盘等设备上获得的输入信息,重定向由命令的输出作为输入。
dd if=/dev/zero of=/file1.txt bs=1M count=20
dd if=/dev/zero of=/opt/disk bs=1K count=1024
dd bs=1K count=1024 < /dev/zero > /opt/disk
< adsadasd>
推荐阅读
- 秘籍第五式 DHCP
- 国家公园 生态之窗
- 输入输出
- Linux SRE课程第二周作业
- Linux第五天 网络IP地址配置与日志服务器的搭建
- LNMP生产实战环境
- K8S的配置资源管理
- CentOS 重定向输入输出
- 用shell脚本,创建一个整数和计算器程序并打印数字脚本