每个人都有自己买 Mac 的理由,而我喜欢 Mac 是因为其提供了简约的外形、易用的 macOS 系统、独享的 macOS 应用、以及基于 Unix 的终端。而今天,我要介绍的就是 macOS 终端中的一些实用的内置命令行工具。

你或许早已在影视作品里见过终端的样子,电影里的黑客们总是在一个黑色的背景下,输入一些看不懂的命令,然后就可以实现各种高级操作。它往往看起来很「酷」,但这种操作方式却是计算机发展的早期阶段就已经存在的。在那个时候,计算机还没有图形用户界面(GUI),用户只能通过输入命令来与计算机进行交互。

终端操作

时至今日,随着计算机的发展,图形用户界面已经成为了主流,但终端仍然是一种非常有用的工具。它可以让用户以更高级、快捷的方式控制和配置系统,执行操作系统提供的各种命令和脚本,从而实现特定的功能和任务。例如:创建、复制、移动、删除文件和目录,查看和修改文件权限,管理网络连接、系统服务和进程等。

macOS 中默认提供了终端 App,你可以从 Launchpad 启动台中找到它。Apple 还贴心了提供了 终端使用手册,你可以从里面了解到一些终端的使用和配置方法。

终端图标

接下来,我会分享一些实用的 macOS 内置命令行工具,它们通过终端来使用,可以提升你的 Mac 使用体验。

实用的 macOS 内置命令

防止系统休眠:caffeinate

Mac 上有一些能够让系统保持唤醒的应用,它对于需要长时间运行的任务非常有用,如文件下载、数据同步等。

这些应用有的甚至是收费的。其实你完全不需要,因为 macOS 本身就提供了一个 caffeinate 命令,它可以让你的 Mac 保持唤醒状态。

使用 caffeinate 命令时,你可以通过 -s 参数来保持系统唤醒状态,通过 -u 参数来仅防止系统进入睡眠状态,而不锁定屏幕。你还可以通过 -t <seconds> 参数来指定保持唤醒状态的时间。例如:

在终端中执行 caffeinate
caffeinate -s

在终端中执行上述命令后,你的 Mac 将会保持唤醒状态,直到你按下 Control + C 组合键来终止 caffeinate 命令。

如果你希望 Mac 在 1 小时内保持唤醒状态,那么你可以执行以下命令:

caffeinate -t 3600

上面的 3600 代表 3600 秒,即 1 小时。

你还可以通过 man caffeinate 命令来查看 caffeinate 命令的帮助文档。接下来介绍的其他命令也都可以使用 man 命令来查看帮助文档,后续不再赘述。

复制文件内容:pbcopy

如果你希望复制一个文本文件的全部内容,之前会怎么做呢?

我想大多数人都会打开这个文本文件,然后按下 Command + A 组合键来全选文本,再按下 Command + C 组合键来复制文本,最后关闭这个文本文件。

这种方式虽然可以实现目的,但是却比较繁琐。其实你可以使用 pbcopy 命令来实现同样的效果。

pbcopy 命令用于在剪贴板和终端之间传递文本内容。它可以将终端输出的文本复制到剪贴板,而 pbpaste 命令则可以将剪贴板的内容粘贴到终端。

例如,我们有一个文本文件 hello.txt,它位于当前用户的主目录下,你就可以使用以下命令来复制它的全部内容:

cat ~/hello.txt | pbcopy

上面的命令中,cat 命令用于输出文件的全部内容,| 符号用于将 cat 命令的输出作为 pbcopy 命令的输入。这样就可以把 hello.txt 文件的全部内容复制到剪贴板了。

接下来,你就可以在任意地方粘贴即可。

网络质量监测:networkQuality

平常如果你需要测试网络的质量和延迟,你可能会使用一些第三方的工具,如 Speedtest

但实际上,我们有更简单的方法来测试网络质量,那就是使用 networkQuality 命令。

你可以直接在终端中执行此命令:

networkQuality

