每个人都有自己买 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 -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
执行后,命令会输出当前网络的质量和延迟信息,如下所示:
上面的输出中,Uplink capacity
和 Downlink 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。
由于 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"
你甚至可以搜索文件内容,例如:
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 命令,或者没有编程经验的用户来说,这些命令行工具可能会让人望而生畏。
面对这样的问题,我建议你可以通过以下方式来解决:
- 阅读命令行工具的帮助文档,例如
man
命令。这个过程不需要你完全看懂,只是大致了解这个工具能干什么就行。 - 借助 ChatGPT 解决实际需求。
由于 ChatGPT 的出现,我们可以通过对话的方式来解决实际需求。例如,你可以把自己的需求描述清楚,然后让 ChatGPT 帮你完成操作。
需求的描述过程中需要注意:
- 尽量表述详细,例如你希望在哪个路径下操作,怎样操作等;
- 给出一些例子,比如操作前是什么样的,你希望操作后的效果是什么样的,这样 ChatGPT 才能更好地理解你的需求。
小结
macOS 内置的命令行工具提供了丰富的功能和灵活性,使用户能够更高效地管理和操作系统。这些工具广泛应用于各种场景,从日常任务到系统维护都能发挥作用。
每个命令行工具都有其独特的作用和使用场景,我们可以根据自己的需求选择合适的工具。同时,这些工具提供了丰富的参数选项,用户可以根据具体需求进行定制和调整。对于有一定技术基础的用户和开发者来说,这些命令行工具是提高效率和解决问题的强大工具。
本文介绍的只是一小部分 macOS 内置命令行工具,还有很多其他有用的工具等待你去发现和探索。希望本文能为你提供一些有用的信息和启发,帮助你将 Mac 物尽其用。1