RHCE033(三)-标准I/O、重定向、pipe

Unit 7 Standard Input and Output

*Redirct I/O channels to files
*Connect commands using pipes
*Use the for loops

+++++++++++++++++++++++++++
+Standard Input and Output+
+ I/O重定向         +
+ for loop          +
+++++++++++++++++++++++++++

-----------I/O重定向----------------
Standard Input STDIN  <&<<
Standard Output STDOUT >&>>
Standard error STDERR  2>&2>>


输入:过滤器的数据来源
标准输入stdin(0):代码0,使用“<”和 “<<”,默认是键盘
 
输出:过滤器的数据去向
标准输出stdout (1):代码1,使用“>”和 “>>”默认是终端屏幕

错误输出 :报错讯息与标准输出走不同的I/O通道
标准错误输出stderr(2):代码2,使用“2>”“2>>”默认是终端屏幕

* <与<<;>与>>的区别是>>和<<是追加不覆盖原数据。
* &> redirect all output to file
* 2>&1 作用等同&>,但比&>好,先把stderr输入给stdout,在一同输出,这样就能传送给pipe


eg:
find /etc -name passwd >find.out
find /etc -name passwd 2>/dev/null //空设备
find /etc -name passwd >find.out 2>find.err
find /etc -name passwd &>find.all
find /etc -name passwd 2>&1 | less

 

-------------管道pipe-------------

*pipe |命令只接前一个命令传送过来的标准输出(STDOUT),不能处理标准错误(STDERR)
*可以接多个管道

应用举例:
ls -l /etc | less
echo "test email" |mail -s "test" [email protected]
(cal 2007;cal 2008) | less
*()的改变了优先级,(cal 2007;cal 2008) 的整体结果输出给less

*tee  stores STDOUT of command1 in filename ,相当于一个Debug工具。
command1  | tee filename | command2
ls -l /etc | tee stage1.out | sort

-------------use for loop-----------

for name in
do
done

for num in $(seq 1 10)   //从1到10,步长1
for num in $(seq 1 2 10) //从1到10,步长为2
for num in $(seq 1..10)  //从1到10,步长1
for num in $(seq 10 -2 1) //从10到1,步长2


eg1:
for name in joe jane julie //in后跟的是一个散列
for i in {1..100};do echo $i;done


eg2:
for n in {1..254};do
 host=192.168.16.$n
 ping -c2 $host &> /dev/null
 if [ $?=0 ];then
  echo "$host is Up"
 else
  echo "$host is Down"
 fi
done

 

*关于shell脚本的深入应用,
*二级交互:
<<EOF
EOF

*见bash shell及shell脚本入门

本文出自 “linux_复习” 博客,谢绝转载!

你可能感兴趣的:(职场,管道,休闲,channels,I/O重定向)