Shell 基础 -- 输入、输出重定向

Linux文件描述符与重定向
本文详细介绍了Linux系统中的文件描述符概念,包括标准输入、标准输出和标准错误流,以及如何通过重定向操作符(>和>>)改变程序的输入输出流向,实现更灵活的文件读写和错误处理。

一、文件描述符

  文件描述符是一个非负的整数,Linux 中每个运行中的程序(进程),都有一些与之关联的文件描述符,你可以使用文件描述符来访问打开的文件或设备。在标准 I/O 库中,与文件描述符对应的是流。当一个程序开始运行时,它一般会有 3 个已经打开的文件描述符,分别对应三个文件流:

文件描述符
0标准输入流(stdin)
1标准输出流(stdout)
2标准错误流(stderr)

  显然,还有其他的文件描述符,这里暂时不做讨论。一般情况下,一个程序打开时,会去读取标准输入,将结果写入标准输出,将错误结果写入标准错误输出(默认的标准输入、标准输出和标准错误输出都是终端):

   如图上图所示,cat 命令后面没有接参数,则默认读取标准输入,将结果输出到标准输出。很多情况下,我们不希望从标准输入获取程序输入,也不想将程序结果写入标准输出,将错误结果写入到标准错误输出,这时就可以使用重定向来完成相应的需求。

 

二、输出重定向

  输出重定向使用 > 或 >> 操作符。其中 > 操作符表示覆盖输出;>> 操作符表示将输出内容附加到文件尾。

2.1 将标准输出重定向到文件

command > file
command >> file

   使用 command > file 命令,可以将 command 的标准输出修改为 file,若当前目录下没有 file 文件,则会创建该文件;若已经存在 file 文件,则会覆盖 file 文件,file 文件原本的数据将会丢失。

   使用 command >> file 命令,可以将 command 的标准输出修改为 file,若当目录下没有 file 文件,则创建该文件;若已经存在 file 文件,则将程序结果附加到文件尾。

   同样的,以 cat 命令为例:

cat > newfile
My name is tongye
How are you
^D            # Ctrl + D,结束输入
cat >> newfile
I am fine
^D

  结果如下:

2.2 将标准错误输出重定向到文件

command 2> file
command 2>> file

   使用 2> 或 2>> 来对标准错误输出进行重定向。

2.3 将标准输出和标准错误输出重定向到不同文件

command > file1 2> file2

   该命令将标准输出和标准错误输出分别重定向到不同文件。

2.4 将标准输出和标准错误输出重定向到同一文件

command &> file

command > file 2>&1  # 将先将标准输出重定向到文件 file,然后将标准错误重定向到标准输出

   这两个命令都可以将标准输出和标准错误输出重定向到同一个文件。其中, &> 是 bash 提供的一个特殊的重定向符号。

  在重定向到文件描述符时,必须在文件描述符数字之前加上 & 符号

三、输入重定向

  使用 < 操作符进行输入重定向:

command < file

  该命令可以将 command 的标准输入改为从文件 file 输入。  

 

转载于:https://www.cnblogs.com/tongye/p/10527479.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值