Linux中的数据重定向

Posted 怀瑾握瑜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中的数据重定向相关的知识,希望对你有一定的参考价值。

重定向即指:将数据传送输出到别的地方,如设备、文件等等。那就涉及到将什么数据传送到什么地方的问题。

在linux中命令执行的起源和结果说起,看下图:

Standard input和Standard error都会输出到屏幕上,这样会将屏幕搞的非常混乱,且又是输出内容过多也不易于阅读。甚至有时候的输出内容非常重要需要保存,这是该怎么办??

答案是:数据重定向,将输出内容导入到别的地方。

linux中数据重定向的特殊符号:

  • 标准输入:代码为0,使用<或者<<
  • 标准输出:代码为1,使用1>或者1>>,也可以使用默认表示>或者>>
  • 标准错误输出:代码为2,使用2>或者2>>

>和>>的区别在于,输出内容重导向目的地的方式不一样:

>:以覆盖目的地原有数据的方式重导向
>>:以追加的方式重导向

ls /etc > list

如以上的将列出etc目录下的文件将其写入list文件。

  1. 如果list文件不存在则创建
  2. 清除list文件内容
  3. 将ls的标准输出写入list中

如果不清空list,则以追加的方式写入,使用>>

1.只需要正确的数据

使用/dev/null垃圾桶

#将find的结果中错误的输出丢弃,只显示正确的结果。避免错误数据的干扰
find /home -name .bashrc 2> /dev/null

2.既需要正确的输出又需求错误的输出数据

find /home -name .bashrc > list 2>&1
find /home -name .bashrc &> list

以上将标准输出和标准错误都写入list

3.标准输入<和<<的使用

既然使用<,肯定需要输入的来源。 < file的方式,可以将file的内容作为标准输入。

cat > back <~/.bashrc

以上同时利用 > 和 <(输入和输出重导向)备份.bashrc文件。

cat > list

以上命令将会将屏幕输入(标准输入)作为输出重导向文件list,然后使用ctrl+d退出。但是可以如下写法:

cat > list << "eof"

这样只要屏幕上输入"eof"即可退出。<<代表结束输入。

以上是关于Linux中的数据重定向的主要内容,如果未能解决你的问题,请参考以下文章

Linux中的数据重定向

重定向时如何在 Safari 中保留 uri 片段?

Linkedin OAuth 2.0 重定向 URL 不能包含片段标识符 (#)

301重定向没有片段[重复]

Jsp获取Java的重定向赋值(String)

Linux - Linux中的重定向和管道符