输入和输出

厌伴老儒烹瓠叶,强随举子踏槐花。这篇文章主要讲述输入和输出相关的知识,希望能为你提供帮助。

重定向重定向定义
将原本要输出到屏幕上的内容,重新输入到其他设备中
我们可以理解为改变标准输入、标准输出的方向的就是重定向
重定向的用法

# 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> >
将原本要输出在屏幕上的错误内容,追加到重定向的文件中
输出重定向举例案例1:标准输出重定向(覆盖)

标准输出重定向, 先清空,后写入, 如果文件不存在则创建

[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>




    推荐阅读