shell编程(4)之重定向及管道

重定向可以用于输入及输出

输出重定向

可以将文件重定向到命令输入

  1. 文件1 > 文件2 #作用:将 文件1 的输出写入到 文件2 中
  2. 文件1 >> 文件2 #作用:在不覆盖 文件2 的前提下,将 文件1 追加到 文件2 中
[local@localhost~]$cat hello
echo "hello"
echo "error: this is a mistake" >&2
[local@localhost~]$./hello 2> errorfile
[local@localhost~]$hello
[local@localhost~]$cat errorfile
[local@localhost~]$error: this is a mistake

ps:显示错误消息时,建议将它们定向到 STDERR 以便更容易区分错误消息和正常状态消息
使用重定向时,如果文件不存在,则会创建出新的文件用来保存输出,如果文件已存在,则会将输出覆盖或追加到此文件中。需要注意的是,如果将 stdout 或 stderr 定向到/dev/null 文件中,则会以静默的方式丢弃掉相应的输出

输入重定向

输入重定向将文件的内容重定向到命令,而非将命令的输出重定向到文件,输入重定向符号是小于号 <

  1. 使用文件进行输入重定向
[local@localhost~]$wc < hello       #wc命令是对文本内容进行统计,输出的三个值分别为文本的行数,文本的词数,以及文本的字节数
 2  9 49
  1. 在命令行中指定的输入重定向(内联输入重定向)
    符号:两个小于号 <<。除了这个符号,你必须指定一个文本标记来划分输入数据的开始和结尾。任何字符串都可作为文本标记,但在数据的开始和结尾文本标记必须一致。
[local@localhost~]$wc << EOF   #这里文本标记就是EOF
> from t1
> from t2
> EOF
 2  4 16

管道

管道使用字符 | 分隔,管道将第一个命令的标准输出连接到下一个命令的标准输入,也就是前一个的输出作为后一个的输入。当重定向与管道组合时,Shell 会首先设置整个管道,然后重定向输入和输出,这也就意味着如果在管道的中间使用了重定向,则输出将保存在文件中,而不是随着管道流向下一个命令。
posted @ 2023-02-27 15:45  by1314  阅读(95)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end