Linux重定向和管道

来源:互联网 发布:淘宝客服服务流程图 编辑:程序博客网 时间:2024/05/01 05:10
重定向的作用
     将标准输出(即屏幕)的信息指向一个文件,或将标准输入(即键盘)的信息指向一个文件。重定向的代号有>、<。

                                                    文件名             描述符(数字代号)
标准的输入:键盘                         /dev/stdin                0
标准的输出(正常信息):显示器      /dev/stdout              1
错误输出(错误提示):显示器         /dev/stderr               2
注:std是standard标准的缩写,in是input输入的缩写,out是output输出的缩写,err是error的缩写。

查std标准文件:ls   -l   /dev/std*
注:结果中的fd是文件描述符的缩写(file  description)。
--------------------------
输出重定向
>    覆盖
>>  追加
2>>  错误信息追加
&>>  正确和错误信息均写入同一个文件

输出输入重定向
输入重定向
<</div>
<<

特殊设备文件
    /dev/null  黑洞文件,垃圾桶
    /dev/zero 无限0资源设备
    
实例:重定向输出的练习。
date
date  >  a.txt
cal  >> a.txt
cat   a.txt
ls  -ld   /etc   /xxx    查看目录属性,会提示一个错误和一个正确结果
ls  -ld   /etc   /xxx    2>>  a.txt    将错误的信息重定向追加写入到a.txt文件中
ls  -ld   /etc   /xxx    &>>  a.txt    将正确的和错误的信息重定向追加写入到a.txt文件中
cat   a.txt    显示全文内容

ls  -ld  /etc  /xxx   >  a.txt    2>  b.txt   将正确的信息覆盖写入a.txt,错误信息覆盖写入b.txt文件中
cat   a.txt   b.txt

实例:重定向输入的练习。
cat   /etc/hosts
cat   <  /etc/hosts
mail -s "today" root < /etc/hosts    将hosts文件的内容用邮件方式发给root用户
说明:查看邮件用mail命令,输入数字编号查看邮件内容,q键退出

实例:用cat创建新文件并写入多行内容。
cat > a.txt <<EOF      
111
222
333
444
EOF
解释:以上是将EOF   EOF之间的内容覆盖写入到a.txt文件中。其中EOF是命令临时的结束符,也可以用其他字符。

练习:
取消屏幕回显(不显示输入的命令)
stty  -echo

恢复屏幕回显
stty echo

df -h > /tmp/disk.txt  会覆盖原来的数据
df -h >> /tmp/disk.txt 在原来数据的基础上追加数据 不覆盖原来的数据

错误输出重定向
ipconfig 2>/tmp/ip.txt

把正确输出和错误输出存放在不同的位置
ls  /home  >a.txt  2>b.txt

把正确错误输出放在一起
ls /home &>/tmp/all

特殊设备文件
    /dev/null  黑洞文件,垃圾桶
    /dev/zero 无限0资源设备

输入重定向
cat < /etc/passwd
mail -s "today" jim < /tmp/jim.txt

#临时指定命令结束符为EOF,将EOF   EOF之间的内容覆盖写入到某个文件中
cat > a.txt <<EOF      
111
222
333
444
EOF

cat > b.txt    交互式操作
sadhjk
1111
22222
ctrl d 正常结束

交互式操作
进入命令的环境,直到结束该命令才回到命令提示符的环境

非交互式操作
该命令会直接显示结果然后回到命令提示符等待下 一个命令的输入

管道 
管道可以把管道前面进程的输出结果作为管道后面的进程输入内容处理
head -16 /etc/passwd | tail -1
原创粉丝点击