反弹shell文件描述符与重定向
在这里最难理解的就是文件描述符和重定向这两部分
先来讲一下linux的文件描述符,什么是文件描述符,
在linux系统中将所有设备都当做文件来处理,而linux文件描述符用来标识每个文件对象,在我理解中就是描述符用来指定对象的,这样才能井然有序的运行。在linux系统中就连输入设备和输出设备都被当成是文件来处理就拿显示器和键盘输入都拿来当成文件处理,他们都有相应的文件描述符与之相对应。
Linux启动时会默认打开三个文件描述符:
标准输入standard input 0 (默认设备键盘)
标准输出standard output 1(默认设备显示器)
错误输出:error output 2(默认设备显示器)
这些描述符是默认开启的,之后再打开文件的话描述符会依次增加。一条shell命令,都会继承其父进程的文件描述符,所以所有的shell命令都会有这三个默认的描述符。
我来解释一下0,1,2分别的指向,这样会更好理解一点:
0可以理解为我们在与计算机进行交互时的输入,而这个输入默认是指向键盘的
1可以理解为我和计算机交互时的输出,而这个输出默认指向显示器的,也就是我们的屏幕显示。
2可以理解为我和计算机交互时,计算机出现错误的输入,指向的位置和1的是同一位置,都是显示器
文件的所有输入输出都是有该进程的所有打开的文件描述符来控制的(怎么理解呢,默认的都是有上面介绍的一样,0就是键盘输入,1就是输出在显示器上,如果我将我的输入不显示在显示器上而显示在某个文件中,也是利用描述符来规定的,只需要将描述符1重定向到你要输出的文件中)
接下来就来理解如何操作。
Linux中重定向的理解
重定向字面意思就是重新规定一个方向,这里的意思与Linux中大致相同,也差不多是这个意思。
Linux中重定向分为两种:
输入重定向 <
输出重定向 >
重点: