我是一名 Mac 用户和一名 Web 开发人员,我想创建自动化工具来管理我的工作流程。只需输入一个命令即可启动某种类型的网站。
我应该学习 Bash Shell 脚本的哪些部分?有很多:
- sed
- awk
- grep
- 寻找
或者我应该学习其他东西来为我的网络项目存档命令行自动化?
答案1
您需要知道,与其他脚本或编程语言不同,shell 脚本沉重依赖于操作系统提供给您的命令行应用程序。这意味着,由于 OS X 是 BSD,因此在 Linux 上运行的许多功能在您的计算机上运行会略有不同,从而导致许多教程毫无用处。一般来说,您可以预期您的命令行工具的功能和灵活性会比 Linux 同类工具少,但也有例外。
如果您不熟悉 shell,并且不觉得有必要学习它,那么最好从命令行使用您最喜欢的 Web 脚本语言 (PHP、Ruby、Python)。这样做的好处是整个函数库中的 API 可能更一致。
本身bash
就学习
- 条件(包括在处理文件时使用
test
/[
...]
进行防御性编程) - 循环
- 变量赋值
- 功能
- 输入和输出重定向和管道
- 调用程序和 shell 函数(包括如何捕获它们的输出和读取它们的返回值),包括常规调用和命令替换。
- 选项。我喜欢
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 应用程序(例如您的 Web 浏览器),这些都是不可或缺的。虽然您可以使用open
命令行在不同的浏览器中打开 URL,但检索数据(例如从已加载的选项卡中检索数据)需要 Automator 或 AppleScript。
此外, Mac 上还预装了其他脚本语言(例如)ruby
,可用于轻松创建简单的辅助实用程序。这些更像是常规 UNIX 实用程序的替代品。这取决于您要执行的操作的性质。python
bash
如果你想在磁盘上移动一些文件,将它们压缩并通过 SSH 传输,bash
这可能是最好的选择。一旦你有真实的编程逻辑(涉及大量对象或数字的任何事情),您可能应该研究其他脚本语言。
答案2
我发布了一个(以 OS X 和 bash 为中心)书签列表OS X 终端教程 - 超级用户。
学习脚本语言的最佳方法之一是修改现有脚本。请查看以下内容:
- brettterpstra.com/tag/bash
- hayne.net/MacDev/Bash
- gist.github.com/Lri
- lri.me/urlalias
- github.com/holman/spark
一些有免费下载代码示例的书籍:
答案3
我认为对于你来说,只要掌握大约 20-25 个命令的基本用法就足够了,并且 Linux 的基本架构是必须的。根据你的工作类型,你可以只开始学习这些 bash 命令:
vi、ls、find、sed、awk、grep、cat、服务启动和关闭、netstat、nmap、traceroute、ping、mv、cp、rm 等。
这些是 bash 中最常用的命令。
除此之外,您还可以按照本教程进行操作:
http://www.faqs.org/docs/bashman/bashref_toc.html
http://blog.emson.co.uk/2009/06/18-useful-bash-scripts-for-web-developers/
此外,您需要学习基本的 shell 脚本来自动化一些流程。