Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43528
  • 博文数量: 26
  • 博客积分: 20
  • 博客等级: 民兵
  • 技术积分: 245
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 15:52
文章分类

全部博文(26)

文章存档

2016年(23)

2015年(3)

我的朋友

分类: LINUX

2016-06-15 00:45:02

       重定向是Linux系统中一个好东西啊,可以对命令执行结果灵活处理且对输入也比较freedom;尤其对新编写的脚本进行排错的方式更是受用

声明:test test1 test2文件存在,badtest文件不存在

1、标准输入
   a. cat  < test 或 cat 0< test
    b. cat << EOF  >>test3
       xxxxxx
       yyyyyy
      EOF
2、ls  -al  badtest  2>test4    会把文件不存在的信息输出到test4中
    ls   -al  test  test1  test2  badtest   2>test6  1>test7   把badtest不存在的信息输出到test6中,test  test1  test2文件属性信息输出到test7中

     这里如果愿意,你也可以将STDERR和STDOUT输出到同一个文件;bash shell提供了特殊的重定向符号 "&>"
    ls  -al test  test1 test2 badtest  &> test7 会将所有的输出结果输出到test7文件中;bash会自动给错误消息分配更高优先级,错误消息集中放到test7前部分,正常输出到test7后部分

   文章开头提到重定向应用到新编写脚本排错中,这里介绍具体操作,很简单就一条命令,这里的关键是命令放置的位置;
将下面两条exec放到脚本开头的话全局生效,通常情况下都是有针对性的对某段shell进行拍错,将exec 2> testerror放置该段脚本之前,对从文档开头到拍错脚本这段代码不生效,本次编写一键安装lnmp时不知道有这个命令导致一大堆的输出结果翻来翻去,还特别容易漏掉,如php redis扩展包等
   exec  1  > testout
   exec  2  >testerror

注:加入用户不想输出任何信息,可以ls -al  > /dev/null   or   ls -al  >/dev/null  2>&1 
这里第2个顺序很重要,先把标准输出重定向到文件,再把标准错误输出到标准输出,因为标准输出已经重定向到文件,所以标准错误与重定向到文件
    
  




阅读(469) | 评论(0) | 转发(0) |
0

上一篇:Linux 函数二三事

下一篇:if 条件判断

给主人留下些什么吧!~~