当前位置: 首页>>技术教程>>正文


什么是 >>或者双尖括号是什么意思?

, ,

问题描述

这似乎是一个简单的问题,但我找不到任何相关资源

在 C/C++ 中,这意味着将读取的值存储在命令提示符中并将其存储在变量中,

在 Shell 编程中怎么样?

最佳答案

>> 可用于将输出通过管道传输到文本文件,并将附加到该文件中的任何现有文本。

‘any command’ >> 文本文件.txt

将 ‘any command’ 的输出附加到文本文件。

使用 > 将覆盖。

次佳答案

右尖括号符号 (>) 用于将输出重定向到磁盘文件。如果指定的文件不存在,则创建它;如果它确实存在,它将被覆盖。左尖括号符号 (<) 用于重定向来自磁盘文件的输入。要将输出附加到现有文件,请使用双右尖括号 (>>)

第三种答案

>>> 是 FD(文件描述符)的重定向运算符

在 bash 中,你有树标准 FD,它们是标准输入 (strin)、标准输出 (strout) 和标准错误 (strerr)。这些也可以分别由 FD 0、FD 1 和 FD 2 调用。

通常你会让所有 FD 指向终端,但这可以通过使用重定向来改变。

例如,如果您调用:

command > log.txt

您会将输出重定向到文件 log.txt\n这类似于调用:

command 1> log.txt

由于这只会重定向 strout,您仍然可以在终端中看到错误。\n为了将 strerr 重定向到您的 log.txt 文件,您必须运行:

command 2> log.txt

同样,这只会重定向 strerr。如果您希望同时重定向 stdout 和 stderr,您需要使用 >& 命令将 stderr 输出复制到 stdout。

command 1> log.txt 2>&1

要理解此命令,您需要从右到左阅读它,首先将 stderr 复制到 stdout,然后将 strout 重定向到 log.txt 文件。

当您以这种方式使用重定向时,bash 不会查看文件是否存在,而只是创建一个文件,而不管这是否意味着删除现有文件。如果你想避免丢失已经写入日志文件的内容,你可以按照上面解释的相同方式使用 >> 命令,但在这种情况下,所有输出都将附加到现有文件中。

对于它们在 C++ 中与 cin、cout 和 cerr 的使用,我认为 hash 给出了比我更好的答案。

我不是这些方面的专家,所以我可能弄错了一些东西。如需更完整的信息,我建议阅读 Bash guide on Greg’s Wiki

第四种答案

在 C/C++ 中:

在 C/C++ 中,左移和右移运算符使用符号 <<>> 作为按位运算符;对位执行移位操作。 C++ 还在基本的输入/输出操作中使用重载的移位运算符; C++ 中的 >><< 括号用于将数据/信息提取和插入到可能是标准输入/输出、文件的流中。

在 Shell 脚本/编程中:

在 Shell 脚本/编程中,与上面提到的提取/插入操作没有太大区别,>> /<<(> /< 运算符的变体)用于将标准流从/重定向到用户定义的流并执行附加(不同于> /< 覆盖)操作。

参考:

您可能有兴趣阅读:

  • 为什么 cout 和 cin 使用位移位( <<>> )?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13233.html,未经允许,请勿转载。