GNUに相当するBSD(およびより一般的にはPOSIX)ps --no-headers
は少し面倒ですが、manページから:
-o Display information associated with the space or comma sepa-
rated list of keywords specified. Multiple keywords may also
be given in the form of more than one -o option. Keywords may
be appended with an equals (`=') sign and a string. This
causes the printed header to use the specified string instead
of the standard header. If all keywords have empty header
texts, no header line is written.
そう:
ps -p 747 -o '%cpu=,%mem='
それでおしまい。
任意のコマンドから最初の行を削除する必要がある場合は、tail を使用すると簡単に削除できます。
ps -p 747 -o '%cpu,%mem' | tail +2
または、完全に移植可能にしたい場合は、次のようにします。
ps -p 747 -o '%cpu,%mem' | tail -n +2
このcut
コマンドは、単純な行ベースのコマンドhead
とtail
. (本当に列を切り取りたい場合はうまくいきます…しかし、この場合はおそらくそうではありません。-o
余分なものを渡してそれらを切り取ろうとするよりも、最初に ps に必要なパラメーターを渡す方がはるかに簡単です.)
一方、エコーの引数として何かを eval する必要があると考える理由がわかりません。これは、直接実行するのと同じ効果があり、物事をより複雑にするだけです。たとえば、次の 2 行は同等です。
echo "$(ps -p 747 -o %cpu,%mem)" | cut -c 1-5
ps -p 747 -o %cpu,%mem | cut -c 1-5