上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

moreもどき

10行ずつ表示させるmoreもどきの続編です。

tputで端末の表示行数などを取得できることが分かったので、使ってみました。

一度に画面分だけ表示され、qでENTERキーを押すと、そこで中断し、他の文字を入力するとどんどんと表示されます。

bash版は、


#!/bin/bash
step=$(expr $(tput lines) - 2)
num=1
ln=$(wc -l "$1" |cut -f1 -d" ")
while [ $num -lt $ln ]
do
sed -n "$num,$(expr $num + $step) p" $1
read -s b
if [ a"$b" = "aq" ]
then
break
fi
num=$(expr $num + $step + 1)
done
exit 0


です。これを例えば、
fakemore_bash.sh
という名前で保存して実行権限を
$ chmod +x fakemore_bash.sh
で与えて、
$ fakemore_bash.sh 表示させたいファイルの名前
で1画面ずつ表示されます。・・・と言いたいところですが、一行の内容が長くて、端末の横幅を越える場合、そのような行の数の分だけ、上に流れてしまいます。

sh版は、


#!/bin/sh
step=$(expr $(tput lines) - 2)
num=1
ln=$(wc -l "$1" |cut -f1 -d" ")
while [ $num -lt $ln ]
do
sed -n "$num,$(expr $num + $step) p" $1
read -p "## Please enter q if you want to stop displaying: " b
if [ a"$b" = "aq" ]
then
break
fi
num=$(expr $num + $step + 1)
done
exit 0


です。これを例えば、
fakemore.sh
という名前で保存して実行権限を
$ chmod +x fakemore.sh
で与えて、
$ fakemore.sh 表示させたいファイルの名前
で10行ずつ表示されますが、タイプした文字(や、行)が残ってしまいます。
read -s
がsh(Ubuntu10.04)では効かないからです。
関連記事

テーマ : Linux
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

プロフィール

kiyoshi

Author:kiyoshi
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
since 2011/9/25
現在の閲覧者数:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。