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

  • 本文关键字:脚本 bash 运行 原始 是否 bash
  • 更新时间 :
  • 英文 :


我使用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

我希望这就是你想要的。

快速查看代码后,我认为显而易见的解决方案是复制安装脚本的整个目录。

相关内容

  • 没有找到相关文章

最新更新