执行后,命令会输出当前网络的质量和延迟信息,如下所示:

执行完成后的 Summary

上面的输出中,Uplink capacityDownlink capacity 分别代表上行和下行的带宽,Responsiveness 代表网络的响应速度,Idle Latency 代表网络的延迟。

该工具会使用 Apple 的 CDN 服务器来测试网络质量,你也可以通过 Apple 的 官方文档 来了解更多信息。

图像处理工具:sips

sips 是一个非常强大的图像处理工具,它可以用于调整图像的大小、分辨率,转换图像格式,添加元数据等。

例如,我们有一张图片 image.png,它位于当前用户的主目录下,你就可以使用以下命令来将它转换为 JPEG 格式:

sips -s format jpeg ~/image.png --out ~/image.jpg

上面的命令中,-s format jpeg 用于指定输出图像的格式,--out ~/image.jpg 用于指定输出的文件路径。

sips 提供了一系列实用的参数,例如 -s formatOptions 参数可以用于指定格式选项,如 JPEG 压缩质量。举例:

sips -s format jpeg -s formatOptions 80 ~/image.png --out ~/image.jpg

上面的命令中,-s formatOptions 80 用于指定 JPEG 的压缩质量为 80。

如果你希望批量转换某个目录(例如 ~/images)下的所有图片,那么你可以使用以下命令:

cd ~/images
for file in *.png; do sips -s format jpeg "$file" --out "${file%.*}.jpg"; done

上面的命令中,for 循环用于遍历目录下的所有 PNG 图片,"${file%.*}.jpg" 用于将 PNG 图片的后缀名替换为 JPG。

批量转换 PNG 图片为 JPG

由于 sips 支持的自定义参数过多,甚至比很多第三方的图片格式转换工具都强大,这里就不再一一介绍。文章的末尾会分享小白如何更高效地使用不了解的命令行工具。

文件转换工具:textutil

和 sips 类似,textutil 是一个非常强大的文件转换工具,它可以用于转换文本文件、HTML 文件、RTF 文件、Microsoft 文件、iWork 文件等。

例如,我们有一个 RTF 文件 hello.rtf,它位于当前用户的主目录下,你就可以使用以下命令来将它转换为纯文本文件:

textutil -convert txt ~/hello.rtf

上面的命令中,-convert txt 用于指定输出文件的格式为纯文本。

textutil 提供了一系列实用的参数,例如 -encoding 参数可以用于指定输出文件的编码格式。举例:

textutil -convert txt -encoding UTF-8 ~/hello.rtf

上面的命令中,-encoding UTF-8 用于指定输出文件的编码格式为 UTF-8。

同样,你可以结合 Shell 脚本来批量转换某个目录(例如 ~/documents)下的所有 RTF 文件,例如:

cd ~/documents
for file in *.rtf; do textutil -convert txt -encoding UTF-8 "$file"; done

从终端中打开:open

如果你希望在终端中打开某个文件或目录,那么你可以使用 open 命令。这对于习惯在终端中操作的人来说,是一个非常实用的命令。

例如,我们有一个文本文件 hello.txt,它位于当前用户的主目录下,你就可以使用以下命令来在终端中打开它:

open ~/hello.txt

上面的命令中,open 命令用于在 macOS 上打开文件、目录或 URL。它会根据文件类型自动选择合适的应用程序打开。

如果你希望在终端中打开当前目录,那么你可以使用以下命令:

open .

上面的命令中,. 代表当前目录。你会发现,执行后会自动打开 Finder。

你甚至可以用 open 打开网页,例如:

open https://sspai.com

文件快速搜索:mdfind

如果你需要在 Mac 中搜索,大概率会使用 Spotlight 或者 Finder 右上角的搜索框。但是,你可能不知道,终端中也有一个非常强大的搜索工具,它就是 mdfind

例如,我们想要搜索当前用户主目录下的所有 PNG 图片,那么你可以使用以下命令:

