Bashで標準出力ライン幅を動的にトリミングする

Bashで標準出力ライン幅を動的にトリミングする

最近このコマンドを試しましたが、ps時には非常に長いパスが次の行(または2行)に渡り、読みにくくなることがありました。ps出力を別のプログラムにパイプして出力をx文字数に制限したいと思います。

これまでに行った作業は次のとおりです。しかし、うまく動作しません。

ps aux | cut -c1-$(stty size | cut -d' ' -f2)

$(stty size | cut -d' ' -f2)これは167と評価されますが、有効な入力ではないようですcut

Bashでこのタイプの構文を操作する方法はありますか?

ベストアンサー1

一部のシェルはzsh自動的にbash変数を端末の幅にmksh設定するため、ここで呼び出す必要はありません。$COLUMNSstty

私が試したすべての実装は、それps自体で端末の幅を照会するための非標準(BSDタイプ)構文をサポートしています。そうではないことに驚きました。私が見るものは何ですかCOLUMNS 環境変数がありますが。

だからあなたはこれを行うことができます:

export COLUMNS; ps aux

そうでなければ、

ps aux | cut -c"1-$COLUMNS"

端末にラップしないように指示することもできます。

tput rmam
ps aux

おすすめ記事