我使用todo txt来管理我的todo列表。我认为这是一个很棒的工具,但我希望我能有更多的列表,现在它的工作方式是有一个bash脚本todo.sh
来管理一个包含多个条目的列表。我想要多个列表。是否可以创建todo.sh
的副本,然后更改副本和配置文件中的所有环境变量,并使脚本的两个不同名称的工作副本同时存在?然后是我尝试的,但没有成功,我最终得到了以下错误:Fatal Error: is not a directory
更准确地说,我尝试过:
- 复制todo.sh->todo2.sh
- 复制todo.cfg->todo2.cfg
- 更改配置文件中todo2.sh将写入的目录
- 更改配置文件中的环境变量,并在sublime中使用"replace all"更改todo2.sh中的相同变量
- 调整了我的.zshrc文件以引用相应的命令
我认为我可能误入歧途的主要地方是重命名环境变量。我甚至不确定我所做的是否可能。我已经压缩了我正在处理的所有文件,它们可以在这里找到:https://drive.google.com/open?id=0Bze975WJ_w5KM21QRVZZblFidzQ
编辑:使用@cb0的方法:
~ pwd
/Users/max
~ ls | grep todo
todo
todo-projects
todo.cfg
todo2
~ ls todo
README.md done.txt evidence.log report.txt todo.txt todo.txt.bak
~ ls todo2
~ cd .todo
~/.todo ls -a
. .. .DS_Store .todo.cfg list2
/Users/max/.todo/.todo.cfg
# Your todo.txt directory
export TODO_DIR="/Users/max/todo"
# Your todo/done/report.txt locations
export TODO_FILE="$TODO_DIR/todo.txt"
export DONE_FILE="$TODO_DIR/done.txt"
export REPORT_FILE="$TODO_DIR/report.txt"
/Users/max/.todo/list2/.todo2.cfg
# Your todo.txt directory
export TODO_DIR="/Users/max/todo2"
# Your todo/done/report.txt locations
export TODO_FILE="$TODO_DIR/todo.txt"
export DONE_FILE="$TODO_DIR/done.txt"
export REPORT_FILE="$TODO_DIR/report.txt"
/Users/max/.zshrc
alias t='todo.sh -d /Users/max/.todo/.todo.cfg'
alias t2='todo.sh -d /Users/max/.todo/list2/.todo2.cfg'
您不需要复制脚本。我只是看了一眼,用两个不同的待办事项列表让它工作起来。
假设您在系统中的某个位置安装了该脚本的单个副本,并且可以使用todo.sh
调用它。现在您在~/.todo/config
下有了现有的配置,内容如下:
export TODO_DIR=$(dirname "$0")
export TODO_FILE="$TODO_DIR/todo.txt"
export DONE_FILE="$TODO_DIR/done.txt"
export REPORT_FILE="$TODO_DIR/report.txt"
因此,您的任务将保存在"~/.todo/".下的不同文件中
现在您想要创建第二个待办事项列表。因此,创建第二个目录,例如在~/.todo/list2/
下。然后将~/.todo/config
复制到~/.todo/list2/configList2
,并按如下方式编辑:
export TODO_DIR=~/.todo/list2/
export TODO_FILE="$TODO_DIR/todo.txt"
export DONE_FILE="$TODO_DIR/done.txt"
export REPORT_FILE="$TODO_DIR/report.txt"
现在,您创建了第二个配置文件,该文件指示它的目录位于"~/.todo/list2/".下
现在在".bashrc"或".zshrc"中创建一个别名,如下所示。
alias todo2="todo.sh -d ~/.todo/list2/config"
这只会调用todo.sh
,但也会指定一个配置文件参数-d
。现在使用source重新加载文件。
source ~/.zshrc
现在您有两个可以使用的列表。让我们先将一个项目添加到第一个列表:
>todo.sh list
full:
-- TODO: 0 of 0 tasks shown
>todo.sh add "List 1, ToDo Item"
>todo.sh list
sh: todo.sh full:
2 List 1, ToDo item
-- TODO: 1 of 1 tasks shown
然后是第二个列表中的另一个。
>todo2 list
sh: todo.sh
full:
-- TODO: 0 of 0 tasks shown
>todo2 add "List 2, ToDo item"
>todo2 list
sh: todo.sh
full:
1 List 2, ToDo Item
--
TODO: 1 of 1 tasks shown
我希望这就是你想要的。
快速查看代码后,我认为显而易见的解决方案是复制安装脚本的整个目录。