当前位置: 首页 > 面试题库 >

在Linux中,如何测试程序的输出是进入实时终端还是文件?

蒙墨竹
2023-03-14
问题内容

当您使用git时,它似乎神奇地知道标准输出是通过管道还是进入文件以及何时将其显示在控制台上。例如,如果您启用了颜色并且

git status

它将为列出的不同类别的文件着色输出。但是,如果您这样做

git status | less

要么

git status > status.txt

它会删除linux颜色格式,并且您只会看到纯色文本。

如何git检测其命令的输出是否要归档到终端?


问题答案:

isatty(int fd)将检查fd是指终端还是其他设备。它是unistd.hGNU C库的一部分。

手册页:http :
//linux.die.net/man/3/isatty

isatty顺便说一句:如果您想从另一个程序中读取程序,但又想以为您的程序是人类,那么有一种方法可以做到。您可以使用伪终端(pty)。例如,expected使用了此技术。



 类似资料:
  • 问题内容: 我希望Java程序具有不同的默认设置(详细程度,可能在支持时显示彩色输出),具体取决于其用途。在C语言中,有一个isatty()函数,如果将文件描述符连接到终端,该函数将返回1,否则返回0。在Java中有与此等效的功能吗?我在JavaDoc中没有看到InputStream或PrintStream的任何内容。 问题答案: 如果已连接,System.console()将返回您的应用程序所连

  • 我使用高斯朴素贝叶斯(Gaussian Naive Bayes)从熊猫(Pandas)数据帧中训练模型,但使用precision\u recall\u曲线时出现错误。文档中说precision\u recall\u曲线将预测的概率作为输入(至少在我读到的时候),因此我希望下面的方法能够起作用(xtrain和xtest分别是736行和184行的熊猫数据帧;ytrain/ytest分别是736行和18

  • 问题内容: 我有兴趣清除由printf语句生成的C程序的输出,该语句长多行。 我最初的猜测是使用 但这产生了 我希望它会产生 有谁知道如何获得后者的结果? 问题答案: 如果您还记得同时删除了控制字符,则可以在端子和管道上获得理想的结果。这是硬编码的两行。

  • 问题内容: 我有一个脚本,输出“ hi”,睡眠一秒钟,输出“ hi”,睡眠1秒,依此类推。现在,我认为我可以使用此模型解决此问题。 现在的问题是,需要完成任务才能显示输出。据我了解,这是由于新产生的进程接受了执行控制。显然,node.js不支持线程,那么有什么解决方案吗?我的想法是可能运行两个实例,第一个实例用于创建任务的特定目的,并考虑到可以实现的目的,将其通过管道将输出传递给第二个实例的进程。

  • 问题内容: 如何将彩色字符打印到支持它的Linux终端? 如何判断终端是否支持颜色代码? 问题答案: 您需要输出ANSI颜色代码。请注意,并非所有终端都支持此功能。如果不支持颜色序列,则会显示垃圾。 例: 此处是ESC字符ASCII27。其后是,然后是零个或多个数字,以分隔,最后是字母。数字描述从该点开始要切换到的颜色和格式。 前景色和背景色的代码为: 此外,您可以使用以下这些: 请参阅Wikip

  • 问题内容: 我有罐子或战争。 我正在以编程方式读取此jar,当我在此jar中找到该jar时,我想再次以编程方式阅读它。 但是JarFile仅提供getInputStream,我无法将其传递给JarFile(File file)构造函数。 如何从罐子中读取罐子? 编辑:我正在考虑以某种方式从类加载器中获取文件。 问题答案: 您可以在文件系统中创建jar文件,例如 并将Stream写入其中。之后,您可