Linux赵

Linux输入与输出

2019-08-09  本文已影响0人  Gq赵

一、什么是重定向?

定义:将原本要输出到屏幕的数据信息,重新定向到某个指定的文件中。(就是执行命令时把输出到屏幕的数据信息放到指定的文件夹中,输出的信息就不会显示到屏幕上)

二、为何要使用重定向?

1.当屏幕输出的信息很重要,而且希望保存重要的信息时;
2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时;
3.系统的例行命令, 例如定时任务的执行结果,希望可以存下来时;
4.一些执行命令,我们已经知道他可能出现错误信息, 想将他直接丢弃时;
5.错误日志与正确日志需要分别输出至不同的文件保存时;

三、常用的符号

3.标准输入\ 标准输出 错误输出
程序运行起来后,变为进程, 会同时打开三个文件 标准输入 标准输出 错误输出. 标准输入
标准输入输出 错误\ 与重定向之间有什么关系?
重定向就是用来改变标准输出 或者标准错误输出的一个指向.
1> 标准输出重定向 (覆盖)
1>> 标准输出重定向 (追加)
2> 标准错误输出重定向 (覆盖)
2>> 标准错误输出重定向 (追加)
&>/dev/null 混合输出 (覆盖)
&>>/tmp/t.log 混合输出 (追加
当运行一个程序时通常会自动打开三个标准文件,分别是标准输入、标准输出、错误输出

文件描述符

四、cat 命令的功能是从命令行给出的文件中读取数据,并将这些数据直接送到标准输出。若使用如下命令:

会把文件/etc/passwd的内容输出显示到屏幕上
[root@ZhaoJianHao-1 ~]# cat /etc/passwd

如果用cat查看文件时没有带上文件名,就会把输入的内容输出到屏幕上。

[root@ZhaoJianHao-1 ~]# cat
1
1
23
23

ps 查看系统进程
[root@ZhaoJianHao-1 ~]# ps
   PID TTY          TIME CMD
 20352 pts/1    00:00:00 bash
 20370 pts/1    00:00:00 ps
Linux查看标准输入输出设备
[root@ZhaoJianHao-1 ~]# ls -l /dev/std*
lrwxrwxrwx. 1 root root 15 Aug  5 20:11 /dev/stderr -> /proc/self/fd/2
lrwxrwxrwx. 1 root root 15 Aug  5 20:11 /dev/stdin -> /proc/self/fd/0
lrwxrwxrwx. 1 root root 15 Aug  5 20:11 /dev/stdout -> /proc/self/fd/1

五、输出重定向

输出重定向,改变输出内容的位置。输出重定向有如下几种方式,如表格所示

类型              操作符            用途
标准覆盖输出重定向         >     将程序输出的正确结果输出到指定的文件中,会覆盖文件原有的内容
标准追加输出重定向         >>      将程序输出的正确结果以追加的方式输出到指定文件,不会覆盖原有文件
错误覆盖输出重定向         2>      将程序的错误结果输出到执行的文件中,会覆盖文件原有的内容
错误追加输出重定向         2>>     将程序输出的错误结果以追加的方式输出到指定文件,不会覆盖原有文件
标准输入重定向           <<      将命令中接收输入的途径由默认的键盘更改为指定的文件或命令
案例1: 标准输出重定向(每次都会覆盖文件)
image.png
[root@ZhaoJianHao-1 ~]# ifconfig eth0 > abc
[root@ZhaoJianHao-1 ~]# cat abc
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.10  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::902a:d748:c923:992d  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:ce:35  txqueuelen 1000  (Ethernet)
        RX packets 107722  bytes 17639774 (16.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 58756  bytes 27878833 (26.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
案例2: 标准输出重定向(会往文件的尾部在添加内容)
image.png
#####标准追加输出重定向, 向配置文件末尾追加内容
[root@ZhaoJianHao-1 ~]# echo "This is network conf" >> if 
[root@ZhaoJianHao-1 ~]# cat if
This is network conf

案例3: 错误输出重定向
image.png
正确输出以及错误输出重定向至一个文件
[root@ZhaoJianHao-1 ~]# useradd xuliangwei
[root@ZhaoJianHao-1 ~]# su - xuliangwei

将标准输出和标准错误输出重定向到不同文件
[root@ZhaoJianHao-1 ~]$ find /etc -name "*.conf" 1>a 2>b
案例4: 正确和错误都输入到相同位置
image.png
将标准输出和标准错误输出重定向到同一个文件, 混合输出
[root@ZhaoJianHao-1 ~]$ find /etc -name "*.conf" &>ab

合并两个文件内容至一个文件
[root@ZhaoJianHao-1 ~]$ cat a b > c
案例5: 正确和错误都输入到相同位置
image.png
#重定向到相同的位置
[root@ZhaoJianHao-1 ~]# ls /root /error >ab  2>&1
案例6: 重定向到空设备/dev/null
image.png
#将产生的任何数据放入黑洞设备,则视为丢弃。
[root@ZhaoJianHao-1 ~]# ls /root /error >ab 2>/dev/null
[root@ZhaoJianHao-1 ~]# ls /root /error >ab &>/dev/null

六、进程管道技术 |

将左边命令的标准输出 ---传递---> 右边命令的标准输入 ---> 标准输出| 错误输出 tee 将左边命令的标准输出保存至文件或打印至终端, 但不影 响管道数据的一个传递
xargs 用于将不支持管道的命令 支持管道 左边命令的输出作 为参数进行传递

上一篇下一篇

猜你喜欢

热点阅读