重定向解释

Unix系统中,任何命令,包括Shell本身,默认情况下总是读取来自终端键盘输入的数据,这个数据输入源通常称作标准输入(stdin),其文件描述符为0.

默认情况下,命令的处理结果总是输出到用户终端的屏幕上,这个输出目的通常称作标准输出(stdout),其文件描述符为1.

另外,在命令的执行期间,如果出现问题,相应的错误信息默认情况下也将输出到用户的终端屏幕上,这个输出目的通常称作标准错误输出(stderr),其文件描述符为2.

 

有上面的基础知识后,我们现在来讨论Linux/Unix系统命令行的精妙之处:输入输出重定向.

 

例如:

ls -l > fname

上述命令就是把ls命令的返回结果输出到fname这个文件中去,但是要注意的事情是输出前将清空原文件内容(如果原文件存在).

使用ls -l >>fname这个命令是将结果附加到原文件后面.

 

grep root < fname

上述命令是在fname这个文件中寻找带有root这个字段的内容,是把标准输入重定向为文件输入.

 

上述命令其实是简化后的形式,其原始形式为

0 < fname   把标准输入重定向到指定文件中

1 > fname   把标准输出重定向到文件中

2 > fname   把标准错误输出重定向到文件中

 

还有一个重要的用法

i>& j   把文件描述符i表述的输出文件重定向到文件描述符j表示的文件

例如:

command_1 2 >& 1   把这个错误命令的标准错误输出重定向到标准输出

 

其原理是用指针实现的.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux shell 定向是一种要的命令行技术,它可以将一个命令的输出流或错误流定向到指定的文件或命令中,也可以将一个文件中的内容输入到一个命令中。 以下是一些常见的定向符号: 1. '>' :将命令的输出流定向到指定文件中,如果该文件已经存在,则会覆盖该文件的内容;如果该文件不存在,则会创建该文件。 例如,将 ls 命令的输出定向到文件 list.txt 中: ``` ls > list.txt ``` 2. '>>' :将命令的输出流添加到指定文件的末尾,如果该文件不存在,则会创建该文件。 例如,将 ls 命令的输出添加到文件 list.txt 的末尾: ``` ls >> list.txt ``` 3. '<' :将文件内容作为命令的输入流。 例如,将文件 list.txt 的内容作为 grep 命令的输入流: ``` grep "test" < list.txt ``` 4. '2>' :将命令的错误流定向到指定文件中,如果该文件已经存在,则会覆盖该文件的内容;如果该文件不存在,则会创建该文件。 例如,将 ls 命令的错误流定向到文件 error.log 中: ``` ls /wrong/path 2> error.log ``` 5. '&' :将命令的输出流和错误流合并为一个流。 例如,将 ls 命令的输出流和错误流合并为一个流,并将其定向到文件 output.log 中: ``` ls /wrong/path &> output.log ``` 以上是一些常见的定向符号及其用法,它们能够帮助我们在命令行中更加灵活地处理输入、输出和错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值