进程 标准输入输出 linux,Linux输入与输出

一、什么是重定向?

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

二、为何要使用重定向?

1.当屏幕输出的信息很重要,而且希望保存重要的信息时;

2.后台执行中的程序,不希望他干扰屏幕正常的输出结果时;

3.系统的例行命令, 例如定时任务的执行结果,希望可以存下来时;

4.一些执行命令,我们已经知道他可能出现错误信息, 想将他直接丢弃时;

5.错误日志与正确日志需要分别输出至不同的文件保存时;

三、常用的符号

< 输入重定向

;   cmd1 ; cmd2 无论前者命令成功还是失败,都执行后者命令

&   将程序放入后台执行 ( screen 将程序放入后台 )

&&  cmd1 && cmd2 前者命令执行成功,后者命令才会执行

||   cmd1 || cmd2 前者命令执行失败,后者命令才会执行

3.标准输入\ 标准输出 错误输出

程序运行起来后,变为进程, 会同时打开三个文件 标准输入 标准输出 错误输出. 标准输入

标准输入输出 错误\ 与重定向之间有什么关系?

重定向就是用来改变标准输出 或者标准错误输出的一个指向.

1> 标准输出重定向 (覆盖)

1>> 标准输出重定向 (追加)

2> 标准错误输出重定向 (覆盖)

2>> 标准错误输出重定向 (追加)

&>/dev/null 混合输出 (覆盖)

&>>/tmp/t.log 混合输出 (追加

当运行一个程序时通常会自动打开三个标准文件,分别是标准输入、标准输出、错误输出

文件描述符

标准输入 0

标准输出 1

错误输出 2

文件名称 3+

f6c93e6c4ba3

image.png

四、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: 标准输出重定向(每次都会覆盖文件)

f6c93e6c4ba3

image.png

[root@ZhaoJianHao-1 ~]# ifconfig eth0 > abc

[root@ZhaoJianHao-1 ~]# cat abc

eth0: flags=4163 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

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: 标准输出重定向(会往文件的尾部在添加内容)

f6c93e6c4ba3

image.png

#####标准追加输出重定向, 向配置文件末尾追加内容

[root@ZhaoJianHao-1 ~]# echo "This is network conf" >> if

[root@ZhaoJianHao-1 ~]# cat if

This is network conf

案例3: 错误输出重定向

f6c93e6c4ba3

image.png

正确输出以及错误输出重定向至一个文件

[root@ZhaoJianHao-1 ~]# useradd xuliangwei

[root@ZhaoJianHao-1 ~]# su - xuliangwei

将标准输出和标准错误输出重定向到不同文件

[root@ZhaoJianHao-1 ~]$ find /etc -name "*.conf" 1>a 2>b

案例4: 正确和错误都输入到相同位置

f6c93e6c4ba3

image.png

将标准输出和标准错误输出重定向到同一个文件, 混合输出

[root@ZhaoJianHao-1 ~]$ find /etc -name "*.conf" &>ab

合并两个文件内容至一个文件

[root@ZhaoJianHao-1 ~]$ cat a b > c

案例5: 正确和错误都输入到相同位置

f6c93e6c4ba3

image.png

#重定向到相同的位置

[root@ZhaoJianHao-1 ~]# ls /root /error >ab 2>&1

案例6: 重定向到空设备/dev/null

f6c93e6c4ba3

image.png

#将产生的任何数据放入黑洞设备,则视为丢弃。

[root@ZhaoJianHao-1 ~]# ls /root /error >ab 2>/dev/null

[root@ZhaoJianHao-1 ~]# ls /root /error >ab &>/dev/null

六、进程管道技术 |

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

xargs 用于将不支持管道的命令 支持管道 左边命令的输出作 为参数进行传递

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值