ChatGPT 在代码方面的能力是不争的事实。Stack Overflow 的访问量也受到了不小的影响。本站的读者当然也有一定的程序员。但也不乏希望提高自己使用电脑效率却不熟悉代码的其它行业的读者。
在上周的 Premium 中,我建议大家拥抱 ChatGPT,把 ChatGPT 当锤子,多去用它砸砸身边的钉子。但考虑到理解这种新事物总有上手难度。所以我以后在本站将会不定期更新一些 ChatGPT 砸钉子的范例,以供参考。
Mac 上正在运行的软件过多时,我会用 AppleScript 退出一些目前不需要的软件。过程如下:
- 获得正在运行的软件
- 多选
- 退出选中的软件
这用 AppleScript 脚本来执行非常合适。脚本很基础,网上也有很多答案,ChatGPT 的表现也很出彩。
需求和 ChatGPT 的回应
把上面 3 个需求改成英文,就是:
Show me the AppleScript that does these things on macOS:
- get the list of current running applications
- allow me to choose multiple of them
- allow me quite the chosen applications
ChatGPT 返给我的 AppleScript 如下1:
-- Get a list of current running applications
tell application "System Events"
set runningApplications to name of every process whose background only is false
end tell
-- Allow the user to choose multiple applications
set chosenApplications to choose from list runningApplications with prompt "Choose applications to quit:" with multiple selections allowed
-- Quit the chosen applications
if chosenApplications is not false then
repeat with appName in chosenApplications
tell application appName to quit
end repeat
end if
这代码注释也很便于初学者了解每一部分是干什么的。
先在 Script Editor 里试水
在 macOS 上如果要尝试一段 AppleScript 能不能跑,比较常用的办法是在 Script Editor 里试一下。方法很简单,打开 Script Editor,代码粘进去,运行 (运行的快捷键是 ⌘Command - R
)。
快速调用这个脚本
在实际应用里,一般建议用一个快捷键跑这一类的脚本:
用快捷键调用脚本的制作方法很简单。
首先是用 Automator 做一个 Service:
然后在 Action 栏里搜 Run AppleScript
,把 ChatGPT 里的代码粘进去:
最后按 ⌘Command - S
保存它,名字可以叫“Quit Selected Apps”。这里的名字可以用中文,不过英文便于输入,比如用 LaunchBar 这些启动器调用时更快一些的。
在 Automator 里保存完毕之后,来给这个脚本设置一个快捷键。打开系统偏好设置,在左边栏找到“键盘”,随后选择“键盘快捷键”,再在弹出的窗口里找到“服务”,最后在右边栏找到“通用”一栏:
我把快捷键设置成了 ⌃Control - ⌘Command - ⌥Option - Q
,以后会在《征服 macOS 快捷键系列》详述原因。
至此为止,从获取脚本到快捷键调用,一套完整的流程就结束了。介绍这个脚本的原因还有一个就是它是通用脚本。也就是说你可以直接把它粘到 Keyboard Maestro、Shortcuts 这类系统自动化工具里。又或者使用 LaunchBar、Alfred 之类的启动器直接运行。
小结:会问问题的重要性
会问问题一直都是一个非常重要的能力。问题问对了,离正确答案就不远。问搜索引擎是这样,问人也是这样,问 ChatGPT 还是这样(排名不分先后)。
问问题的关键方法,在于对问题的理解和拆分。让人讨厌的问题多是因为太笼统,笼统到好像这个人从来没有想过这个问题,根本不关心这个问题。这样的问题,搜索引擎无解、ChatGPT 无解、人也无解。
- 还有一个现象很有意思。同样的文本给 ChatGPT 问了 3 次,返回了 3 次不同的代码。当然,每一次的代码都可以完成任务。 ↩