Linux的数据流重导向,和管线命令


Linux的数据流重导向,和管线命令
 
数据流重导向(redirect)
名称 简称 代码 使用方式
标准输入(standard input) stdin 0
<,将文件的数据作为其他命令的输入
<<,设定输入结束的字符串 
标准输出(standard output) stdout 1
>,覆盖方式将正确的数据输出
>>,累加方式将正确的数据输出
标准错误输出(standard error output) stderr 2
2>,覆盖方式将错误的数据输出
2>>,累加方式将错误的数据输出
数据流重导向,可以将命令的stdout或stderr分别输出到其他的文件或设备中去。
也可以将文件或设备作为stdin输入,作为命令的输入。
 
多条命令的执行顺序
$?代表命令执行结果,其值为0表示成功。
cmd1;cmd2 分号两边的命令没有相关性,只是按顺序执行
cmd1&&cmd2
1若cmd1执行完毕且正确执行($?=0),则执行cmd2
2若cmd1执行完毕且为错误($?<>0),则不执行cmd2
cmd1||cmd2
1若cmd1执行完毕且正确执行($?=0),则不执行cmd2
2若cmd1执行完毕且为错误($?<>0),则执行cmd2
cmd1&&cmd2||cmd3
1若cmd1的($?=0),则执行cmd2
2若cmd1的($?<>0),则执行cmd3
 
管线命令(pipe)
cmd1|cmd2   cmd1的stdout,作为cmd2的stdin
管线命令仅会处理stdout,对于stderr会予以忽略
管线命令必须能够接受前一个命令的数据成为stdin继续处理才行,也就是说cmd2是有限制的
 
具体管线命令
cut 从每行中,取出符合条件的部分
grep
在一行中,若有符合条件的部分,则输出此行。
支持正则表达式。
sort 对文件中的多行进行排序
uniq 若有重复的多行,只输出第一个
wc 统计文件中的行,单词,字符,字节的数量
tee 从stdin读取,并同时输出到stdout和文件
tr 替换或删除一段文字
col tab转换成多个空格,或man page转换为文本
join 将两个文件中相同数据的两行,连接成一行
paste 直接将两个文件的两行,合并成一行,并以tab分割
expand 将tab转换成空格
split
将一个大文件分割成几个小文件
可用 cat pieces* >> file 来恢复
xargs
从stdin中,以空格或换行来分割出多个参数,给其他命令
许多命令不支持管线,可以通过xargs提供参数
 
减号-   代表stdin或stdout
将/home里面的文件都打包,打包的数据输出到stdout,第一个“-”代表stdout。
经过管线后,解压包的数据从stdin而来,第二个“-”代表stdin
Linux代码  
$ tar -cvf - /home | tar -xvf -  
 

相关内容

    暂无相关文章