Shell数据呈现
输入与输出
-
输入
- 来自键盘输入
- 来自文件输入
-
输出
- 输出到屏幕
- 输出重定向到文件
标准描述文件符
-
描述文件符
-
用于系统标识文件对象,包括输入和输出进程在内,一个进程一次允许有9个描述文件符
-
保留描述文件符
-
0
-
标准输入
- 键盘输入
-
-
1
-
标准输出
- 输出到屏幕
-
-
2
-
标准错误
- 显示错误消息到屏幕
-
-
-
重定向错误
-
只重定向错误消息(即把错误保存输出到文件而非屏幕显示)
command 2 >error -
重定向错误消息和数据(即把错误重定向和正确输出都重定向)
-
重定向到不同文件
command 1>right 2>error -
重定向到相同文件
command &> file-
注意事项
- &>代表命令所有的输出都发送到同一个位置
- 一般错误数据会优先显示
-
-
-
-
脚本中重定向输出
-
临时重定向行输出
-
重定向2文件描述符
-
文件描述符导出到屏幕(默认)
command > &2 -
文件描述符导出到文件
command 2 > file
-
-
-
永久重定向脚本中的命令
-
重定向某个文件描述符
-
首先声明脚本执行期间1文件描述符将会重定向到文件,在具体的执行中,再把需要重定向的内容输出给1文件描述符
exec 1 > file
commad > &1
-
-
-
-
脚本中重定向输入
-
键盘重定向到其他位置
-
首先声明脚本执行期间0文件描述符将会重定向到文件,在具体的执行中,文件输入将会取代键盘输入
exec 0 < file
while read line
-
-
-
自定义文件描述符
-
创建输出文件描述符(3-9)
-
首先声明脚本执行期间3文件描述符将会重定向到文件,在具体的执行中,在把需要进行重定向的内容输出到3文件描述符
exec 3 > file
command > &3
-
-
重定向输出文件描述符
-
从A到B,从B到C,再从B到A
-
通常用于临时重定向输出,然后恢复默认位置
exec 3 > &1
exec 1 > file
exec 1 > &3
-
-
-
重定向输入文件描述符
-
从A到B,从C到A,再从B到A
-
通常用于临时重定向输入,然后恢复默认位置
exec 6 < &0
exec 0 < file
exec 0 < &6
-
-
-
创建文件读写文件描述符
-
仅使用一个文件描述符对文件进行读和写
exec 3 <> file
read line < &3
command >&3-
注意事项
- 使用此方法进行同时读写,系统会维护一个指针,用于记录上一次操作完成后光标所停留的位置,如果忽略这一点,在进行写操作时,系统默认会在光标停留的位置进行写操作,这样会覆盖掉光标所在行的内容
-
-
-
-
关闭文件描述符
-
用于完成文件重定向后,关闭该文件描述符
exec 3 >&--
注意事项
- 一旦关闭文件描述符,将不能进行读写
- 关闭文件描述符后,打开输出文件和重新启用文件描述符进行写操作时,会覆盖原来的输出文件
-
-
-
列出打开的文件描述符
-
lsof命令
-
root用户
lsof-
列出进程
-
当前进程
lsof -p $$ -
其他进程
lsof -p pid
-
-
查看打开的默认文件描述符
lsof -d 0,1,2 -
当前进程打开的默认文件描述符(-a 把 -p和-d取交集)
lsof -a -p $$ -d 0,1,2
-
-
普通用户
/usr/sbin/lsof
-
-
-
阻止命令输出
-
/dev/null回收站
-
不显示标准输出
command > /dev/null -
不显示标准错误
command 2> /dev/null -
不显示标准输出和标准错误
command > /dev/null 2>&1 -
清空文件内容
cat /dev/null > file
-
-
-
创建临时文件
-
进入到/tmp目录创建
- 系统在启动时会自动清空
-
使用mktemp命令创建
-
创建随机组合名字的临时文件
mktemp temp.XXXXXX -
创建显示完整路径的临时文件
mktemp -t temp.XXXXXX -
创建随机组合名字的临时目录
mktemp dir.XXXXXX
-
双向输出
-
tee命令
-
输出屏幕的同时输出到file中
command | tee file -
输出到屏幕的同时追加到file中
command | tee -a file
-

浙公网安备 33010602011771号