2020-04-15 标准输入输出

打开的文件都有一个fd:file diescriptor (文件描述符)

标准输入(STDIN) -0 默认接受来自键盘的输入
标准输出(STDOUT)-1 默认输出到终端窗口
标准错误(STDERR)-2 默认输出到终端窗口

I/O重定向:改变默认位置

/dev/null 是相当于垃圾箱

把输出和错误错误重新定向到文件
1、STDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:

>   把STDOUT重定向到文件
2>  把STDERR重定向到文件
&>  把所有输出重定向到文件

2、 >文件内容会被覆盖
set -c 只能追加
set +c 可以追加

注意图片中的区别 C得到的结果与其他三个不同

image.png

合并标准输出和错误输出为同一个数据流进行重定向
&> 覆盖重定向
&>> 追加重定向
COMMAND > /PATH/TO/file.out 2>&1 (顺序很重要)
COMMAND >> /PATH/TO/FILE.out 2>&1
():合并多个程序的STDOUT
(cal 2007;cal 2008)> all.txt

标准输入 <
标准输入的重定向格式:

command < file

范例: 利用标准输入重定向,实现备份issue文件

cat >issue.bak < /etc/issue #cat 命令本身既需要标准输入,也有标准输出

tr命令可以接受标准输入进行按指定规则进行转换,并输出到终端窗口
tr [OPTION]...SET1[SET2]
-c, --complement:反选设定字符。也就是符合 SET1 的部份不做处理,不符合的剩余部份才进行转换
-d, --delete:删除指令字符
-s, --squeeze-repeats:缩减连续重复的字符成指定的单个字符
-t, --truncate-set1:削减 SET1 指定范围,使之与 SET2 设定长度相等
--help:显示程序用法信息

 tr -d '\n' < bc.txt > bc.txt   #错误操作,输入文件不能作为输出文件 可以写为
          tr -d '\n' < bc.txt > bc.txt.bak

多行标准输入重定向
command <<[-] 分割符
分隔符理论可以是任意普通字符串,但一般习惯的使用EOF (END OF FILE);
分隔符必须独立一行 结束;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,465评论 0 5
  • 本文笔记源自这里——[实验楼]欢迎大家在下面交流其中有问题的地方喜欢请点收藏,每日更新(全部已亲自实践). 一. ...
    东皇Amrzs阅读 4,044评论 7 54
  • 标准输入输出 程序:指令+数据(指令服务于数据) 读入数据:Input 输出数据:Output 打开的文件都有一个...
    圆缘1987阅读 1,591评论 0 1
  • list:1.输入、输出重定向;2.tr 转换或删除字符;3. | 管道;4.tee 重定向到多个目标; 5.rz...
    溪云初起日沉阁l阅读 595评论 0 2
  • Linux重定向是指修改原来默认的一些东西,对原来系统命令的默认执行方式进行改变,比如说简单的我不想看到在显示器的...
    陈sir的知识图谱阅读 1,031评论 0 0