【问题标题】:How to run Script per shortcut如何为每个快捷方式运行脚本
【发布时间】:2018-07-18 15:38:52
【问题描述】:

我有一个终端 cmd 正在运行,它从 .bash_profile 文件中执行一个函数(如 here 所述)。

根据描述,我将函数添加到~/.bash_profile(可以在这里找到/home/user/.bash_profile

在我的终端上一切正常!

但是如何在 Mac OS 中创建一个执行这个终端 cmd 的快捷方式??

我尝试过 Apple Automator(--> 但错误:Cmd not found

我试过 Alfred(--> 但同样的错误:Cmd not found

如何让这个终端 cmd 从键盘快捷键执行??

我是否需要将脚本函数放在另一个文件中(除了 bash_profile ?) - 或者在这里做什么?

这是 Automator 试用版的图片:

【问题讨论】:

  • 尝试使用. /Users/myName/...(注意前面的点和缺少引号)。如果这不起作用,我就没有主意了

标签: bash macos terminal


【解决方案1】:

将函数放在单独的文件中,例如suspend-script.shresume-script.shkill-script.sh;将它们放在像/home/user/scripts 这样的公共目录中。要在您的 .bash_history 中继续使用它们,请执行以下操作:

# in .bash_history
source "suspend-script.sh"
source "resume-script.sh"
source "kill-script.sh"

确保在每个脚本上设置可执行位 (chmod +x /home/user/scripts/*.sh)。然后,使用以下快捷键绑定:

/home/user/scripts/suspend-script.sh thing_to_suspend
/home/user/scripts/resume-script.sh thing_to_resume
/home/user/scripts/kill-script.sh thing_to_kill

由于它是函数的快捷方式,因此您必须选择 一个 脚本来挂起/恢复/杀死(上面的东西*)。

例如,如果您想暂停/恢复/终止 top 进程,您可以使用以下命令:

/home/user/scripts/suspend-script.sh top
/home/user/scripts/resume-script.sh top
/home/user/scripts/kill-script.sh top

【讨论】:

  • 谢谢您-我没有得到您的两个观点: Nr1:我是否正确理解将三个“源”行添加到 .bash_history 文件中? Nr2:“由于它是函数的快捷方式,您必须选择一个脚本来挂起/恢复/杀死(上面的东西*)”是什么意思。我现在如何通过键盘快捷键执行这三个中的一个??
  • #1:是的。 #2:我的意思是您必须将一个脚本绑定到不同的键盘快捷键,并且您只能暂停/恢复/终止一个进程。因此,这些键绑定不会暂停/恢复/杀死任何进程,只会暂停您在键盘快捷键中指定的进程
  • 啊——我明白了。但我只是在开始时 - 因为在 Automator 中运行 "/Users/myName/scripts/suspend-script.sh myProcessName"(包括或不包括引号)会显示 No such file or directory
  • 您是否创建了脚本目录并将脚本添加到该目录?
  • 是的,与您的解决方案的唯一区别是:我将所有内容都放在 /Users/myName/ 而不是 /home/user/ 中 - 其余部分相同。我的/Users/myName/ 文件夹中有一个脚本文件夹,并将三个 *.sh 脚本放在那里...我还执行了chmod +x /User/myName/scripts/*.sh cmd ...
【解决方案2】:

打开 Automator,选择应用程序,添加一个 Run Shell Script 动作并在引号之间加上你的 Shell 命令(如果你有一个文件,你可以直接拖放它)。

除了播放之外,现在您还可以将其保存(作为应用程序在任何地方),甚至可以设置图标。然后你有一个应用程序,然后你可以在 system-preferences.app 中为它定义一个键盘快捷键

这应该可以,至少对我有用。

确保您的脚本是可执行的:sudo chmod u+x <your-scriptname> 并将文件扩展名.command 添加到您的文件名中。所以脚本的名字应该是filename.command。 然后,当您在 Finder 中单击脚本时,它会被执行。

我希望这有效!

【讨论】:

  • “带或不带引号”的运行 Shell 脚本操作显示 No such file or directory。同样,它在终端内工作 - 但它不在 Automator 内! (参见原始问题中的图片)
猜你喜欢
  • 2014-03-01
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
  • 2016-08-04
相关资源
最近更新 更多