Linux 标准输出到文件

本文介绍在调试RS232过程中遇到的问题及解决方法。通过对比printf与write函数,发现printf并非直接对应标准输出。使用write函数配合>>命令成功将输出保存至文件。

调试RS232的时候,需要将读取RS232的输入,并打印到标准输出,串口不连电脑,看不到结果,于是把标准输出写到文件里面保存,以便查看结果。用printf打印输出,连着电脑可以在屏幕上看到,但是写命令“./ts >> ts.txt”时,调试时并不能写到文件里面。感觉很奇怪,因为 >> 命令是将标准输出写到文件,于是将printf改成write(STDOUT_FILENO,buf,6);之后,在调用命令“./ts >> ts.txt”,就可以写到文件里面了。看来printf并不是标准输出。

命令 >> 是将输出写到文件并追加到文件尾,没有文件的话,新建文件。命令 > 是写到文件,并清除原来的文件信息。

### 重定向标准输出和标准错误输出到文件的方法 在 Linux 系统中,可以通过 I/O 重定向将命令的标准输出(stdout)和标准错误输出(stderr)保存到文件中。这种方法常用于日志记录、调试或自动化任务中。 #### 1. 仅重定向标准输出 如果只需要将标准输出重定向到文件,可以使用 `>` 或 `>>` 操作符。前者会覆盖目标文件,而后者会追加内容: ```bash # 覆盖文件 command > output.txt # 追加到文件 command >> output.txt ``` 这种方式仅处理标准输出,不包括标准错误输出 [^2]。 #### 2. 重定向标准错误输出 若希望单独重定向标准错误输出,可以使用 `2>` 或 `2>>` 操作符: ```bash # 覆盖错误日志文件 command 2> error.txt # 追加错误日志到文件 command 2>> error.txt ``` 该方法适用于调试过程中只关注错误信息的场景 [^3]。 #### 3. 同时重定向标准输出和标准错误输出 为了将标准输出和标准错误输出都写入同一个文件,可以使用以下方式: ```bash # 覆盖文件 command > output.txt 2>&1 # 追加到文件 command >> output.txt 2>&1 ``` 上述命令中,`2>&1` 表示将标准错误输出(文件描述符 2)重定向到标准输出文件描述符 1)当前指向的位置。此操作确保所有输出(正常与错误)都被写入同一文件 [^1]。 #### 4. 忽略标准错误输出 若仅需记录标准输出而不关心错误信息,可将标准错误输出丢弃: ```bash command > output.txt 2>/dev/null ``` `/dev/null` 是一个特殊的设备文件,任何写入它的数据都会被丢弃,因此错误信息不会显示或记录 [^2]。 #### 5. 使用 `&>` 和 `&>>` 简化操作 某些 shell(如 Bash)支持更简洁的语法来同时重定向标准输出和标准错误输出: ```bash # 覆盖文件 command &> output.txt # 追加到文件 command &>> output.txt ``` 这些操作符简化了命令行输入,但需要注意兼容性问题 [^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值