Linux Shell基础知识9 输入输出

9.1 文件描述符

Linux系统将每个对象当做文件处理,并使用文件描述符标识每个文件对象。文件描述符是一个非负整数,从0-8,每个进程最多9个打开文件描述符。其中

0表示标准输入默认键盘,1表示标准输出默认显示器,2表示标准错误输出默认显示器。

9.2 标准输入输出重定向

9.2.1 标准输入重定向

0 < filename

9.2.2 标准输出重定向

1 > filename

9.2.3 标准错误重定向

2 > filename

9.2.4标准输出和标准错误共同重定向到同一个输出文件

& > filename

9.3 在脚本中重定向

9.3.1 临时重定向

echo "content" > &2,将标准输出重定向到标准错误

./test.sh 2>filename,将标准错误重定向到文件

9.3.2 永久重定向

exec 1>filename,通过exec打开一个新的shell,并将标准输出重定向到filename文件

9.3.3 恢复重定向

恢复输出重定向

exec 3>&1

exec 1>filename

……

exec 1>&3

首先,将3重定向到1,然后将1重定向到filename,执行相关操作后,将1重定向到3,恢复重定向。

恢复输入重定向

exec 3<&0

exec 0<filename

……

exec 0<&3

9.4 关闭文件描述符

exec 3>&-,关闭文件描述符3,使之不再在脚本中使用。

9.5 创建读取/写入文件描述符

可以为输入和输出打开同一个文件描述符,可以使用同一个文件描述符从一个文件读取数据,同时向这个文件写入数据。shell维护一个内部指针,指示文件

内部的位置,读取和写入操作都发生在指针上次放置的地方。

9.6 列出开放文件描述符

lsof命令,列出整个Linux系统上所有的开放文件描述符。

/usr/sbin/lsof -a -p $$ -d 0,1,2

使用时要用全路径,-a表示全部,-p表示制定进程,$$表示当前进程,-d表示选择的文件描述符

9.7 禁止命令输出

如果不希望现实任何输出,则可以将输出重定向到/dev/null

9.8 使用临时文件

临时文件目录:/tmp,在Linux启动时自动删除该目录中的任何文件。任何账户都可以读写该目录中的文件。

9.8.1 创建本地临时文件

mktemp testing.xxxxxx,在本地目录创建文件,testing.xxxxxx是文件名模板,mktemp自动替换x为其他字符,并保证文件的唯一性。

9.8.2 在/tmp中创建临时文件

mktemp -t testing.xxxxxx,-t选项强制在/tmp中创建临时文件,该命令放回创建文件的全路径名。

9.8.3 创建临时目录

mktemp -d dir.xxxxxx,创建临时目录。

9.9 记录消息

tee filename,将输入或输出同时定向到两个目的地,一个是标准,一个是指定的。

待人对事不要太计较,如果太计较就会有悔恨!

Linux Shell基础知识9 输入输出

相关文章:

你感兴趣的文章:

标签云: