问题
我想创建一个目录,其中包含来自 Evernote 的 Markdown 格式的笔记。我发现可以使用极客笔记,但每次都是针对每个笔记本。
如何创建一个 bash 脚本来同步目录,其中每个子目录都是不同的笔记本,并且里面有 markdown 文件?
当您提出建议时,我会保持此问题的更新。
一些需要启动的后台命令
使用 Geeknote 进行双向同步的命令如下:
gnsync --path ~/Evernote/Ler --logpath ~/.log/geeknote.log --format markdown --notebook ".Ler" --two-way TWO_WAY
列出我的笔记本的命令是:
geeknote notebook-list
部分解决方案
@RichardAnderson 建议使用以下代码来列出并循环到 Evernote 笔记本中,我在我的系统中测试过,它运行正常。问题是geeknote 笔记本列表命令在列出期间等待用户操作,我也找不到解决这个问题的方法。
只需创建一个包含以下内容的文件:
#!/bin/bash
geeknote notebook-list > /tmp/list.txt
Note_List=$(cat /tmp/list.txt | grep -v Total | cut -d : -f 2)
for i in $Note_List; do
gnsync --path ~/evernote --logpath ~/.log/geeknote.log --format markdownn --notebook "$i" --two-way TWO_WAY
done
不要忘记改变你的路径。
注意力!如果您的 Evernote 帐户中有图片或大量格式化的笔记,请注意此方法可能会删除笔记中的格式和数据。因此,使用时请自担风险!
最后一点该如何解决?
如果您知道如何避免在 geeknote note-list 命令期间需要用户执行操作,请在下面留言。
答案1
我也一直在寻找同样的东西。这就是我找到的。
#!/bin/bash
geeknote notebook-list > /tmp/list.txt
Note_List=$(cat /tmp/list.txt | grep -v Total | cut -d : -f 2)
for i in $Note_List; do
gnsync --path ~/evernote --logpath ~/.log/geeknote.log --format markdown --notebook "$i" --two-way TWO_WAY
done
启动后,您可能需要按几次回车键。我不确定如何处理 geeknote notebook-list 命令以消除按回车键的需要。
答案2
我不知道如何避免交互的需要,但我知道如何自动化它:expect
。您可以使用它来安装它apt-get
。这是我的期望脚本,它对我有用:
#!/usr/bin/expect -f
spawn geeknote "notebook-list"
expect "More"
sleep 2
send "j"
interact
然后你可以使用它来代替geeknote notebook-list
:
./geeknote-expect-script > /tmp/list.txt
答案3
我选择了 bash 解决方案:
function sync_notebook {
gnsync --path ~/Evernote/$1 --logpath ~/.log/geeknote$1.log --format markdown --notebook "$1" --two-way TWO_WAY
}
function sync_all {
for D in *; do sync_notebook $D; done
}
我将这些添加到我的.bashrc
。
第一个只是 的包装器gnsync
。它只接受一个参数,即笔记本的名称。第二个是遍历目录中所有文件夹的 bash 循环。文件夹的名称与 evernote 中笔记本的名称相匹配。
仍然没有弄清楚如何不杀死同步的 pdf。