一、文件描述符

Linux启动后,会默认打开3个文件描述符,分别是:标准输入standard input 0;正确输出standard output 1;错误输出:error output 2

Linux Shell下常用输入输出操作符是:

  1. 标准输入 (stdin) :代码为 0 ,使用 < 或 << ; /dev/stdin -> /proc/self/fd/0 0代表:/dev/stdin
  2. 标准输出 (stdout):代码为 1 ,使用 > 或 >> ; /dev/stdout -> /proc/self/fd/1 1代表:/dev/stdout
  3. 标准错误输出(stderr):代码为 2 ,使用 2> 或 2>> ; /dev/stderr -> /proc/self/fd/2 2代表:/dev/stderr

二、> ,>>

输出重定向:表示把将输出重定向到屏幕或者设备或者文件;其中, >> 表示追加新信息到文件

关闭正确输出和错误输出:ls test.txt test.txt1 1>&- 2>&-
&代表所有输出:ls t.txt t.txt1 &>te.txt
&[-,1,2] 分别表示 关闭对应的标识,正确输出,错误输出

三、<,<<

输入重定向

从文件test.txt获取输入给cat,然后cat输入重定向给text1.txt:cat > text1.txt < test.txt

<< 表示接受一个输入结束的标识,当输入这个标识时结束输入:

cat > t.txt << eof
> q
> a
> z
> eof
# 当控制台输入eof后,结束输入

四、exec绑定重定向

绑定一个新的文件描述符6,并且绑定标准输出(相当于给标准输出保存一个临时copy)

ls /proc/self/fd
0  1  2  3
exec 6>&1
ls /proc/self/fd
0  1  2  3  6
#把标准输出绑定回来:
exec 1>&6
ls /proc/self/fd
0  1  2  3  6
#关闭自定义的文件描述符
exec 6>&-
ls /proc/self/fd
0  1  2  3

⚠️注意:如果直接把标准输出绑定到文件,那么问题就是,再也变不回来了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