标准文件描述符:
1.STDIN(标准输入)
在使用输入重定向符号( < )时, Linux 会用重定向指定的文件来替换标准输入文件描述符。 它会读取文件并提取数据,就如同它是键盘上键入的。
2.STDOUT(标准输出)
标准输出就是终端显示器。 shell 的所有输出(包括shell 中运行的程序和脚本)会被定向到标准输出。
3.STDERR(标准错误)
默认情况下,错误消息也会输出到显示器输出中
重定向错误:
文件描述符的使用:文件描述符需要紧紧靠在重定向符之前
例如 1> 2> ... 等
1.只重定向错误:
command 2> file 将错误信息写入 file中
例如:由于p1 p2 p3 不在/home文件下,所以无法直接进行访问,需要使用绝对路径。在文件pp1中存放错误信息
2.重定向错误和数据
command 1 > file 2> file1 结果保存到file中,错误信息保存到file1中
&> 会把所有的输出(数据和错误)发送到同一个位置
在脚本中重定向输出
脚本中重定向输出有两种:
- 临时重定向行输出
- 永久重定向脚本中的所有命令
1.临时重定向
在重定向到文件描述符时,你必须在文件描述符数字之前加一个&
command >& 文件描述符
2.永久重定向
使用 exec 命令告诉shell在脚本执行期间重定向某个特定文件描述符
exec 文件描述符 > file
例子:
两种混合使用的例子:
脚本输入重定向
exec 命令允许你将 STDIN 重定向到 Linux 系统上的文件中:exec 0< file
重定向文件描述符
创建输入文件描述符
文件描述符6用来保存STDIN的位置,然后脚本将STDIN重定向到一个文件。 read命令的所有输入都来自重定向后的STDIN
关闭文件描述
exec 文件描述>&-
阻止命令输出
一般将没什么用的数据,通常保存到 /dev/null 上,使其不在显示器上显示。
mktemp创建临时文件:
mktemp命令可以在/tmp目录中创建一个唯一的临时文件,shell会创建这个文件,但不用默认的umask值,会将文件的读和写权限分配给文件的属主,并将你设成文件的属主,权限为600
1.创建本地临时文件
格式: mktemp filename.XXX(X个数>=3,X系统会自动填充,使其为唯一的)
返回相对路径
在/tmp 目录创建临时文件
格式:mktemp -t 会强制在系统临时目录来创建文件
返回绝对路径
创建临时目录
格式: mktemp -d 创建一个临时目录(本地)
记录消息,同时把数据发送到显示器和日志文件
- tee filename 把数据覆盖 (配合管道命令使用)
- tee -a filename 追加数据 (配合管道命令使用)