Ami*_*ole 5 mac bash automation macos
我是 mac 用户和 web 开发人员,我想创建自动化工具来管理我的工作流程。说一个命令来启动一种网站。
我应该学习 bash shell 脚本的哪些部分?有这么多:
或者我应该学习其他东西来为我的 Web 项目归档命令行自动化吗?
Dan*_*eck 11
您需要注意,与其他脚本或编程语言不同,shell 脚本在很大程度上依赖于操作系统提供给您的命令行应用程序。这意味着,由于 OS X 是 BSD,因此在 Linux 上运行的大部分内容在您的计算机上的运行方式略有不同,从而使许多教程变得无用。通常,您可以期望您的命令行工具具有比 Linux 同类工具更少的功能和灵活性,但也有例外。
如果您不熟悉 shell 并且不觉得有必要学习它,那么最好从命令行使用您最喜欢的 Web 脚本语言(PHP、Ruby、Python)。优点是整个函数库中的 API 可能更加一致。
在bash
自身学习
test
/ [
...]
进行防御性编程)set -u
并拒绝使用无法处理这个问题的脚本。这里的问题是,bash
它与作业控制等系统密切相关,并且对于创建复杂脚本而言,学习曲线相当陡峭。
根据我的经验 *bash
手册页的任何部分都是不必要的。做足够长的时间,那里的一切都以某种方式适用(如果只是为了回答关于 SU 的问题)。
一些(以我的经验)shell 脚本中常用的程序:
find
, ls
, cd
, rm
, mv
, cp
, chmod
, chown
, chflags
, dd
,ln
xargs
,find -exec
sort
, wc
, cat
, sed
, awk
,grep
特定于 OS X 的可能如下:
launchctl
, open
, dscl
, PlistBuddy
, plutil
, osascript
, automator
, networksetup
, systemsetup
, growlnotify
(如果你有咆哮)
当然,根据你想做的事情的确切性质,还有其他的......
date
(BSD 变体——与 GNU 非常不同), mount
, fsck
, kill
,sendmail
有些,例如netcat
要求您安装第三方软件包,例如使用 Homebrew、MacPorts 或 Fink。
如果您的脚本大量使用这些命令行程序,或者可以以这种方式编写,则bash
脚本是自动化此操作的好方法。
由于您使用的是 OS X,还可以查看 AppleScript(通过 AppleScript 编辑器)和 Automator。这两者都可以与 shell 脚本结合使用,以实现非常好的集成脚本解决方案。如果您正在考虑控制其他 OS X 应用程序(例如您的网络浏览器),这些是必不可少的。虽然您可以使用open
命令行在不同浏览器中打开 URL,但从加载的选项卡中检索数据需要 Automator 或 AppleScript。
此外,Mac 上还预装了其他脚本语言,例如ruby
,python
可用于轻松创建简单的帮助实用程序。这些更像是bash
常规 UNIX 实用程序的替代品。这取决于你想做的事情的性质。
如果您想在磁盘上移动少量文件,将它们压缩并通过 SSH 传输,bash
这可能是最好的选择。一旦你有了真正的编程逻辑(任何涉及大量对象或数字的东西),你就应该研究其他脚本语言。