mdfind -name "*.png"

可以指定路径搜索,例如:

mdfind -onlyin ~/documents -name "*.png"
搜索当前路径下的 PNG 图片

你甚至可以搜索文件内容,例如:

mdfind -onlyin ~/documents -name "*.txt" -literal "hello"

上面的命令中,-literal "hello" 用于指定搜索内容为 hello

我们还可以指定类型搜索,例如:

mdfind kind:image -name "hello"

上面的命令中,kind:image 用于指定搜索类型为图片。即全部图片中,文件名包含 hello 的图片。

由于 mdfind 支持通配符,所以在操作的灵活性上比图形界面的搜索工具更强大。此外,其搜索的速度也非常快,这对于大量文件的用户来说,是一个非常实用的命令。

屏幕截图:screencapture

你可能会使用快捷键或者第三方 App 实现屏幕截图,但是你可能不知道,终端中也有一个非常强大的截图工具,它就是 screencapture

例如,我们想要截取整个屏幕,那么你可以使用以下命令:

screencapture screenshot.jpg
open screenshot.jpg

上面的命令中,screencapture 命令用于在 macOS 上捕获屏幕截图并保存为文件。open 命令用于在终端中打开文件。

如果你想要截取某个窗口,那么你可以使用以下命令:

screencapture -i screenshot.png

你可能会问,这比起来似乎没有快捷键方便。当然,对于日常使用来说,快捷键的方式更加方便。但是,如果你需要更多的控制选项,或者用于脚本自动化时,screencapture 就会变得非常有用。

我们介绍命令行工具也不是说要摒弃掉图形界面的方式,而是希望你能够了解到,终端中也有很多实用的工具,它们可以帮助你更好地完成工作。

更新软件和系统:softwareupdate

Mac 上还有一些系统配置和管理的命令行工具,例如 softwareupdate。它可以用于更新软件和系统。

例如,我们想要列出可用的更新,那么你可以使用以下命令:

softwareupdate -l

执行更新的话,你可以使用以下命令:

softwareupdate -i -a

参数太多看不懂怎么办?

这篇文章中,我们只是介绍了一些常用的,或者是说我本人常用的命令行工具。实际上,macOS 中还有很多命令行工具,你可以通过 这个列表 查看。

应该有很多人会问,这么多命令行工具,参数那么多,我怎么记得住?尤其是对于很多不了解 Linux 命令,或者没有编程经验的用户来说,这些命令行工具可能会让人望而生畏。

面对这样的问题,我建议你可以通过以下方式来解决:

  1. 阅读命令行工具的帮助文档,例如 man 命令。这个过程不需要你完全看懂,只是大致了解这个工具能干什么就行。
  2. 借助 ChatGPT 解决实际需求。
使用 ChatGPT 解决需求示例

由于 ChatGPT 的出现,我们可以通过对话的方式来解决实际需求。例如,你可以把自己的需求描述清楚,然后让 ChatGPT 帮你完成操作。

需求的描述过程中需要注意:

  1. 尽量表述详细,例如你希望在哪个路径下操作,怎样操作等;
  2. 给出一些例子,比如操作前是什么样的,你希望操作后的效果是什么样的,这样 ChatGPT 才能更好地理解你的需求。

小结

macOS 内置的命令行工具提供了丰富的功能和灵活性,使用户能够更高效地管理和操作系统。这些工具广泛应用于各种场景,从日常任务到系统维护都能发挥作用。

每个命令行工具都有其独特的作用和使用场景,我们可以根据自己的需求选择合适的工具。同时,这些工具提供了丰富的参数选项,用户可以根据具体需求进行定制和调整。对于有一定技术基础的用户和开发者来说,这些命令行工具是提高效率和解决问题的强大工具。

本文介绍的只是一小部分 macOS 内置命令行工具,还有很多其他有用的工具等待你去发现和探索。希望本文能为你提供一些有用的信息和启发,帮助你将 Mac 物尽其用。1