重定向

  • wc
输入重定向->语法 wc获取到的三个重要信息 语法结构: wc 文件名称 第一个参数: 文本行数 第二个参数: 文本词数 第三个参数: 文本字节数注意: 输入重定向需要cat配合 cat 文件名 ________________________________________________________ 输出重定向 在temp.sh中添加:echo "重定向到2" > temp2.sh这个是把temp2.sh的内容替换为"重定向到2"echo "重定向到2" >> temp2.sh这个是追加到后面

重定向输入和输出还有错误的概念: shell脚本语言将: 输入,输出,错误分为了三中描述符: 输入: 0 输出: 1 错误: 2 ::::::::::::::::::第一种:STDIN标准输入->0->也就是键盘输入 使用: 直接在终端输入cat 然后输入任何字符点击回车就是打印刚才输入的内容例子: xiaojie@bogon Desktop $ cat 111 111 222 222 :::::::::::::::::::::::::::::::::::::::::::::::::::::: 第二种非标准输入:非STDIN-> 文件输入; 也就是读取文件内容,输出到控制台 例子 xiaojie@bogon Desktop $ touch han.txt xiaojie@bogon Desktop $ open han.txt xiaojie@bogon Desktop $ cat han.txt 111 222 33 4 说明:open打开文件han.txt输入内容; :::::::::::::::::::::::::::::::::::::::::::::::::::::: 第三种: STDOUT-> 标准输出->1->对应终端显示 例子:属于输出 xiaojie@bogon Desktop $ cat han.txt 111 222 33 4 再例子: who >> sh.sh who说明:意思是输出当前用户信息到控制台; 而此处的意思是追加用户信息到sh.sh到文件中;

重定向错误信息->输出到文件中 例子: 如果当前文件shs.sh不存在则执行: xiaojie@bogon Desktop $ ls -l shs.sh 会报如下错误 ls: shs.sh: No such file or directory 此时将错误信息输入到文件中需要执行: ls -l shs.sh 2> sh.sh 如果是覆盖那就使用>如果是追加就使用>>说明: 如果是查看多个文件可以在后面追加例如: ls -l shs.sh shs1.sh shs2.sh

标记重定向 >&2 例如在文件sh.sh中写入内容 echo "我是错误标记" >&2 echo "我是正确的" 在终端输入: ./sh.sh 2> error.sh 结果打开open error.sh可以看到 我是错误标记

永久重定向 exec命令 批量输出 例如:在sh.sh中输入一下内容 exec 1> error.sh echo "你好" echo "我好" echo "大家好"执行文件:./sh.sh 我们会在error.sh中看到 你好 我好 大家好说明: 如果改成错误2是不会打印的必须标记错误标识>&2 exec 2> error.sh echo "你好" >&2 echo "我好" echo "大家好" 以上执行命令只会打印: 你好

创建自定义重定向 exec 3>&1 exec 1>temp.sh echo "你好" echo "你好1" echo "你好2" exec 1>&3 其实我也没咋搞明白这个有什么意义 把3定向到1; 最后再把1给定向到3例子 exec 6<&0 exec 0

创建读写文件描述符 作用:一个文件既可以读也可以写 exec 3<>temp.sh #读取文件内容 read line <&3 echo "Read: $line"#写入内容 echo "My Name is Tom" >&3

创建文件读写描述符"<>" #!/bin/bash #创建文件描述符 exec 3<>temp.sh #循环读取内容 while read line<&3 do echo "读取到的数据: $line" done #向temp.sh写入内容 echo "读取结束" >&3

关闭文件描述符">&-" #!/bin/bashexec 3<>temp.sh while read line<&3 do echo "读取到的数据: $line" done #关闭文件描述符 exec 3>&-echo "读取结束"同时需要说明: 关闭之后是不能再使用3的不然会报错

    推荐阅读