标准I/O与管道

标准I/O与管道

标准输入和输出

读入数据:Input
输出数据:Output

Linux给程序提供三种I/O设备

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

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

把输出和错误重新定向到文件

STDOUT和STDERR可以被重定向到文件
命令 ~ 操作符号 ~ 文件名
支持的操作符号包括:

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

使用>文件内容会被覆盖

set -C 禁止将内容覆盖已有文件,但可追加
使用>| file 强制覆盖
set +C 允许覆盖

使用>>原有内容基础上,追加内容
把输出和错误重新定向到文件
2> 覆盖重定向错误输出数据流
2>> 追加重定向错误输出数据流

标准输出和错误输出各自定向至不同位置

COMMAND > /path/to/file.out 2> /path/to/error.out

合并标准输出和错误输出为同一个数据流进行重定向

&> 覆盖重定向
&>> 追加重定向
COMMAND > /path/to/file.out 2>&1 (顺序很重要)
COMMAND >> /path/to/file.out 2>&1

():合并多个程序的STDOUT

( cal 2007 ; cal 2008 ) > all.txt

tr命令

tr 转换和删除字符
tr [OPTION]... SET1 [SET2]
选项:

-c –C --complement:取字符集的补集
-d --delete:删除所有属于第一字符集的字符
-s--squeeze-repeats:把连续重复的字符以单独一个字符表示
-t --truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
[:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符
[:digit:]:数字 [:graph:]:图形字符 [:lower:]:小写字母
[:print:]:可打印字符 [:punct:]:标点符号 [:space:]:空白字符 [:upper:]:大写字母
[:xdigit:]:十六进制字符

从文件中导入STDIN

使用 < 来重定向标准输入
某些命令能够接受从文件中导入的STDIN tr

‘a-z’ ‘A-Z’< /etc/issue
该命令会把/etc/issue中的小写字符都转换成大写字符

tr –d abc < /etc/fstab

删除fstab文件中的所有abc中任意字符

cat > file

mage
wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入

cat < file1 > file2
cat < file1 >> file1

管道

管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …

将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的 STDIN
STDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
最后一个命令会在当前shell进程的子shell进程中执行
组合多种工具的功能
ls | tr ‘a-z’ ‘A-Z’

less :一页一页地查看输入
ls -l /etc | less
mail: 通过电子邮件发送输入
echo "test email" | mail -s "test" [email protected]
bc:算术运算
echo "2^3" |bc

管道中的符号

示例:

将 /home 里面的文件打包,但打包的数据不是记录到文件,而是传送到 stdout, 经过管道后,将 tar -cvf - /home 传送给后面的 tar -xvf - , 后面的这个 - 则是取 前一个命令的 stdout, 因此,就不需要使用临时file了

tar -cvf - /home | tar -xvf -

重定向到多个目标(tee)

命令1 | tee [-a ] 文件名 | 命令2
把命令1的STDOUT保存在文件中,做为命令2的输入
-a 追加

使用:

保存不同阶段的输出
复杂管道的故障排除
同时查看和记录输出

原文地址:https://blog.51cto.com/14469382/2431581

时间: 2024-10-13 23:05:59

标准I/O与管道的相关文章

Linux——标准I/O以及管道

标准I/O以及管道 目录 一.什么是I/O 二.什么是管道 三.三种I/O设备 四.把I/O输出错误重定向入文件 五.tr 六.从文件中导入STDIN 七.使用管道链接命令 八.tee 一.什么是I/O I/O(input/output),即输入/输出端口. 每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息.CPU与外部设备.存储器的连接和数据交换都需要通过接口设备来实现,前者被称为I/O接口,而后者则被称为存储器        接口.存储器通常在CPU的同步控制下工作,接口电路比

标准I/O与管道;用户、组和权限;文件处理工具及正则表达式总结

四.标准I/O与管道标准输入和输出程序:指令+数据读入数据:Input输出数据:Output?打开的文件都有一个fd: file descriptor (文件描述符)?Linux给程序提供三种I/O设备?标准输入(STDIN)-0 默认接受来自键盘的输入?标准输出(STDOUT)-1 默认输出到终端窗口?标准错误(STDERR)-2 默认输出到终端窗口?I/O重定向:改变默认位置把输出和错误重新定向到文件?STDOUT和STDERR可以被重定向到文件命令 操作符号 文件名支持的操作符号包括: 把

标准 I/O 和管道

标准I/O和管道 > 重定向操作符 >,>> 还能创建新文件 > 覆盖 >> 追加 set -C 禁止将内容覆盖已有文件,但可追加(相当于一个开关) >| file 强制覆盖 set +C 允许覆盖 1> 标准输出重定向到一个文件里面 2> 标准错误重定向到一个文件里面 &> 标准输出和标准错误重定向到一个文件里面 2>&1 把标准错误变换成标准输出输入到文件里 原文地址:https://blog.51cto.com/

4、Bash基础及配置、标准I/O、管道及shell编程基础;

1.Bash基础及配置 站在用户的角度来讲,SHELL的类型: 登录式shell 正常通过某终端登录 su - USERNAME su -l USERNAME 非登录式shell su USERNAME 图形终端下打开的虚拟终端 自动执行的shell脚本 bash的配置文件: 全局配置: /etc/profile, /etc/profile.d/*.sh , /etc/bashrc 个人配置: ~/.bash_profile, ~/.bashrc profile类的文件 1.设定环境变量 2.运

标准I/O和管道

linux给用户提供3种I/O设备: 1.标准输入(STDIN) :0 默认接收键盘的输入 2.标准输出(STDOUT):1 默认输出到终端窗口 3.标准错误(STDERR):2 默认输出到终端窗口 使用>重定向到文件,如果文件已存在会覆盖,而采用>>则会进行累加 错误信息进行重定向要使用2>进行,错误信息> 相当于 space> 使用&> 或 2>&1 可以将所有信息也进行重定向. &>使用方法是 # &> #

第四章标准I/O和管道

笔记整体起始时间:2018年4月2日18:55:25 本章内容 三种I/O设备 把I/O重定向至文件 使用管道 标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd:file  description(文件描述符) Linux给程序提供三种I/O设备 标准输入(STDIN)  -0      默认接受来自键盘的输入 标准输出(STDOUT) -1   默认输出到终端窗口 标准错误(STDERR) -2    默认输出到终端窗口 I/O重定向:改变

初学Linux之标准I/O和管道

标准输入和输出 程序是由指令+数据组成 程序的数据流有三种: 输入数据流:<–标准输入(stdin),一般默认是键盘 输出数据流:–>标准输出(stdout),一般默认到终端窗口 错误输出流:–>标准错误(stderr),一般默认到终端窗口 标准输入:0 标准输出:1 错误输出:2 I/O重定向:改变默认位置 输出重定向:将标准输出(stdout)和标准错误(stderr)重定向到指定位置 格式: 命令 操作符号 文件名 支持的操作符号: > :把标准输出(stdout)重定向到文

Linux学习第五节课-标准I/O和管道

Linux学习第五节课 ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 三十一.标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: file descriptor (文

Linux的标准I/O和管道

标准输入输出与管道  1.标准输入和输出 程序:指令+数据 指令:计算.加减乘除 数据:输入数据.输出数据 2.在Linux中每一个打开的文件都会分配一个当前进程中唯一的文件描述符,用来标识文件的状态 fd:file descripor 3.Linux提供给程序的有三种I/O设备 1.标准输入(stdin)      -0 默认接受来自键盘的输入 2.标准输出 (stdou)    -1 默认输出到终端窗口 3.标准错误   (stderr)  -2 默认输出到终端窗口 4.I/O 重定向:改变