Linux中的文件流重定向「>, >>, <,<<」

什么时候需要重定向

  1. 窗口输出的内容很重要,需要将它保存下来的时候;
  2. 后台执行的程序不希望他干扰窗口正常的输出结果时;
  3. 一些系统命令的执行结果,希望他可以保存下来时;
  4. 某些命令可能已知会有某些错误信息时,可以使用「2> /dev/null」将其丢弃;
  5. 错误信息与正确信息需要分别输出时。

输出「>,>>」

当在命令窗口中执行命令之后,结果信息或错误信息就会显示在窗口中,这就是标准输出(stdout)或标准错误输出(stderr)。标准输出的默认输出位置都是命令窗口,有时候为了保存输出结果或让输出结果直接输入到文件中,此时就需要使用到重定向功能。

名称代码符号
标准输出(stdout)1>或>>
标准错误输出(stderr)22>或2>>

其中,>与>>的区别是,前者是覆盖写入,后者是追加写入。

示例:

# 当我们执行`ls`命令查看当前文件夹中的内容时,都会有标准输出将结果显示在命令窗口中。
$ ls
file

# 但当我们使用了流重定向将标准输出的内容重定向到文件中后,命令窗口中就没有显示之前的结果了
$ ls > result

# 此时查看result文件中的内容,发现其中包含了ls命令的执行结果,并且result的文件是先创建,然后再执行ls命令的,因此ls命令看到有两个文件
$ cat result 
file
result

# 再次执行
$ ls > result

# 发现结果仍然是相同的
$ cat result 
file
result

# 更换为追加重定向
$ ls >> result

# 再次查看时发现输出到result文件中的结果是追加的形式了
$ cat result 
file
result
file
result

# 将标准输出和标准错误输出都重定向到同一个文件中
$ ls > result 2>&1
$ ls &> result 

# 丢弃输出结果,此时输出的结果不会显示,也不会输出到文件中,/dev/null会将所有信息都吃掉
$ ls > /dev/null

输入「<,<<」

将标准的键盘输入修改为由文件内容输入。

名称代码符号
标准输入(stdin)0<或<<

示例1:

# 创建文件,由键盘输入内容,输入完成后[ctrl]+d退出输入
$ cat > catfile 
testing
cat file test

# 查看文件内容
$ cat catfile 
testing
cat file test

# 使用输入重定向,创建新文件catfile.bak,内容从catfile中输入
$ cat > catfile.bak < catfile 

# 查看catfile.bak文件,内容与catfile完全相同
$ cat catfile.bak 
testing
cat file test

实例2:


# <<重定向,表示一个输入终止符,当输入遇到此字符时便会退出输入
$ cat > catfile << end
heredoc> endless
heredoc> eend
heredoc> end ss
heredoc> end
# dddd
$ cat catfile
endless
eend
end ss

参考

鸟站-认识与学习BASH

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值