通过emacs在osx上执行下面的脚本,没有用,我收到一条权限被拒绝消息,这个问题的答案解决了这个问题:https ://stackoverflow.com/a/12276562/912475
Tldr:如何设置系统自动将 emacs 中光标下的单词作为变量直接传递给我的 shell 脚本,然后运行该脚本?
我已经创建了一个基本的系统,用于以一种健壮的方式从纯文本文件“链接”到文件夹。它使用由脚本生成的时间戳,然后设置为剪贴板的“值”。然后,从剪贴板将时间戳粘贴到带有相关注释的 txt 中,并粘贴到文件夹的名称字段中。
为了在阅读 txt 时找到文件夹,我使用了带有键绑定的 emacs 函数,该函数可以将时间戳(作为一个单词,都是数字)复制到剪贴板并在聚光灯下搜索它(在 osx 上)。我想做的是自动启动一个 shell 脚本,搜索名称以该字符串结尾的目录,然后打开它。我已经有一个执行类似操作的脚本,但我真的不知道如何将 elisp 函数和 shell 脚本绑定在一起。我非常感谢适用于 osx 和 linux 的解决方案(我同时使用两者)。可能很容易“移植”适用于其中一个的解决方案以与另一个一起使用。
这是用于复制光标下单词的emacs函数:
;;; function for copying a word under the cursor http://www.emacswiki.org/emacs/CopyWithoutSelection
(global-set-key (kbd "C-c o") (quote copy-word))
(defun copy-word (&optional arg)
"Copy words at point into kill-ring"
(interactive "P")
(copy-thing 'backward-word 'forward-word arg)
;;(paste-to-mark arg)
)
这是查找并打开名称以时间戳结尾的目录的脚本:
#!/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:$PATH #need this to make the gnu coreutils work on osx
file_number="20130812193913"
path_to_open=$(gfind ~/x/ | grep -e $file_number$) # $ means the end of the line, makes it possible to search for directories without finding their content
open "${path_to_open}"
脚本的编辑版本,它接受来自命令行的参数,如下所示:
me$ sh script_path.sh 20130812193913
剧本:
#!/bin/bash
PATH=/opt/local/bin:/opt/local/sbin:$PATH #need this to make the gnu coreutils work on osx
file_number=$1
echo $file_number
path_to_open=$(gfind ~/x/ | grep -e $file_number$) # $ means the end of the line, makes it possible to search for directories without finding their content
open "${path_to_open}"
见:http ://www.bashguru.com/2009/11/how-to-pass-arguments-to-shell-script.html