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
ただし、または同じ項目にパイプされると、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に出力をテーブルとしてフォーマットさせるにはどうすればよいですか?
答え1
システムコールの内容を調べると、flatpak search
flatpakコマンドが実際の端末の標準出力を確認し、出力をレイアウトするための幅(文字単位)を取得することがわかります。 (これをテストできます。小さなコンソールウィンドウを作成して同じコマンドを実行します。)flatpak search
もう一度コマンドを実行します。まったく同じ出力が含まれていません! )。
ファイルにリダイレクトするには「表示可能な列数」がないため、Flatpakはディスプレイと同じ良いレイアウトを実行しようとしません。
こんにちはFlim、そうですね。たくさんたとえば、生成された「人のようにきれいな」出力を使用しないように、flatpak search
基本プログラムを直接呼び出す必要があります。しかし:
flatpak
Tabデフォルトでは、↹タブ文字(、、、、必要な名前)を使用して出力から列を区切るため、\t
個々の列を簡単に区切って必要な方法で直接レイアウトできます。たとえば、
COLUMNS=application,version,name
flatpak search --columns "${COLUMNS}" gimp | mlr --itsv --opprint --barred --implicit-csv-header label "${COLUMNS}"
生産する
+------------------------------------+---------+--------------------------------+
| application | version | name |
+------------------------------------+---------+--------------------------------+
| org.gimp.GIMP.Manual | 2.10 | GIMP User Manual |
| org.gimp.GIMP | 2.10.34 | GNU Image Manipulation Program |
| org.gimp.GIMP.Plugin.Resynthesizer | 2.0.3 | Resynthesizer |
| org.gimp.GIMP.Plugin.Resynthesizer | 2.0.3 | Resynthesizer |
| org.gimp.GIMP.Plugin.Lensfun | 0.2.4 | GimpLensfun |
| org.gimp.GIMP.Plugin.Lensfun | 0.2.4 | GimpLensfun |
| org.gimp.GIMP.Plugin.Fourier | 0.4.3 | Fourier |
| org.gimp.GIMP.Plugin.Fourier | 0.4.3 | Fourier |
| org.gimp.GIMP.Plugin.BIMP | 2.6 | BIMP |
| org.gimp.GIMP.Plugin.BIMP | 2.5 | BIMP |
| org.gimp.GIMP.Plugin.LiquidRescale | 0.7.2 | LiquidRescale |
| org.gimp.GIMP.Plugin.LiquidRescale | 0.7.2 | LiquidRescale |
| org.gimp.GIMP.Plugin.GMic | 3.2.6 | G'MIC |
| org.gimp.GIMP.Plugin.GMic | 2.9.6 | G'MIC |
| org.gimp.GIMP.Plugin.FocusBlur | 3.2.6 | FocusBlur |
| org.gimp.GIMP.Plugin.FocusBlur | 3.2.6 | FocusBlur |
| org.gabmus.swatch | 0.1 | Swatch |
| com.github.unrud.djpdf | 0.4.3 | Scans to PDF |
+------------------------------------+---------+--------------------------------+
¹私がした方法:
strace -o /tmp/flatpak.strace flatpak search
/tmp/platpak.straceをすばやく読んでください。
grep ioctl /tmp/strace
私たちに与える
ioctl(1, TIOCGWINSZ, {ws_row=61, ws_col=232, ws_xpixel=2552, ws_ypixel=1403}) = 0
ioctl(1, TCGETS, {c_iflag=ICRNL|IXON|IUTF8, c_oflag=NL0|CR0|TAB0|BS0|VT0|FF0|OPOST|ONLCR, c_cflag=B38400|CS8|CREAD, c_lflag=ISIG|ICANON|ECHO|ECHOE|ECHOK|IEXTEN|ECHOCTL|ECHOKE, ...}) = 0