ファイルの最後の数行を表示したいのですが、列を揃えたいのですが。基本的に、ワードラップを無効にします。
これは簡単です:
tail $FILE | cut -c -80
しかし、私は自分のスクリプトを他のユーザー向けに一般化しようとしているので、実際の端末の幅にカットしたいと思います。
stty size | cut -d" " -f2
だから私はただできると想像します
tail $FILE | cut -c -`stty size | cut -d" " -f2`
しかし、それは機能しません:
stty: standard input: Invalid argument
cut: invalid range with no endpoint: -
Try `cut --help' for more information.
(「新しい」$()展開でも同じ結果になります。)
今、私がそれをエコーすると、それは問題ないようです:
echo cut -c -`stty size | cut -d" " -f2`
cut -c -103
エスケープ文字がないだけですか?それとも、これはどういうわけか不可能ですか?
ありがとう。
それが機能しない理由は、stty
がパイプ内で実行されるためです。したがって、基盤となる端末を「認識」しません。スクリプトでは、端末の幅を次のような変数に格納できます。
size=`stty size | cut -d" " -f2`
次にそれを使用します:
tail $FILE | cut -c -$size
Bashは、パイプラインで使用できるCOLUMNS
変数で画面幅を維持します。
tail $FILE | cut -c -$COLUMNS