行数に応じてlessとcatを切替えてくれるスクリプト
30分プログラム、その658。行数に応じてlessとcatを切替えてくれるスクリプトを書いてみました。
ボクは、ファイルの中身を見るとき、画面に収まるならcat、収まらないならlessを使う派です。lessを使うとqを押さないといけないのが面倒なのです。
で、そうなると、まずはcatをして、それでダメならlessをするというムダな手順を踏むことになります。
というわけで、画面に収まるならcatを、収まらないならlessを使うスクリプトを書いてみました。標準入力には対応してないので、パイプに継げることはできませんけど、まあパイプに継げたいことはないと思います。
使い方
# 画面のサイズとhoge.txtの行数に応じて、lessとcatを切り替える
$ scat hoge.txt
ソースコード
#! /usr/bin/perl # -*- mode:perl; coding:utf-8 -*- # # scat.pl - # # Copyright(C) 2009 by mzp # Author: MIZUNO Hiroki / mzpppp at gmail dot com # http://howdyworld.org # # Timestamp: 2009/09/14 21:50:38 # # This program is free software; you can redistribute it and/or # modify it under MIT Lincence. # use strict; use warnings; use Data::Dumper; use List::Util qw(); sub rows(){ my $s = `stty -a`; $s =~ /(\d+) rows/ or die "row error"; $1; } sub is_over($){ my ($rows) = @_; my $n = 0; for(<>){ $n ++; if($rows < $n){ return 1; } } return 0; } my @orig = @ARGV; if(is_over(rows)){ system "less @orig"; }else{ system "cat @orig"; }