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

10行ずつ表示させるmoreもどき

Ubuntuのinitramfs内のinitで
/bin/sh -i </dev/console >/dev/console 2>&1
で入り込んだ環境で
more
が効かず、一画面ずつではなく、全部一度に表示されて、改行の多いファイルの最初の方が一瞬しか表示されません。
そこで、moreのようなものを作りました。一度に10行だけ表示され、qでENTERキーを押すと、そこで中断し、他の文字を入力するとどんどんと表示されます。

bash版は、


#!/bin/bash
step=10
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 表示させたいファイルの名前
で10行ずつ表示されます。

sh版は、


#!/bin/sh
step=10
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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。