コアLinuxコマンドの統合標準出力データ型はありますか(一貫して簡単な解析のために)?

コアLinuxコマンドの統合標準出力データ型はありますか(一貫して簡単な解析のために)?

すべてのコアLinuxコマンドには異なるstdout形式があるようです。さらに、他のスクリプト/アプリケーションは、これらの形式を常に簡単かつ安全に/一貫して解析できるわけではありません。

簡単な解析のために均一で一貫した出力を提供できるラッパー、仕様、またはライブラリがあります(例:JSONまたはUniqueName:Valueエンコーディング)。

例1:ps -A

    PID TTY          TIME CMD
    558 tty1     00:00:00 startx
    576 tty1     00:00:00 xinit
    577 tty1     00:00:37 Xorg
    590 tty1     00:00:01 awesome
   8281 pts/0    00:00:00 ps

例 2: lshw/lscpu

lshw出力はキー:値ですが、一意のキー:値のペアで解析するのは困難です。

cedar
    description: Computer
    width: 64 bits
    capabilities: smp vsyscall32
  *-core
       description: Motherboard
       physical id: 0
     *-memory
          description: System memory
          physical id: 0
          size: 7936MiB
     *-cpu
          product: Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz
          vendor: Intel Corp.
          physical id: 1
          bus info: cpu@0
          size: 2611MHz
          capacity: 3GHz
<SNIP>

例3:ls -l

total 36
drwxr-xr-x  2 guy guy 4096 Nov 19 08:41 Desktop
drwxr-xr-x  2 guy guy 4096 Dec 26 13:37 Downloads
drwxr-xr-x  3 guy guy 4096 Nov  7 19:39 go
drwxr-xr-x  6 guy guy 4096 Jan 15 12:42 play
drwxr-xr-x 12 guy guy 4096 Jan 16 19:27 repo
drwxr-xr-x  3 guy guy 4096 Oct 15 18:39 RiderProjects
drwxr-xr-x  8 guy guy 4096 Jan 13 17:38 scripts
drwxr-xr-x 12 guy guy 4096 Jan 10 16:48 source
drwxr-xr-x  6 guy guy 4096 Jan  4 14:31 temp

例4.file /bin/bash

/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=6c75f9f0f273cf6549f078b042c0a3f5a04f0357, for GNU/Linux 4.4.0, stripped

代替案:一般的なシェルオブジェクトモデル

一部の殻は次のとおりです。パワーシェルコア機能間の一貫したデータペアのための共通の内部オブジェクトモデルがあります。 Linuxコアユーティリティに似たものはありますか?

関連質問

役に立つコメント

ベストアンサー1

〜のようにタクラスは指摘したここで簡単な答えは「いいえ」です。歴史的に*nixオペレーティングシステムの「the」APIはC APIでした(man 1ではなくman 2で説明されています)。共通のコアシェルインタフェースが実際に役立つ唯一の場所は、C APIにアクセスできない言語です...つまり、シェルスクリプトを意味します。

シェルの主な機能はユーザーインターフェースです。

シェルは必然的にもはや単純なUIではありません。コマンドを相互にリンクし、あるコマンドから別のコマンドに使用するパラメータを取得できることは非常に便利です。言語は次のとおりです。最初からプログラミング言語で設計されています。

言い換えれば、ユニバーサルシェルインタフェースを作成するための市場圧力はありません。

少量のコードで作業を実行するために、迅速で簡単なスクリプトが必要な人はシェル(Bashなど)を使用します。良いAPIで強力なプログラムを書こうとする人は、Pythonのような言語やGoやCのようなコンパイルされた言語を使う傾向があります。


偶発的に解析された出力は通常推奨されませんls。使用するのに最適ワイルドカードケーシング自体内で。

おすすめ記事