2019年12月11日 (shell输入/输出重定向)

Shell输入输出重定向详解
本文深入解析了Shell脚本中输入输出重定向的概念及应用,包括如何改变数据的输入输出方向,使用特殊符号进行文件读写操作,以及创建和执行shell脚本的具体步骤。

 

 今天复习了shell输入/输出重定向,下面分享一下shell输入/输出重定向。

        重定向分为两种,一种输入重定向,一种是输出重定向;从字面上理解,输入输出重定向就是【改变输入与输出的方向】的意思,输入输出方向就是数据的流动方向。

       输入方向就是数据从哪里流向程序。数据默认从键盘流向程序,如果改变了它的方向,数据就从其它地方流入,这就是输入重定向。

       输出方向就是数据从程序流向哪里。数据默认从程序流向显示器,如果改变了它的方向,数据就流向其它地方,这就是输出重定向

    下面是重定向,用文件代替键盘输入输出的实例:

    1.输入重定向符号:"<" 后面接输入的对象

         read var(新建变量) echo $var (查询变量)

         read var   < a.txt   echo $var2

   2.输出重定向

         echo $var2 > b.txt  将查到的变量输出到文件

         注意: ">"  ">>"  "2>"  "&>"

                   ">"  :将输出重定向 

                   ">>"  :保存现有文件内容 尾部追加

                   "2>"  :如果当前重定向出错,将错误输出到文件

                   "&>"  :无论重定向是否成功 都输出到文件

         输入输出重定向的shell脚本文件

         cat > /root/a.sh << EOF

         echo "Hello bash"

    EOF

    解释:cat > /root/a.sh  创建一个sh文件  <<EOF说明接下的文档以EOF结尾

                     echo "Hello bash"  内容

                     EOF结束数据输入

### Shell 输入输出重定向介绍 在 Shell 中,输入输出重定向是一种控制命令输入来源和输出目标的机制。默认情况下,大多数命令的输入来自终端(标准输入,文件描述符 0),输出也显示在终端(标准输出,文件描述符 1),错误信息则通过标准错误(文件描述符 2)输出。通过重定向操作符,可以改变这些默认行为,实现对文件、设备或进程的更灵活控制。 #### 标准输出重定向 标准输出重定向使用 `>` 或 `>>` 操作符。其中,`>` 会覆盖目标文件的内容,而 `>>` 则会将输出追加到文件末尾。例如: ```bash echo "123" > 1.txt ``` 此命令将字符串 "123" 写入文件 `1.txt`,如果文件已存在,则会被覆盖。如果希望保留原有内容并追加新内容,则可以使用 `>>`: ```bash echo "123" >> 1.txt ``` 该命令会将 "123" 添加到 `1.txt` 文件的末尾 [^2]。 #### 标准错误输出重定向 标准错误输出重定向使用 `2>` 或 `2>>` 操作符,分别用于覆盖和追加错误信息到目标文件。例如: ```bash cat 1111.txt 2> 2.txt ``` 如果 `1111.txt` 不存在,`cat` 命令会输出错误信息,并将其重定向到 `2.txt` 文件中。如果希望将错误信息追加到已有文件中,则可以使用 `2>>` [^2]。 #### 同时重定向标准输出和标准错误 可以使用 `&>` 操作符将标准输出和标准错误同时重定向到同一个文件。例如: ```bash ls [12].txt aaa.txt &> 3.txt ``` 此命令将 `ls` 命令的输出(包括标准输出和标准错误)都写入 `3.txt` 文件中。如果需要分别重定向标准输出和标准错误,则可以使用以下方式: ```bash ls [12].txt aaa.txt > 3.txt 2> 11.txt ``` 该命令将标准输出写入 `3.txt`,而将标准错误写入 `11.txt` 。 #### 输入重定向 输入重定向使用 `<` 操作符,用于将文件内容作为命令的输入。例如: ```bash wc -l < 1.txt ``` 此命令将 `1.txt` 文件的内容作为 `wc -l` 命令的输入,统计文件中的行数 [^2]。 #### 特殊重定向操作 - `1>&2`:将标准输出重定向到标准错误。这在脚本中用于将正常输出发送到错误流,以便统一处理。 - `2>&1`:将标准错误重定向到标准输出。这在需要将错误信息与正常输出合并时非常有用。 - `&>filename`:将标准输出和标准错误同时重定向到指定文件,等价于 `>filename 2>&1` [^1]。 ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值