输入输出
重定向
什么是重定向?
重定向的应用场景
- 1.输出的内容,比较重要的时候,我们想把它保存到文件中
- 2.在后台执行的程序,我不想让它输出的内容,干扰到屏幕
- 3.将定时任务的结果保存下来(备份,是否成功)
- 4.一些执行的命令,知道它有可能会有错误输出,但是不想看错误输出
- 5.执行一个命令,可能报错和正确的输出并存,类似错误日志与标准正确日志需要分别输出至不同的文件
命令返回值(扩展)
[root@localhost~]
drwxr-xr-x. 2 root root 6 Mar 21 16:01 ./work
[root@localhost~]
0
[root@localhost~]
ls: cannot access ./work3: No such file or directory
[root@localhost~]
2
输入输出- 文件描述符
- 文件描述符
- 每个文件运行时都会占用文件描述符,就像文件运行是占用磁盘和内存是一样的
- 打开一个文件或程序至少会占用4个文件描述符
名称 |
文件描述符 |
作用 |
stdin |
0 |
标准输入 |
stdout |
1 |
标准输出 |
stderr |
2 |
错误输出 |
文件名 |
3+ |
|
ulimit -n
[root@localhost~]
1024
ps -ef
[root@localhost~]
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 15:54 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 15:54 ? 00:00:00 [kthreadd]
[root@localhost~]
99
[root@localhost~]
[root@localhost~]
root 7327 7166 0 17:24 pts/0 00:00:00 tail -f /var/log/messages
root 7331 7309 0 17:25 pts/1 00:00:00 grep --color=auto tail
[root@localhost~]
dr-xr-xr-x 9 root root 0 Apr 13 17:25 7327
[root@localhost~]
total 0
lrwx------ 1 root root 64 Apr 13 17:29 0 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 13 17:29 1 -> /dev/pts/0
lrwx------ 1 root root 64 Apr 13 17:25 2 -> /dev/pts/0
lr-x------ 1 root root 64 Apr 13 17:29 3 -> /var/log/messages
lr-x------ 1 root root 64 Apr 13 17:29 4 -> anon_inode:inot
可以理解执行tail -f 这条命令占用了 5个文字描述符
[root@localhost~]
lrwxrwxrwx 1 root root 15 Apr 13 15:54 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Apr 13 15:54 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Apr 13 15:54 /dev/stdout -> /proc/self/fd/1

stdin 文件描字符是 0 输出到 /dev/pts/0
stdout 文件描字符是 1 输出到 /dev/pts/0
stderr 文件描字符是 2 输出到 /dev/pts/0
[lx15@localhost~]
[lx15@localhost~]
find: ‘/boot/efi/EFI/centos’: Permission denied
find: ‘/boot/grub2’: Permission denied
find: ‘/proc/tty/driver’: Permission denied
[lx15@localhost~]
/home/oldboy/test1
/home/qxtest
/home/qxtest2
/application/oldboy/test
输入输出符号
名称 |
符号 |
作用 |
标准输入重定向 |
< 或者 0< |
将符号右边的内容交给符号左边的命令 |
|
<< 或者 0<< |
|
标准输出覆盖重定向 |
> 或者 1> |
将原本要输出在屏幕上的正确内容,覆盖到重定向的文件中 |
标准输出追加重定向 |
>> 或者1>> |
将原本要输出在屏幕上的正确内容,追加到重定向的文件中 |
错误输出覆盖重定向 |
2> |
将原本要输出在屏幕上的错误内容,覆盖到重定向的文件中 |
错误输出追加重定向 |
2>> |
将原本要输出在屏幕上的错误内容,追加到重定向的文件中 |
标准输出重定向覆盖

[root@localhost~]
[root@localhost~]
sjkdhaj sajlko
sas
sada
[root@localhost~]
[root@localhost~]
123
标准输出重定向追加

[root@localhost~]
123
[root@localhost~]
[root@localhost~]
123
456
错误输出重定向

[lx15@localhost~]
/var/lib/yum/yumdb/y/93cd28c09a9dd46ac45b0ba169f6d75d9afe79d0-yum-plugin-fastestmirror-1.1.31-50.el7-noarch
/tmp/tsqxtest
/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ntb/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest
/usr/lib64/python2.7/unittest/test
/usr/share/doc/python-pycurl-7.19.0/tests
/usr/share/doc/pygpgme-0.3/tests
/usr/share/doc/yum-plugin-fastestmirror-1.1.31
/home/zls/test1
/home/zls/test2
/home/oldboy/test1
/home/qxtest
/home/qxtest2
/application/oldboy/test
[lx15@localhost~]
正确和错误都输入到相同位置


[lx15@localhost~]
[lx15@localhost~]
2>&1 :就是将错误输出重定向到标准输出1(结果就是标准输出1里面混合了错误输出2的内容)
[lx15@localhost~]
[lx15@localhost~]
这样的情况下 错误输出会覆盖正确输出的内容
不能实现正确输出和错误输出同时放入同一个文件中或设备中
这种情况下一定要2>> 追加进去
重定向到空设备/dev/null

[lx15@localhost~]
[lx15@localhost~]
/var/lib/yum/yumdb/y/93cd28c09a9dd46ac45b0ba169f6d75d9afe79d0-yum-plugin-fastestmirror-1.1.31-50.el7-noarch
/tmp/tsqxtest
/usr/lib/modules/3.10.0-957.el7.x86_64/kernel/drivers/ntb/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest
/usr/lib64/python2.7/unittest/test
/usr/share/doc/python-pycurl-7.19.0/tests
/usr/share/doc/pygpgme-0.3/tests
/usr/share/doc/yum-plugin-fastestmirror-1.1.31
/home/zls/test1
/home/zls/test2
/home/oldboy/test1
[lx15@localhost~]
[lx15@localhost~]
heiheihei.txt
kobe.jpg
kobe.txt
oldboy
oldgirl
passwd.txt
shen
123
456
输入重定向
- 输入重定向,即原本从键盘等设备上获得的输入信息,重定向由命令的输出作为输入
[root@localhost~]
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 0.0292382 s, 35.9 MB/s
dd if=/dev/zero of=/opt/disk bs=1K count=1024
dd </dev/zero >/opt/disk bs=1K count=1024
[root@localhost~]
就是将/dev/zero的标准输入重定向到dd
再将dd的标准输出 重定向到/opt/disk
[root@localhost~]
> 12456
> 789456
> EOF
12456
789456
思维导图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类