如何在组织模式片段中显示 inxi 输出
How to show inxi output in an org-mode snippet
我需要在我的 org-mode 文档中添加一个片段来显示 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 上得到的输出一样接近?
提前致谢!
尝试
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash
inxi -Fxxxza --no-host
#+END_SRC
inxi
默认情况下想要使用颜色代码,因此它会为特定的 terminal/application/what 生成带有转义序列的输出你有没有:查看其手册页以了解 -c <number>
选项的详细信息.您可以将 -c 0
添加到调用中以去除颜色,但至少使输出可读:
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash
inxi -Fxxxza --no-host -c 0
#+END_SRC
您也可以尝试 raw
而不是 drawer
但这有缺点:如果您再次 运行 块,Org 模式会添加另一个 #+RESULTS:
块。
首先,您要确保您没有使用旧版 inxi,那是 3.x 之前的版本,虽然旧版可以正常工作,但没有很多专为处理这些确切情况而设计的功能.鉴于您使用的是 --no-host,我认为但不确定这是否意味着您使用的是 3.x 代 inxi。
如果 inxi 无法在终端或 shell 中检测到它 运行ning,它默认假设它在 IRC 客户端中 运行ning,这会改变行为。
如果输出包含“:”作为键:值分隔符,您可以很容易地看出是否是这种情况,如果没有,它认为它在 IRC 客户端中。但是,如果它是旧版 inxi,则这些行为无法预测,因此您要确保使用的是当前 inxi(3.1.04 是当前最新版本)。
--tty 标志告诉 inxi 就好像它在终端中一样,即使它无法检测到它是,这是为了处理像你这样的情况,inxi 直接在其他程序中使用。
-c0 [即零] 标志告诉它删除所有颜色代码。
如果您正在使用当前的 inxi,或者至少 post 3.x inxi,您可以使用 -y 标志非常准确地分配输出宽度,并且 -y 80 给出非常可读的 80列结果。如果您想要不同形式的输出,例如每行单个键:值对,并且如果您使用的是最新的 inxi,我认为是 3.1.03 或更高版本,您可以使用 -y1 标志来触发它。如果 -y1 returns 错误,则 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 正在被重定向 运行 直接通过其他东西,例如 Chef,使用 -c0 永远不会受到伤害,因为它是绝对覆盖。但在大多数情况下(除非程序直接调用它 运行,而不是通过 shell 或其他此类方法)inxi 现在将检测到它应该删除颜色代码,除非被迫离开他们在那里 -c [非零数].
我需要在我的 org-mode 文档中添加一个片段来显示 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 上得到的输出一样接近?
提前致谢!
尝试
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash
inxi -Fxxxza --no-host
#+END_SRC
inxi
默认情况下想要使用颜色代码,因此它会为特定的 terminal/application/what 生成带有转义序列的输出你有没有:查看其手册页以了解 -c <number>
选项的详细信息.您可以将 -c 0
添加到调用中以去除颜色,但至少使输出可读:
#+BEGIN_SRC sh :results drawer
#!/usr/bin/bash
inxi -Fxxxza --no-host -c 0
#+END_SRC
您也可以尝试 raw
而不是 drawer
但这有缺点:如果您再次 运行 块,Org 模式会添加另一个 #+RESULTS:
块。
首先,您要确保您没有使用旧版 inxi,那是 3.x 之前的版本,虽然旧版可以正常工作,但没有很多专为处理这些确切情况而设计的功能.鉴于您使用的是 --no-host,我认为但不确定这是否意味着您使用的是 3.x 代 inxi。
如果 inxi 无法在终端或 shell 中检测到它 运行ning,它默认假设它在 IRC 客户端中 运行ning,这会改变行为。
如果输出包含“:”作为键:值分隔符,您可以很容易地看出是否是这种情况,如果没有,它认为它在 IRC 客户端中。但是,如果它是旧版 inxi,则这些行为无法预测,因此您要确保使用的是当前 inxi(3.1.04 是当前最新版本)。
--tty 标志告诉 inxi 就好像它在终端中一样,即使它无法检测到它是,这是为了处理像你这样的情况,inxi 直接在其他程序中使用。
-c0 [即零] 标志告诉它删除所有颜色代码。
如果您正在使用当前的 inxi,或者至少 post 3.x inxi,您可以使用 -y 标志非常准确地分配输出宽度,并且 -y 80 给出非常可读的 80列结果。如果您想要不同形式的输出,例如每行单个键:值对,并且如果您使用的是最新的 inxi,我认为是 3.1.03 或更高版本,您可以使用 -y1 标志来触发它。如果 -y1 returns 错误,则 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 正在被重定向 运行 直接通过其他东西,例如 Chef,使用 -c0 永远不会受到伤害,因为它是绝对覆盖。但在大多数情况下(除非程序直接调用它 运行,而不是通过 shell 或其他此类方法)inxi 现在将检测到它应该删除颜色代码,除非被迫离开他们在那里 -c [非零数].