Linux反弹shell(一)文件描述符与重定向

参考网址:

1)更详细网址:https://xz.aliyun.com/t/2548

版权声明:本文为CSDN博主「liupeifeng3514」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/liupeifeng3514/article/details/79711694

 

=====================================

 

1,三个文件描述符,分别是:

标准输入standard input 0 (默认设备键盘)
标准输出standard output 1(默认设备显示器)
错误输出:error output 2(默认设备显示器)

2,重定向

重定向主要分为两种(其他复杂的都是从这两种衍生而来的):

(1)输入重定向 < <<
(2)输出重定向 > >>

   3)< 是对标准输入 0 重定向 ,> 是对标准输出 1 重定向

 4)重定向是对文件描述符的操作

3,输入重定向<

 

格式:cat 0< file 或 cat < file(以只读的方式打开)

4,输出重定向

格式:echo hello 1> file 或 echo hello > file(以只写的方式打开)

5,标准输出与标准错误输出重定向

格式:mkdir  &> file

 

 

 

 

将错误提示和标准输入都定向到file文件

图:

 

6,文件描述符的复制

 

格式: [n]<&[m] / [n]>&[m] (这里所有字符之间不要有空格)

说明:

1)这里两个都是将文件描述符 n 复制到 m ,两者的区别是,前者是以只读的形式打开,后者是以写的形式打开

2>1 2>&1 的写法有什么区别:

  • 2>1的作用是把标准错误的输出重定向到1,但这个1不是标准输出,而是一个文件!!!,文件名就是1;
  • 2>&1的作用是把标准错误的输出重定向到标准输出1,&指示不要把1当作普通文件,而是fd=1即标准输出来处理。

一般将2>&1写在后面,写在中间,会将标准输出或标准错误输出指定为文件名。

可以用下面实例理解

ls 2>1测试一下,不会报没有2文件的错误,但会输出一个空的文件1;

ls xxx 2>1测试,没有xxx这个文件的错误输出到了1中,2表示错误输入,1表示文件名;

ls xxx 2>&1测试,不会生成1这个文件了,不过错误跑到标准输出了;

ls xxx >out.txt 2>&1,实际上可换成 ls xxx 1>out.txt 2>&1;重定向符号>默认是1,错误和输出都传到out.txt了。

 

posted @ 2021-06-11 15:28  A思  阅读(133)  评论(0编辑  收藏  举报