在上一篇文章Mac上使用docker环境进行C++开发的实践介绍了我在mac上面搭建一个基于docker的C++/linux开发环境,以及如何和clion或vscode进行连接。
但是在使用过程中,我发现每次我开始做C++的工作时都需要打开docker的应用,然后开一个terminal回到docker-compose所在的文件夹启动一个container,作为一个懒惰至极的人,这么长的重复的事情我总是很烦的于是我开始想怎么把这个启动和退出自动化,毕竟docker一直也占着内存,很多时候我也不用。
说到自动化我首先想到的是mac中自带的‘自动操作’的应用,但是尝试之后发现最主要的问题是触发非常的麻烦,每次都会打开自动操作的那个应用,然后运行这个自动化。于是我转向使用Alfred的workflow,尝试开发了一个workflow来开启和关闭我的C++环境,主要也就包括两个步骤,打开/关闭docker应用,启动和关闭对应的container。
如果你对Alfred的workflow感到陌生,建议可以先看下这篇文章,Alfred真是mac上面非常强大的自动化和全键盘的神器。
然后现在,我们开始做这个alfred。
Mac上使用脚本开启和关闭应用
大家对在mac的命令行中启动应用应该更加熟悉,只需要
open /Applications/<app name>
但是在mac上使用命令行优雅的关闭应用可能会比较陌生,我首先想到的使用使用kill或发送软中断信号到进程,但是这样的方式都不够优雅,也可能会导致应用异常退出带来数据丢失的隐患。之后我发现苹果提供给了自带的脚本语言来做这件事情,通过这样的命令,能够以正确的方式关闭应用
osascript -e 'quit app "<app name>"'
-e statement
-e 后面输入的是一行脚本,在OSA脚本中,可以通过quit的方式去关闭应用
Enter one line of a script. If -e is given, osascript will not look for a filename in the argument list