像提示词一样逐行显示文件的内容

时间:2016-03-06 20:33:09

标签: shell

我曾经看到过有人这样做。我有一个.txt文件,我希望逐行显示,可以通过击键进入下一行。文本的大小也可以更改。

我的档案是这样的:

001: hello world.
002: hello kitty
003: the cat in the hat

我希望bash只显示:

001: hello world.

并且以大字体显示,因此它可以像讲词提示器一样使用箭头键或" n"它会显示:

002: hello kitty

以同样的方式。

也许我在做梦,但我很确定这只是用shell脚本完成的。

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

#!/bin/bash

temp=

exec 10<&0

while read line || [ -n "$line" ]
do
    echo "$line"
    while true
    do
        read -s -u 10 -n 1 temp
        clear
        [[ $temp =~ ^n$ ]] && break
    done
done < "file"

输出:

$ chmod 755 script.bash 
$ cat file
001: hello world.
002: hello kitty
003: the cat in the hat
$ ./script.bash 
001: hello world.
002: hello kitty
003: the cat in the hat
$

注意:您可以使用&#39; n&#39;转到下一行。只有关键。

说明: 第一次使用exec 10<&0我已将标准输入0(键盘)复制到另一个文件描述符10,即键盘输入现在通过10提供给我们的程序,而不是默认0

然后我逐行读取文件并打印每一行。打印每一行后,我使用read命令暂停用户输入,read等待1个字符用户输入(-n 1)并从键盘(-u 10)读取,因为默认stdin fd 0现在指向file。读取密钥后,它会检查密钥是否为&#39; n&#39;使用正则表达式,如果是,它会突破无限循环,如果不是,它会再次循环,直到用户输入&#39; n&#39;。

至于更改字体大小,这对您的发行版/终端非常具体。您可以使用setfont命令。可以在此处找到更多信息:https://askubuntu.com/questions/29328/how-do-i-increase-the-text-size-of-the-text-on-a-consolehttp://www.linuxquestions.org/questions/linux-newbie-8/bash-font-size-831366/