1、标准输入和标准输出
程序:指令+数据
读入数据:input
输出数据:output
Linux给程序提供了三种I/0设备:
标准输入(stdin)—0 默认接受来自键盘的输入;
标准输出(stdout)–1 默认输出到终端窗口;
标准错误(stderr)—2 默认输出到终端窗口;
I/O重定向:改变默认位置;
Stdout和stderr可以被重定向到文件:
命令 操作符号 文件名
> 把stdout重定向到文件,会覆盖原有文件;
>>把stdout重定向到文件,在原有文件上追加,不覆盖;
2>把stderr重定向到文件,会覆盖原有文件;
2>>把stderr重定向到文件,在原有文件上追加,不覆盖;
&> (2>&1)把正确输出和错误输出都重定向到文件,会覆盖原有文件;
&>> (2>>&1)把正确输出和错误输出都追加重定向到文件,不覆盖原有文件;
():合并多个程序的stdout
例:(cal 2007;cal 2008)> all.txt
为了防止重定向误覆盖原有文件,可以使用set 命令禁止将内容覆盖:
set -c :禁止重定向内容覆盖已有文件,但可追加;
强制覆盖使用 >|
set -c:解除重定向覆盖原有文件,允许覆盖;
2、tr命令:
tr [OPTION]… SET1 [SET2]
-c:取字符集的补集;
-d:–delete:删除所有属于第一字符集的字符;
-s:把连续重复的字符以单独一个字符表示;
-t:–truncate-set1:将第一个字符集对应的字符转化为第二个字符集对应的字符;
3、从文件中导入stdin
使用 < 来重定向标准输入
例:tr ‘a-z’ ‘A-Z’ < /etc/issue该命令把/etc/issue中的小写字母转换成大写字母;
tr -d abc < /etc/fstab 删除fatab文件中的所有abc中任意字符;
[root@centos6 ~]# cat > filea
nihao
linux
haha
按ctrl+d离开,可以使用文件代替键盘输入;
使用 “<<终止词”命令从键盘把多行重定向给stdin,直到终止词位置的所有文件都发送给stdin
例:[root@centos6 ~]#mail -s -u aa <<end
nihao aa
haha
end
输入end回车邮件就会发送;
4、管道:
管道(使用符号 | 表示)用来连接命令:
命令1 | 命令2 |命令3 | …….
将命令1的stdout发送给命令2的stdout,由命令2的stdout发送到命令3的stdout;
Stderr默认不能通过管道转发,可以利用2>&1或|&实现;
命令1 | tee 文件名 | 命令2
例:ls |tee a1.txt | grep -i ^a
把命令1的stdout保存到文件中,然后管道再输入给命令2;
原创文章,作者:zhengyibo,如若转载,请注明出处:http://www.178linux.com/27472