文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>模拟BSD风格的history的一个脚本

模拟BSD风格的history的一个脚本

时间:2008-04-18  来源:sdccf

作者:寂寞烈火   
 
#!/bin/bash
#名称:hist
#BSD风格的history命令
#为避免和真正的history命令冲突,可以在/etc/inputrc
#中加入:Control-a:"/path/hist \C-m" //按ctrl+A启动此history命令
#当然,最好别和其他的ctrl组合冲突
#按键盘说明:^[[A和^[[B上下翻页键,^[由ctrl+v+[得到
#redhat+bash测试通过 :=)
#得到r2007兄指点,特此感谢! ^_^
#BEGIN
#
echo -ne '\e[6n';read -sdR pos
pos=${pos#*[}
line=${pos%%;*}
col=${pos##*;}
hint='History command list>>'
file="$HOME/.bash_history"
cat $HOME/.bash_history
doo () {
while true;do
        echo -ne "\\033[31m\\033[$line;${col}H$hint\\033[0m"
        read -s -n3
        case $REPLY in
        ^[[A)   echo -en "\\033[A";((i--));echo -ne "\\033[$line;${#hint}H$i=>$(sed -n "$i"p $1)\\033[K"
                ;;
        ^[[B)   echo -ne "\\033[B";((i++));echo -ne "\\033[$line;${#hint}H$i=>$(sed -n "$i"p $1)\\033[K"
                ;;
        "")     echo;eval $(sed -n "$i"p $1) 2>/dev/null;break
                ;;
        esac
done
echo -e "\\033[0m"
}
read -s -n1 char
if [[ -n $char ]];then
        sed -n "/^$char/p" $file|tee tmp$$
        i=$(sed -n '$=' tmp$$)
        doo tmp$$
        rm tmp$$ 2>/dev/null
else
        i=$(sed -n '$=' $file)
        doo $file
fi
#END
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载