要約: w | tail
78列の後の行を切り取ります。
"w"コマンドを実行すると、期待どおりに機能します。しかし、出力を「テール」にパイプすると、出力は切り捨てられます。78列幅(右余白の後の内容は切り捨て)
私はset
and env
78(または79または80)の値TERM
と(xterm | ansi | vt100)とstty -a
設定tail
とw
(よさそう)を確認しました。 $COLUMNS
209に設定します(しかし問題ありません。100に設定しましたが、結果は同じです)。
私はCentOS 5(カーネル - 2.6.18)を実行しています。tail
そしてバイナリーはw
私にとっては大丈夫だと思う。
/usr/bin/w:ELF 64ビットLSB実行可能ファイル、AMD x86-64、バージョン1(SYSV)、GNU / Linux 2.6.9用、動的リンク(共有ライブラリを使用)、削除済み
CentOS$ cat 80.txt
1 2 3 4 5 6 7 8
012345678901234567890123456789012345678901234567890123456789012345678901234567890
----------+---------+---------+---------+---------+---------+---------+---------+
CentOS$ export COLUMNS=100
CentOS$ w | tail -5 | sed 's/./\./g'
.....................................................................
...............................................................................
...............................................................................
...............................................................................
...............................................................................
ベストアンサー1
Whenの出力がw
端末に入ります。w
列数について端末ドライバを照会し、それに応じて幅を調整します。
出力が端末に送信されない場合(たとえば、パイプに転送する場合)、固定幅80列に戻ります。バージョンprocps
3.3.2から始める$COLUMNS
環境変数を使用してデフォルト値を上書きできます。
一部のシェルは変数を好むzsh
かbash
設定し$COLUMNS
ますが、エクスポートしません。彼らにはできます
COLUMNS=$COLUMNS w | tail
端末の幅に関係なく行が切り捨てられないようにするには、次のようにします。
COLUMNS=512 w | tail
古い端末を持っている場合、w
ワイド端末をエミュレートする以外に選択肢がないかもしれません。そしてzsh
:
zmodload zsh/zpty
zpty W 'stty cols 512 -opost && w'
{zpty -r W} | tail
zpty -d W
端末をエミュレートできる他のもの:
ssh localhost -t 'stty cols 512 -opost && w' | tail
expect -c 'set stty_init {cols 512 -opost}; spawn -noecho w; expect eof' | tail