文件描述符(File Descriptor): OS运行时,会为每一个进程维护一份 FD Table,这份表的每一个item记录进程已经打开文件的一些信息,以便对文件进行相关操作。 而文件描述符就是FD Table的Index。 Linux Shell也是一个进程,由父进程创建,并且沿用了父进程的一些文件描述符作为默认的文件描述符。 每新打开一个shell,总会设定固定的3个文件描述符0,1,2,分别代表标准输入,标准输出和标准错误输出
ll /dev/std*
0 -> /dev/stdin 1 -> /dev/stdout 2 -> /dev/stderr
ll /proc/self/fd #绑定文件描述符
exec 6>test_file
ll /proc/self/fd
ls -l 1>&6 #将命令ls的执行结果保存到test_file当中
cat <&6 #利用fd6,读取文件test_file内容
exec 6<>test_file #重新绑定fd6和test_file,可读可写
exec 6>&- #解除fd6与文件test_file绑定
#用cat创建一个文件,内容从键盘录入,CTRL+D结束
cat > file
cat >file< ~/.bashrc #文件代替标准输入
cat >file<<'eof'
testfile
eof
命令后的-:重定向到标准输入
echo ls | bash -s -
cat <<< ls 右边重定向到标准输入
cat << eof 右边是 token `newline' 键盘录入
cat < file 右边是文件的内容作为标准输入