我需要在我的组织模式文档中添加一个显示inxi输出的代码片段。我试着用
#+BEGIN_SRC sh
#!/usr/bin/bash
inxi -Fxxxza --no-host
#+END_SRC但是输出是杂乱的,并且不是它在shell上正常显示的那样。例如。
| 12System: | 12Kernel | 4.19.126-1-MANJARO | x86_64 | 12bits | 64 | 12compiler | gcc | 12v | 10.1.0 | | | | | | | | |有没有办法让它看起来和我在bash上得到的输出一样接近?
提前谢谢你!
发布于 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,因此您的命令将如下所示:
inxi --tty -y80 -c0 --no-host -Faz对于最新的inxi,它被缩短了,因为当没有其他值跟在后面时,-y缺省为80,所以它可以是:
inxi --tty -c0 --no-host -Fazy-y的宽度在标准模式下为80,你想要什么都行,这取决于你想要以什么格式显示数据。
请注意,inxi还提供了json和xml输出选项,但对于大多数人来说,使用这些选项比仅配置输出宽度要难一些。
如果你(或者将来阅读本文的其他人)正在使用旧的2.x.xx类型inxi,它仍然被困在各种发行版冻结的池中,这是一个障碍,因为它没有很好地处理任何这种情况,尽管它确实有超级基本的-y控件,但它们工作得不是很好。它也没有--tty选项,也没有很好的宽度输出控件。
请注意,在3.0版本中,inxi通常会确定其输出被重定向,并自动关闭颜色代码,但这种情况并不总是发生,特别是在您的场景中,inxi直接由其他东西运行,例如,使用-c0不会有任何影响,因为它是绝对覆盖的。但在大多数情况下(除非它是由调用它的程序直接运行,而不是通过外壳或其他类似方法),inxi现在会检测到它应该删除颜色代码,除非被迫将它们保留为-c非零数。
发布于 2020-07-18 00:27:34
试一试
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash
inxi -Fxxxza --no-host
#+END_SRCinxi希望在默认情况下使用颜色代码,因此它为特定的终端/应用程序/内容生成带有转义序列的输出:有关详细信息,请查看其-c <number>选项的手册页。您可以将-c 0添加到调用中,以去除颜色,但至少使输出可读:
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash
inxi -Fxxxza --no-host -c 0
#+END_SRC您也可以尝试使用raw而不是drawer,但这样做有缺点:如果您再次运行该块,组织模式会添加另一个#+RESULTS:块。
https://stackoverflow.com/questions/62954054
复制相似问题