linux Bash Shell IO重定向与管道
来源:互联网 发布:mac win linux 编辑:程序博客网 时间:2024/05/16 04:41
1. 输入与输出
- 标准输入 STDIN
文件描述符:0,默认:键盘输入 - 标准输出 STDOUT
文件描述符:1,默认:屏幕输出 - 错误输出 STDERR
文件描述符:2,默认:屏幕输出
2. 标准输出重定向
覆盖输出 >
追加输出 >>
注意:shell的内嵌命令set可以设置是否允许输出重定向至已存在的文件
set -C:禁止输出重定向至已存在的文件set +C:允许输出重定向至已存在的文件示例:标准输出重定向到文件(实际动作:先创建文件,再向其中写入标准输出内容)
[root@VM_41_201_centos ~]# ls -manaconda-ks.cfg, sh[root@VM_41_201_centos ~]# ls -m > ls.txt[root@VM_41_201_centos ~]# cat ls.txtanaconda-ks.cfg, ls.txt, sh[root@VM_41_201_centos ~]# ls -m >> ls.txt[root@VM_41_201_centos ~]# cat ls.txtanaconda-ks.cfg, ls.txt, shanaconda-ks.cfg, ls.txt, sh
3. 错误输出重定向
覆盖输出 2>
追加输出 2>>
示例:错误输出重定向到文件
[root@VM_41_201_centos ~]# lss 2> ls.error[root@VM_41_201_centos ~]# cat ls.error-bash: lss: 未找到命令[root@VM_41_201_centos ~]# lss 2>> ls.error[root@VM_41_201_centos ~]# cat ls.error-bash: lss: 未找到命令-bash: lss: 未找到命令
4. 合并标准输出与错误输出重定向
覆盖输出 &>
COMMAND &> 文件 COMMAND > 文件 2>&1 #不推荐这种形式,难记,不好理解COMMAND > 文件A 2> 文件B追加输出 &>>
COMMAND &>> 文件 COMMAND >> 文件 2>&1 #不推荐这种形式,难记,不好理解COMMAND > 文件A 2> 文件B示例:合并标准输出与错误输出重定向
# 标准输出[root@VM_41_201_centos ~]# ls -manaconda-ks.cfg, ls.error, ls.txt, sh# 标准输出重定向到文件[root@VM_41_201_centos ~]# ls -m &> ls.txt[root@VM_41_201_centos ~]# cat ls.txtanaconda-ks.cfg, ls.error, ls.txt, sh# 错误输出重定向到文件(追加)[root@VM_41_201_centos ~]# lss &>> ls.txt[root@VM_41_201_centos ~]# cat ls.txtanaconda-ks.cfg, ls.error, ls.txt, sh-bash: lss: 未找到命令# 合并标准输出与错误输出(标准输出,覆盖)[root@VM_41_201_centos ~]# ls -m > ls.txt 2>&1[root@VM_41_201_centos ~]# cat ls.txtanaconda-ks.cfg, ls.error, ls.txt, sh# 合并标准输出与错误输出(错误输出,覆盖)[root@VM_41_201_centos ~]# lss > ls.txt 2>&1[root@VM_41_201_centos ~]# cat ls.txt-bash: lss: 未找到命令# 合并标准输出与错误输出(错误输出,追加)[root@VM_41_201_centos ~]# lsss >> ls.txt 2>&1[root@VM_41_201_centos ~]# cat ls.txt-bash: lss: 未找到命令-bash: lsss: 未找到命令# 合并标准输出与错误输出(错误输出,追加 ,另一种方式)[root@VM_41_201_centos ~]# lsls &>> ls.txt[root@VM_41_201_centos ~]# cat ls.txt-bash: lss: 未找到命令-bash: lsss: 未找到命令-bash: lsls: 未找到命令[root@VM_41_201_centos ~]##使用COMMAND > 文件A 2> 文件B、COMMAND >> 文件A 2>> 文件B的形式[root@VM_41_201_centos ~]# lsanaconda-ks.cfg ls.error ls.txt sh tee.txt[root@VM_41_201_centos ~]# ls -m > A 2> B[root@VM_41_201_centos ~]# ls -mA, anaconda-ks.cfg, B, ls.error, ls.txt, sh, tee.txt[root@VM_41_201_centos ~]# cat AA, anaconda-ks.cfg, B, ls.error, ls.txt, sh, tee.txt[root@VM_41_201_centos ~]# cat B[root@VM_41_201_centos ~]# sl -m > A 2> B[root@VM_41_201_centos ~]# cat A[root@VM_41_201_centos ~]# cat B-bash: sl: 未找到命令[root@VM_41_201_centos ~]# lss -m >> A 2>> B[root@VM_41_201_centos ~]# cat B-bash: sl: 未找到命令-bash: lss: 未找到命令
5. 输入重定向
输入重定向相比较而言,就比较简单了,而且用得相对较少
一般用法:将文件作为输入重定向到命令
命令 < 文件示例:将文件输入重定向至命令wc统计文件行数:
[root@VM_41_201_centos ~]# wc -l < anaconda-ks.cfg148
6. 管道
管道用于连接多个命令(程序),将前一个命令的结果重定向,作为后一个命令的输入
COMMAND1 | COMMAND2 | COMMAND3 | ...示例:将文件内容通过管道重定向到命令(其效果类似输入重定向)
[root@VM_41_201_centos ~]# cat anaconda-ks.cfg | wc -l148
7. 相关命令
以下几个命令经常与IO重定向(> >> 2> 2>> &> &>> )
及管道(|)
结合使用
- tee
read from standard input and write to standard output and files
tee命令比较特殊:从标准输入读取、写入标准输出、写入文件(同时干了3件事,一箭三雕),IO重定向与tee更配哦。
示例:tee命令(执行结果既输出到了指定文件,又输出到了terminal)
[root@VM_41_201_centos ~]# lsanaconda-ks.cfg ls.error ls.txt sh[root@VM_41_201_centos ~]# ls -m | tee tee.txtanaconda-ks.cfg, ls.error, ls.txt, sh[root@VM_41_201_centos ~]# cat tee.txtanaconda-ks.cfg, ls.error, ls.txt, sh[root@VM_41_201_centos ~]#
- tr - translate or delete characters
tr命令用于替换及删除字符
SYNOPSIS
tr [OPTION]... SET1 [SET2]OPTIONS
-c, -C, --complement use the complement of SET1-d, --delete delete characters in SET1, do not translate-s, --squeeze-repeats replace each input sequence of a repeated character that is listed in SET1 with a single occurrence of that character-t, --truncate-set1 first truncate SET1 to length of SET2示例
[root@VM_41_201_centos ~]# cat ls.error-bash: lss: 未找到命令-bash: lss: 未找到命令[root@VM_41_201_centos ~]# cat ls.error | tr b B-Bash: lss: 未找到命令-Bash: lss: 未找到命令
- 输入重定向分界符:<<
允许用户一直输入,直到输入的内容匹配<<指定的字符串
# EOF可以用其它字符代替,习惯用EOF,end of file命令 << EOF示例:
[root@VM_41_201_centos ~]#[root@VM_41_201_centos ~]# cat << EOF> 1.a> 2.b> 3.c> EOF1.a2.b3.c
阅读全文
0 0
- linux Bash Shell IO重定向与管道
- Linux Shell 管道与重定向
- shell 管道与重定向
- bash数据流重定向与管道
- Linux系统介绍(四)IO重定向与管道
- Linux系统介绍(四)IO重定向与管道
- linux shell io重定向
- Linux管道与重定向
- linux重定向与管道
- linux-重定向与管道
- linux 重定向与管道
- linux重定向与管道
- Linux-管道及IO重定向
- Linux IO重定向及管道
- linux笔记-管道及IO重定向
- 管道IO重定向
- 管道与IO重定向之输出重定向
- echo,Shell管道与重定向
- PHP 命名空间与自动加载机制介绍
- 调度 任务 Quartz
- 机器学习之Octave:plot函数绘图
- 他山之石 | 渗透测试中的各种子域名枚举技术介绍
- 数据库高并发解决方法总结
- linux Bash Shell IO重定向与管道
- 青否云
- SurfaceView--扩展SurfaceView的基础模版代码
- jupyter notebook设置远程访问权限
- 553 mail from must equal authorized user解决方法
- Android之DecorView
- 在整个数据库搜索某个字符串在哪个表的哪个字段中
- 蓝桥杯 算法训练 矩阵乘法
- Android studio aidl找不到生成的 class文件