首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在组织模式代码片段中显示inxi输出

如何在组织模式代码片段中显示inxi输出
EN

Stack Overflow用户
提问于 2020-07-17 20:33:13
回答 2查看 70关注 0票数 0

我需要在我的组织模式文档中添加一个显示inxi输出的代码片段。我试着用

代码语言:javascript
复制
#+BEGIN_SRC sh
#!/usr/bin/bash

inxi -Fxxxza --no-host

#+END_SRC

但是输出是杂乱的,并且不是它在shell上正常显示的那样。例如。

代码语言:javascript
复制
| 12System:                                      | 12Kernel                       | 4.19.126-1-MANJARO | x86_64           | 12bits          | 64             | 12compiler  | gcc             | 12v      | 10.1.0          |             |                  |              |                |           |          |      |    |

有没有办法让它看起来和我在bash上得到的输出一样接近?

提前谢谢你!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-18 03:34:31

首先,你要确保你使用的不是遗留inxi,也就是3.x之前的版本,尽管遗留版本运行良好,但是没有很多设计用于处理这些场景的特性。考虑到您使用的是--no-host,我认为但不确定这意味着您使用的是3.x代inxi。

如果inxi无法检测到它正在终端或shell中运行,它会默认假定它正在IRC客户端中运行,这会改变行为。

如果输出中包含':‘作为key: value分隔符,那么就很容易看出这种情况,如果没有,它就会认为自己在IRC客户端中。然而,如果它是一个遗留的inxi,这些行为是不可预测的,所以你要确保你使用的是当前的inxi (3.1.04是当前的最新版本)。

--tty标志告诉inxi就像它在终端中一样,即使它不能检测到它是在终端中,也就是处理像您这样的情况,在其他程序中直接使用inxi。

-c0 that's zero标志告诉它删除所有颜色代码。

如果您使用的是current inxi,或者至少是post3.x inxi,那么您可以使用-y标志非常精确地分配输出宽度,并且-y 80会给出非常易读的80列结果。如果您想以不同的形式输出,比如每行一个键:值对,如果您使用的是最新的inxi,我认为3.1.03或更高版本,您可以使用-y1标志来触发。如果-y1返回一个错误,那么inxi就不够新。

-a暗示-xxx,因此您的命令将如下所示:

代码语言:javascript
复制
inxi --tty -y80 -c0 --no-host -Faz

对于最新的inxi,它被缩短了,因为当没有其他值跟在后面时,-y缺省为80,所以它可以是:

代码语言:javascript
复制
inxi --tty -c0 --no-host -Fazy

-y的宽度在标准模式下为80,你想要什么都行,这取决于你想要以什么格式显示数据。

请注意,inxi还提供了json和xml输出选项,但对于大多数人来说,使用这些选项比仅配置输出宽度要难一些。

如果你(或者将来阅读本文的其他人)正在使用旧的2.x.xx类型inxi,它仍然被困在各种发行版冻结的池中,这是一个障碍,因为它没有很好地处理任何这种情况,尽管它确实有超级基本的-y控件,但它们工作得不是很好。它也没有--tty选项,也没有很好的宽度输出控件。

请注意,在3.0版本中,inxi通常会确定其输出被重定向,并自动关闭颜色代码,但这种情况并不总是发生,特别是在您的场景中,inxi直接由其他东西运行,例如,使用-c0不会有任何影响,因为它是绝对覆盖的。但在大多数情况下(除非它是由调用它的程序直接运行,而不是通过外壳或其他类似方法),inxi现在会检测到它应该删除颜色代码,除非被迫将它们保留为-c非零数。

票数 1
EN

Stack Overflow用户

发布于 2020-07-18 00:27:34

试一试

代码语言:javascript
复制
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash

inxi -Fxxxza --no-host

#+END_SRC

inxi希望在默认情况下使用颜色代码,因此它为特定的终端/应用程序/内容生成带有转义序列的输出:有关详细信息,请查看其-c <number>选项的手册页。您可以将-c 0添加到调用中,以去除颜色,但至少使输出可读:

代码语言:javascript
复制
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash

inxi -Fxxxza --no-host -c 0
#+END_SRC

您也可以尝试使用raw而不是drawer,但这样做有缺点:如果您再次运行该块,组织模式会添加另一个#+RESULTS:块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62954054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档