|NO.Z.00038|——————————|LinuxShell|——|Linux&Shell$Bash功能.V04|——|输入输出重定向|
一、输入输出重定向:Bash 的标准输入输出
设备文件名 | 文件描述符 | 类型 | |
键盘 | /dev/stdin | 0 | 标准输入 |
显示器 | /dev/stdout | 1 | 标准输出 |
显示器 | /dev/stderr | 2 | 标准错误输出 |
二、输出重定向
符号 | 作用 | |
标准输出重定向 | 命令>文件 | 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中。 |
命令>>文件 | 以追加的方式,把命令的正确输出输出到指定的文件或设备当中 | |
标准错误输出重定向 | 错误命令2>文件 | 以覆盖的方式,把命令的错误输出输出到指定的文件或设备当中。 |
错误命令2>>文件 | 以追加的方式,把命令的错误输出输出到指定的文件或设备当中 | |
正确输出和错误输出同时保存 | 命令>文件2>&1 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 |
命令>>文件2>&1 | 以追加的方式,把正确输出和错误输出都保存到统一个文件当中 | |
命令&>文件 | 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令&>>文件 | 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 | |
命令>>文件12>>文件2 | 把正确的输出追加到文件1中,把错误的输出追加到文件2中 |
三、输入输出实验
### --- 覆盖输出
~~~ 重定向:是指把它的输出方式不再输出到显示器上,而是输出到文件当中;输出重定向
~~~ 单大于号是覆盖:
[root@localhost ~]# pwd > abc
[root@localhost ~]# cat abc
/root
### --- 追加内容
~~~ 输出重定向可以用来保存系统日志
[root@localhost ~]# pwd >> abc
[root@localhost ~]# cat abc
/root
/root
### --- 把报错信息写入到配置文件中
### --- 文件中也没有保存
~~~ 注:报错信息直接输出到屏幕上,命令未找到
[root@localhost ~]# lskblkg >> bac
-bash: lskblkg: command not found
[root@localhost ~]# cat abc
### --- 记录报错信息
~~~ 注:错误信息保存在了配置输出文件中,但是错误输出格式不合理
[root@localhost ~]# lskblkg 2>> abc
[root@localhost ~]# cat abc
/root
/root
-bash: lskblkg: command not found
### --- 错误输出与正确输出
~~~ # 错误输出:
~~~ 把命令的正确输出写入到文件中,再把命令的错误输出保存在正确输出中
~~~ 命令>文件2>&1
~~~ 命令&>>文件
[root@localhost ~]# ls >> abc>&1
[root@localhost ~]# cat abc
abc
bac
hello.sh
### --- 假设把命令写错了,把错误输出保存在正确输出中
~~~ 注:错误输出追加到配置文件中
[root@localhost ~]# lskgjd >> abc 2>&1
[root@localhost ~]# cat abc
abc
bac
hello.sh
-bash: lskgjd: command not found
### --- 正确输出
[root@localhost ~]# pwd &>>abc
[root@localhost ~]# cat abc
/root
### --- 错误输出
~~~ 注意:在写正确输出的时候需要加入空格,
~~~ 错误输出不需要空格,若是错误加入空格,会报错
[root@localhost ~]# pwdadfdf &>>abc
[root@localhost ~]# cat abc
/root
-bash: pwdadfdf: command not found
lskgjd >> abc # 正确输出段 2>&1 # 错误段
### --- 把正确输出和错误输出写入到不同的文件中
~~~ 可以用来分别保存正确日志和错误日志
[root@localhost ~]# ls >> ok 2>>err
[root@localhost ~]# cat ok
ok
[root@localhost ~]# lslll >> ok 2>>err
[root@localhost ~]# cat err
-bash: lslll: command not found
四、输入输出重定向实验
### --- 输入重定向
~~~ # 选项:
~~~ -c 统计字节数
~~~ -w 统计单词数
~~~ -l 统计行数
[root@localhost ~]# wc [选项] [文件名]
### --- 输出重定向实验
### --- wc统计abc文件
[root@localhost ~]# wc abc
2 6 41 abc
### --- 也可以使用<来统计
[root@localhost ~]# wc -l abc
2 abc
[root@localhost ~]# wc < abc
2 6 41
### --- 统计数量
[root@localhost ~]# wc << EOF
> 1111111
> 2222222
> 3333333
> 4444444
> EOF
4 4 32
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
cdv008-shell
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通