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
-
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现