- 输入输出
在显示器上显示
重定向到文件中
标准文件描述符
0 STDIN 标准输入
1 STDOUT 标准输出
2 STDERR 标准错误 重定向错误消息时需要制定文件描述符 ls -al badfile 2> test11111
ls -al test test123 2> test11 1> test88 讲错误消息重定向到test11 正常的消息重定向到test88
&> 会把STDERR和STDOUT输出重定向到同一个输出文件,默认会把STDERR放在最前面,方便排错
- 在脚本中重定向输出
临时重定向每行输出
正常运行该脚本两行都显示,因为正常情况下 STDERR和STDOUT都是输出到显示器上的,但是使用输出重定向后就会看出差别,如下所示:
永久重定向脚本中的所有命令
exec命令可以在脚本中永久重定向,如下
exec 1> testout 标准输出重定向
exec 2> testerror 标准错误重定向
exec 必须先定义才能处理接下来的输出
- 在脚本中重定向输入
exec 0< testfile
- 创建自己的重定向
创建输出文件描述符
exec 3>test13out
echo "tttt" >&3
把该行输出到test13out
重定向文件描述符
exec 3>&1 将文件描述符3重定向到文件描述符1的位置
exec 1>testout 将STDOUT重定向到文件
exec 1>&3 恢复
创建输入文件描述符
把标准输入先保存到描述符6,然后把标准输入指定某个文件,完成后,恢复标准输入
创建读写文件描述符
同事读取和写入同一个文件
<>
关闭文件描述符
shell脚本退出时会自动关闭创建的文件描述符
在脚本中需要提前关闭时,需要手动关闭 exec 3>&-
列出打开的文件描述符 lsof命令
阻止命令输出,可以吧输出重定向到 /dev/null这个空文件里面
创建临时文件 /tmp 目录默认是存放临时文件的,可以使用mktemp创建唯一的临时文件
mktemp testing.XXXXXX 一定是6个X 这6个X会生产随机数
mktemp -t test.XXXXXX 会在 /temp 目录下创建一个临时文件
mktemp -d test.XXXXXX 创建临时目录
- 记录消息
tee命令相当于一个T型管道,发给两个目的地,一个目的地是STDOUT,拎一个是tee命令行所指定的文件名,默认是覆盖,如果想要追加的话,需要-a选项
如图所示