shell编程总结11(重定向)
shell编程总结11(重定向)
心中的理想乡 发表于10个月前
shell编程总结11(重定向)
  • 发表于 10个月前
  • 阅读 1
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

这一章主要说的是重定向的相关内容。

1、Linux下保留的标准的文件描述符:
0    STDIN    标准输入
1    STDOUT    标准输出
2    STDERR    标准错误

2、标准输入:
    使用:cat < testfile
    说明:主要使用<这个符号来进行重定向标准的输入

3、标准输出:
    使用:ls > test2
          who >> test2
    说明:一个>符号表示标准输出重定向到一个文件,两个>>表示重定向标准输出,追加到一个文件的后面

4、标准错误
    使用:ls -al basdfile 2> test4
    说明:文件描述符的数字要仅仅的贴着>这个符号,否则不会起作用,默认情况下,标准错误的输出会重定向到标准输出的上面
    拓展:同时使用重定向标准输出与标准错误:
            ls -al test test2 test3 badtest 2> test6 1> test7
          如果要同时重定向标准输出与标准错误,可以使用&>:
              ls -al test test2 test3 badtest &> test7

5、在脚本中重定向输出:主要分成临时重定向与永久重定向
    (1)临时重定向
            单独一行输出重定向方法:echo "This is an error message" >$2
            说明:注意要在>与文件描述符数字之间输入一个$
    (2)永久重定向
            在脚本中永久重定向方法:使用exec命令
                exec 1>testout
                exec 2>testout1
            说明:标准输出与标准错误输出在脚本中重定向之后,下面的所有输出将会被存放到重定向的地方。另外,一旦重定向之后,就很难变回原来的文职了,但是也是有方法(在下面)
6、输出重定向:与上面类似的使用exec命令
    #!/bin/bash
    exec 0< testfile
    count=1
    while read line
    do
        echo "Line #$count: $line"
        count=$[ $count+1 ]
    done
    说明:只要脚本中有要从标准输入的地方读取数据的(键盘),就会从重定向的地方获取

7、创建自己的重定向:shell脚本中一共有九个文件描述符,0、1、2是输入、输出、错误,其他3~9的我们都可以使用
    恢复文件描述符原先位置的方法:先将一个没用的描述符重定向给目标描述符,最后再把目标描述符重定向回来
    举例:
        #!/bin/bash
        exec 3>&1
        exec 1>test14out
        echo "Thiesdaasd"

        exec 1>&3
    说明:就入上面,输出输入错误输入都可以这样
8、可以同时将输入输出都重定向到同一个文件:
    exec 3<>testfile
9、关闭文件描述符:
    exec 3>&-

10、阻止输出:使用一个null文件/dev/null
    ls -al > /dev/null
    说明:这样的话就可以将ls的标准输出都吞掉了
    另外:我们可以使用这个特殊的文件,进行文件内容清空的工作:
        cat /dev/null > testfile


11、创建临时文件到/temp的系统目录:
        mktemp testing.XXXXXX
    说明:mktemp命令创建的文件不是用umask进行权限分配,直接将读写权限都给属主,其他用户都无法访问(除root用户外),另外系统会保证六个X的地方是唯一的字符,而且这个命令的正确执行返回,直接就是文件的名字,这样有利于在shell脚本中使用
    另外:如果想在/temp目录进行创建的话,直接使用-t参数
12、创建临时目录:
        mktemp -d dir.XXXXXX

13、tee命令:在管道中使用,类似于一个T型接头,将输出一面输出到标准输出一面输出到指定的文件
    举例:
        data | tee testfile
    使用追加文件:
        data | tee -a testfile


 

共有 人打赏支持
粉丝 0
博文 60
码字总数 46203
×
心中的理想乡
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: