问题

问题

问题

我想创建一个目录,其中包含来自 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。

相关内容