程序是由数据+指令组成的,在程序设计时,默认从标准输入(standard-input)读取数据,向标准输出(standard-output)输出数据,程序执行错误则是输出至标准错误输出(standard-error)
标准输入对于的文件描述符0
输出1
错误输出2
IO重定向就是将程序本来应该0.1.2读取或者输出的数据流重定向至其它文件
>标准输出重定向
> filename ,将本来应输出至标准输出(显示器)的数据流重定向至filename的文件中,如果该文件中已有内容,则会覆盖文件内容
set命令用于查看,定义shell的变量。其中set +C表示禁止覆盖已存在文件(注意:如果该文件存在,不管该文件有没有存内容,都是禁止覆盖的)set -C为关闭这个功能(默认)
>>追加输出重定向
>>filename,如果filename文件中已经存有内容。不覆盖,而是追加至该文件
注意:以上两种方式仅会重定向标准输出,如果程序执行错误,仍会输出到标准错误输出,因为文件描述符分别是1和2,所以属于不同的数据流
2>重定向标准错误输出数据流
2>filename,如果程序执行错误,将其输出定向至filename文件
2>>
&>重定向输出
&>filename,将标准输出和标准错误输出都定向至该文件
&>>filename
有时在脚本中经常见到>/dev/null 2>&1:含义是将标准输出重定向至空设备文件,2>&1表示标准错误输出等同于标准输出,也定向/dev/null
tee命令可以实现将命令执行结果即保存至文件又输出至屏幕一份,借助于管道实现
command | tee filename
字符串替换命令
1、tr,常用于管道操作中。对输出内容的特定字符串进行替换。
#命令 | tr ‘原字符串’ ‘替换字符串’
#命令 | tr -d ‘待删除字符串’ -d删除字符串
2、按特定的字符串排序
#sort [-tkn ] 文件名
-t 设定字段分割符
-k 设定选取的字段
-n 使用数字排序
过滤重复的数据--uniq
uniq用于对输出内容中,相邻的、重复的数据进行过滤,仅保留其中一个。
#命令 | uniq
#命令 | uniq -c 对找到的行进行统计
xargs :是将第一个命令的输出结果交给xargs后所带的命令进行处理。
例:ls a* | tee file1 | xargs rm –t
例2:文件删除提示
read -p “请输入你要删除的文件:” A ;
ls $A | tee file1 | xargs rm –f | echo `cut file1`已被删除 | echo ‘ ’ > file1
<输入重定向
在linux中,有很多程序需要从标准输入读取数据,输入重定向就是改变一个程序的标准输入源
wc < /etc/fstab
<<here document此处生成文档
<<没有追加标准输入一说,<<用于生成文档
cat << EOF会出现一个输入提示,用户输入的内容会以一个文件的形式显示出来,EOF只是一个文件结束符(可以换成其他字符实现),表示至此生成为一个文件
cat >> /tmp/filename <<EOF表示将生成的文档再以输出重定向的方式保存至某文件,在脚本中常用此方法生成文档
管道:将一个命令的标准输出作为另一个命令的标准输入
cat /etc/issue | tr ‘a-z‘ ‘A-Z‘
本文出自 “zxcvbnm玄烨” 博客,请务必保留此出处http://10764546.blog.51cto.com/10754546/1702064
原文地址:http://10764546.blog.51cto.com/10754546/1702064