flatpak
将输出打印为表格:
$ flatpak search firefox
Name Description Application ID Version Branch Remotes
Firefox Fast, Private & Safe Web Browser org.mozilla.firefox 116.0.2 stable flathub
Mullvad B… Free the internet from mass surveillance …ullvad.MullvadBrowser 12.5.2 stable flathub
Mojave-GTK Mojave-Style Theme for GTK Flatpak Applications …tk3theme.Mojave-light 0.1 3.22 flathub
但是,如果它通过管道传输到某些内容,例如cat
or grep
,则输出不再格式化为表,并且表头消失:
$ flatpak search firefox | cat
Firefox Fast, Private & Safe Web Browser org.mozilla.firefox 116.0.2 stable flathub
Mullvad Browser Free the internet from mass surveillance net.mullvad.MullvadBrowser 12.5.2 stableflathub
Mojave-GTK Mojave-Style Theme for GTK Flatpak Applications org.gtk.Gtk3theme.Mojave-light 0.1 3.22 flathub
即使输出通过管道传输到另一个进程,如何强制 flatpak 将输出格式化为表格?
检查系统调用的内容
flatpak search
表明,flatpak 命令检查标准输出是否为实际终端,并获取其宽度(以字符为单位),以布局输出(您可以测试这一点:创建一个较小的控制台窗口,然后运行相同的命令)flatpak search
再次命令:它不包含完全相同的输出!)。由于重定向到文件没有“可显示列数”,因此 Flatpak 不会尝试执行与显示相同的良好布局。
嘿,Flimm,这听起来很像您真的不应该使用例如
flatpak search
产生的“人类漂亮”输出,而应该自己调用底层程序。然而:flatpak
Tab默认情况下,它会使用制表符( 、↹、 ,无论您如何称呼它)分隔输出中的列\t
,这使您可以轻松地分隔各个列并按照您想要的方式自行进行布局。例如:产量
¹ 我是如何做到的:
快速
strace -o /tmp/flatpak.strace flatpak search
阅读 /tmp/flatpak.strace:给我们