是否可以在使用原件时运行重复的bash脚本?

时间:2016-05-20 04:09:46

标签: bash

我使用todo-txt来管理我的待办事项列表。我认为它是一个很棒的工具,但我希望我能有更多的列表,现在它的工作方式是有一个bash脚本todo.sh管理一个包含多个条目的列表。我想要多个列表。是否可以创建todo.sh的副本,然后更改副本和配置文件中的所有环境变量,并以不同的名称同时存在脚本的两个工作副本?然后是贝斯特我尝试但它没有工作,我最终收到以下错误:Fatal Error: is not a directory

更多精确度我试图:

  • copy todo.sh - > todo2.sh
  • copy todo.cfg - > todo2.cfg
  • 更改配置文件中todo2.sh将写入
  • 的目录
  • 更改配置文件中的环境变量并使用"替换所有"在sublime中改变了todo2.sh
  • 中的相同变量
  • 调整了我的.zshrc文件以引用相应的命令

我认为我可能误入歧途的主要地方是重命名环境变量。我甚至不确定我所做的事情是否可行。我已将我正在使用的所有文件压缩,可在此处找到:https://drive.google.com/open?id=0Bze975WJ_w5KM21QRVZZblFidzQ

编辑:使用@ cb0&#39方法:

~ 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'

2 个答案:

答案 0 :(得分:1)

您无需复制脚本。我只是看了一下它,并使用2个不同的待办事项清单工作。

假设您已在系统中的某个位置安装了该脚本的单个副本,并可以使用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

现在您有2个可以使用的列表。让我们首先将项目添加到第一个列表:

>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

我希望这就是你要找的东西。

答案 1 :(得分:0)

在快速查看代码之后,我会说明显的解决方案是复制安装脚本的整个目录。