📅  最后修改于: 2023-12-03 15:26:18.962000             🧑  作者: Mango
时间机器是一个基于Shell/Bash语言编写的时间管理工具,可以帮助程序员更加高效地管理时间,并提高生产效率。它能够根据设定好的时间表执行自动化任务,也可以提供一些常用的计时器、提醒等功能。
时间机器可以通过终端命令行来操作,因此只需要确保系统已经安装了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
时间机器是一个非常简单而实用的工具,它可以帮助程序员更好地管理时间,提高生产效率,减轻日常工作的压力。如果你还没有尝试过,可以试试看,相信它一定会给你带来惊喜的体验!