📜  时间机器 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:26:18.962000             🧑  作者: Mango

时间机器 - Shell/Bash

简介

时间机器是一个基于Shell/Bash语言编写的时间管理工具,可以帮助程序员更加高效地管理时间,并提高生产效率。它能够根据设定好的时间表执行自动化任务,也可以提供一些常用的计时器、提醒等功能。

特性
  • 可以支持多种操作系统,包括Linux、MacOS、Windows等。
  • 简单易用,只需要几个命令即可完成任务。
  • 可以自定义时间表。
  • 支持多种提醒方式,如语音提示、弹窗、邮件等。
  • 支持统计每个任务的时间消耗。
安装

时间机器可以通过终端命令行来操作,因此只需要确保系统已经安装了Bash或者Shell即可。在MacOS和Linux下,Bash是自带的;在Windows下,可以安装Git Bash或者Cygwin。

安装方式
$ git clone https://github.com/someuser/timemachine.git
$ cd timemachine
$ chmod +x timemachine.sh
快速开始
添加任务

添加一个名为"工作"的任务:

$ ./timemachine.sh add --name 工作
创建时间表

创建一个名为"工作日"的时间表,指定从周一到周五,每天从早上9点开始到晚上6点结束:

$ ./timemachine.sh timetable create --name 工作日 --days Mon,Tue,Wed,Thu,Fri --start-time 09:00 --end-time 18:00
关联时间表和任务

将工作任务关联到工作日时间表:

$ ./timemachine.sh timetable attach --name 工作日 --tasks 工作
开始时间机器

启动时间机器,时间机器会根据时间表执行任务:

$ ./timemachine.sh start
代码片段
#!/bin/bash

# time machine

function add_task(){
    name=$1
    timemachine_db="$HOME/.timemachine_db"
    echo "$name" >> $timemachine_db
    echo "Task added"
}

function create_timetable(){
    name=$1
    days=$2
    start_time=$3
    end_time=$4
    timemachine_timetable="$HOME/.timemachine_timetable"
    echo "$name,$days,$start_time,$end_time" >> $timemachine_timetable
    echo "Timetable created"
}

function attach_timetable(){
    name=$1
    tasks=$2
    timemachine_task="$HOME/.timemachine_task"
    echo "$name,$tasks" >> $timemachine_task
    echo "Timetable attached"
}

function start_timemachine(){
    while true
    do
        current_day=$(date +%a)
        current_time=$(date +%s)
        IFS=,
        while read name days start_time end_time
        do
            if [[ "$days" == *"$current_day"* ]];then
                start_time=$(date -d $start_time +%s)
                end_time=$(date -d $end_time +%s)
                if [[ "$current_time" -ge "$start_time" && "$current_time" -le "$end_time" ]];then
                    IFS=
                    while read taskname
                    do
                        echo "Task \"$taskname\" started"
                        sleep 10
                        echo "Task \"$taskname\" ended"
                    done < <(grep "^$name," $HOME/.timemachine_task | cut -d, -f2)
                    break
                fi
            fi
        done < $HOME/.timemachine_timetable
        sleep 30
    done
}

case $1 in
    "add")
        shift
        add_task $@
        ;;
    "timetable")
        shift
        case $1 in
            "create")
                shift
                create_timetable $@
                ;;
            "attach")
                shift
                attach_timetable $@
                ;;
            *)
                echo "Invalid command: $@"
                exit 1
                ;;
        esac
        ;;
    "start")
        start_timemachine
        ;;
    *)
        echo "Invalid command: $@"
        exit 1
        ;;
esac
结语

时间机器是一个非常简单而实用的工具,它可以帮助程序员更好地管理时间,提高生产效率,减轻日常工作的压力。如果你还没有尝试过,可以试试看,相信它一定会给你带来惊喜的体验!