OS X 平台的 8 个实用终端工具
本文由 伯乐在线 - shinancao 翻译自 mitchchn。欢迎加入iOS小组。转载请参见文章末尾处的要求。
OS X 终端对外开放了许多很强大的UNIX实用工具和脚本。如果你是从Linux转过来的,你会发现许多熟悉的命令正是按照你想的那样执行。但是高级用户通常不知道OS X自带了许多在其他操作系统中没有的基于文本的实用工具。
更新:感谢读着的反馈,我已经在后续的文章里写了更多的命令介绍:(800多个)
1.open
open
打开文件,目录和应用。很兴奋,对不对?但是作为命令行中的双击,它确实随手可用。例如,输入如下:
1
|
$ open / Applications / Safari.app / |
…这样就打开Safari了,就好像你在Finder中双击了它的图标。1
如果你对一个文件使用open
,它将尝试加载该文件以及与其相关的图形界面应用。对一个图片使用open screenshot.png
会在预览中打开该图片。你可以设置-a
标识来选择用哪个应用打开,或者-e
在TextEdit中打开文件直接编辑。
对目录使用open
会在直接将你带到该目录所在的Finder窗口。使用open
进去到当前的目录非常地有用。
请记住Finder和终端之间的一体化是双向的—如果你把Finder中的文件拖拽到终端中,在命令行中会粘贴出文件的完整路径。
2.pbcopy 和 pbpaste
这两个命令能让你从命令行中复制和粘贴文本。当然了,你也可以使用鼠标—但是pbcopy
和pbpaste
真正的力量在于他们是UNIX命令,也就是说这两个命令得益于管道、重定向,并能在脚本中与其他命令一起使用。输入如下:
1
|
$ ls ~ | pbcopy |
…这样会把home目录中的所有文件复制到剪切板中。你可以很容易地得到文件的内容:
1
|
$ pbcopy < blogpost.txt |
…或者做一些更疯狂的事。这个hacked-up脚本会抓取到最新的谷歌涂鸦链接,并把它复制到剪切板中。
1
|
$ curl http: / / www.google.com / doodles #oodles/archive |
使用pbcopy
和管道是获得命令输出的一种很棒的方式,而不用滚动到上面再小心地来选择。这使得分享诊断信息变得很容易。pbcopy
和pbpaste
还可以用于自动或加速某些类型的任务。例如,如果你想要保存邮件主题到任务列表中,那么你可以从邮件应用中复制主题并运行:
1
|
$ pbpaste >> tasklist.txt |
3.mdfind
许多Linux高级用户曾尝试使用locate
来搜索Mac上的文件,然后很快发现它不起作用。还有个古老的UNIX命令find,但是OS X带有自己的杀手级搜索工具:Spotlight。那么为什么不在命令行中利用它的能力呢?
那正是mdfind所做的。任何Spotlight能找到的,mdfind
也能找到。包括搜索文件内容和元数据。
mdfind
带来了一些便利,这使得它比那些老的命令更杰出。例如,使用-onlyin
标识可以限制只搜索单个目录:
1
|
$ mdfind - onlyin ~ / Documents essay |
mdfind
数据库应该在后台更新,但是你也可以使用mdutil
(还有Spotlight)分析解决问题。如果Spotlight没有正常工作,mdutil -E
将删除索引,并重头开始创建。你也可以使用mdutil -i
完全关闭索引。
4.screencapture
使用screencapture
可以获得多种不同类型的截图。它类似于Grab.app和快捷键cmd
+shift
+3
和cmd
+shift
+4
,可是它更加的灵活。下面是几种你可以使用screencapture
的不同方式:
捕获屏幕内容,包括光标,并把得到的图片(命名为’image.png’)添加到一个新的邮件信息中:
1
|
$ screencapture - C - M image.png |
用鼠标选择一个窗口,然后捕获它的内容不带窗口的影子,并把图像复制到剪切板上:
1
|
$ screencapture - c - W |
延迟10秒后捕获屏幕,并在预览中打开新的图像:
1
|
$ screencapture - T 10 - P image.png |
用鼠标选择屏幕的一部分,捕获它的内容,然后保存为pdf:
1
|
$ screencapture - s - t pdf image.pdf |
要查看更多选项,输入screencapture —help
5.launchctl
launchctl
让你与OS X初始化脚本launchd
交互,用启动守护进程和启动代理,你可以控制开机时的启动服务。你甚至可以设置脚本定期执行或者每隔一段时间后在后台运行,类似于Linux中的计划任务。
例如,如果你想Apache服务器在你打开电脑时自动启动,只要简单的输入如下:
1
2
|
$ sudo launchctl load - w / System / Library / LaunchDaemons / org.apache.httpd.plist |
运行launchctl list
会展示出当前加载的启动脚本。sudo launch unload [path/to/script]
将会停止并卸载正在运行的脚本,添加-w
标识将从启动序列中永久删除这些脚本。我想要在Adobe软件和Microsoft软件创建的所有自动升级“助手”上运行一次。
Launchd脚本存储在下面的位置:
1
2
3
4
5
|
~ / Library / LaunchAgents / Library / LaunchAgents / Library / LaunchDaemons / System / Library / LaunchAgents / System / Library / LaunchDaemons |
如果要看看什么写入到了启动代理或守护程序,这有一个很不错的博客,是Paul Annesley写的,能够带你了解文件格式。如果你想要学习如何写你自己的launchd
脚本,苹果在他们的开发者网站上提供了帮助文档。如果你想完全避免使用命令行,还有一个非常棒的Lingon软件。
6.say
这是一件非常有趣的事:say
把文本转换成语音,它使用OS X给VoiceOver使用的TTS引擎。没有任何选项,say
仅仅是地读出你输入的内容:2
1
|
$ say "Never trust a computer you can't lift." |
你也可以使用say
用-f
标识读出文本的内容,你还可以用-o
标识存储产生的音频剪辑:
1
|
$ say - f mynovel.txt - o myaudiobook.aiff |
say
命令可以用于代替控制台日志和警告声音。例如,你可以设置Automator脚本或Hazel脚本进行批文件处理,然后用say
提示任务已完成。
但是say
最有意思的应用相当地邪恶:如果你用ssh
来访问朋友或同事的Mac,你可以默默地登录他们的机器并通过命令行干扰他们。给他们一个Siri的惊喜。
通过改变系统偏好设置中的听写与语音的默认设置,你可以改变say
的声音和语言!
7.diskutil
diskutil
是OS X上的磁盘工具的命令行界面。它所作的事情和磁盘工具的一样,但是它还有一些额外的功能—例如用零或随机数填充一个磁盘。只要输入diskutil list
就可以查看磁盘的路径名,还有连接在你电脑上的移动设备,然后用命令指定你想要操作的卷。一定要小心:diskutil
如果使用不正确的话会永久抹掉磁盘上的数据。
8.brew
当然了—这不是技术上一个原本的命令。但是作为OS X用户应该会使用HomeBrew。网上把它叫作“The missing package manager for OS X”,确实如此。如果你曾在Linux中使用过apt-get
,那么使用Homebrew时你会感到很容易上手。3
brew
使你能很容易接触到上千个开源社区免费的实用工具和插件。例如,brew install imagemagick
将会帮你配置好ImageMagick,一个非常强大的实用工具,从播放gif动画到几十种不同类型图片之间的转换它都能完成。brew install node
将为你安装NodeJS,它是时下非常流行的开发和运行服务器端JavaScript应用的工具。
你也可以这样使用Homebrew:brew install archey
将会为你安装Archey,一个很酷且轻量级的脚本,它可以在一个彩色的苹果logo旁边显示出你Mac的规格。
Homebrew可供选择的范围很多—因为它很容易创建惯用语,新包可以一直被添加进来。
但是关于Homebrew最棒的是哪一部分呢?它把所有文件放在一个单独的目录:/usr/local/
。也就是说你可以安装最新版本的系统软件,例如python
和mysql
,而且不会影响已内置的这些软件。如果你想要摆脱Homebrew,删除也很容易。
编辑—5月15日:一些朋友建议我不应该盲目地删除/usr/local
的内容。要谨慎一些。如果要安全地移除Homebrew,可以使用uninstall script。
为了更好地使用Terminal.app,这里有一份所有适用于OS X 10.9 Mavericks的控制台命令A-Z列表。
OS X 平台的 8 个实用终端工具的更多相关文章
- Mac OS X 命令行用户应当知道的八个终端工具
原文链接:Eight Terminal Utilities Every OS X Command Line User Should Know OS X 的Terminal 终端开辟了强大的UNIX实 ...
- iTerm2终端工具在Mac OS上使用详解
一.概述 因个人工作需要,使用终端工具进行运维和开发工作,但是Mac OS 自带的终端工具使用堡垒机登录配置不了,而且使用CRT等终端工具每次登录堡垒机都需要配置密码,操作起来很麻烦.一直想找一款终端 ...
- XAMPP:继MAMP之后,Mac OS X平台下又一款帮你快速搭建服务器环境软件
之前,有很多人都有打算在自己的Mac OS下搭建一个本地测试用的Apache+PHP+MySQL网络服务器环境. 在目前而言至少有3种办法可以实现这一点: 通过Xcode开发者套件和php.Apach ...
- 批量下载网站图片的Python实用小工具(下)
引子 在 批量下载网站图片的Python实用小工具 一文中,讲解了开发一个Python小工具来实现网站图片的并发批量拉取.不过那个工具仅限于特定网站的特定规则,本文将基于其代码实现,开发一个更加通用的 ...
- 一个终端工具竟然有AI功能?使用了1天我立马把其他终端全卸载了!太香了!
前言 平常工作需要频繁使用终端工具,有一个好的命令行终端工具是非常重要的. 尤其是使用mac的小伙伴,估计不少人都觉得iterm2才是最好的终端工具. 其实起初我也是这么觉得的,但是最近直到我使用了这 ...
- ANDROID开发实用小工具
分享一些 Android开发中的实用小工具,你有发现好工具吗? 来这里分享一下呗 一.find bugs 静态检查工具 http://findbugs.sourceforge.net/ FindBug ...
- [转]12款最佳Linux命令行终端工具
摘要 “工欲善其事必先利其器”,作为菜鸟,也是从别人那里偷学来的一些东东.今天看到同事用到一个终端命令行工具,觉得自己弱爆了.然后在网上搜了下该工具.发现类似的工具还是挺多的,只是自己不知道罢了. 原 ...
- 12款最佳Linux命令行终端工具, 20款优秀的 Linux 终端仿真器
12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的 ...
- 12款最佳Linux命令行终端工具
12款最佳Linux命令行终端工具 如果你跟我一样,整天要花大量的时间使用Linux命令行,而且正在寻找一些可替代系统自带的老旧且乏味的终端软件,那你真是找对了文章.我这里搜集了一些非常有趣的终端软件 ...
随机推荐
- JavaScript与jQuery获取相邻控件
原始代码如下,需求是onclick中的OpenIframe方法捕捉到input中的value值,由于某些限制无法使用正常的操作dom根据name值来取,所以决定通过相邻空间的方式获取 <div& ...
- Python 自动刷博客浏览量
哈哈,今天的话题有点那什么了哈.咱们应该秉承学习技术的角度来看,那么就开始今天的话题吧. 思路来源 今天很偶然的一个机会,听到别人在谈论现在的"刷量"行为,于是就激发了我的好奇心. ...
- 在O(1)时间内删除单链表结点
给定单链表的一个结点的指针,同时该结点不是尾结点,此外没有指向其它任何结点的指针,请在O(1)时间内删除该结点. int deleteNode(LNode **head, LNode **node) ...
- 【移动开发】startForeground()让服务保持前台级别
最近在使用android 4.1系统的时候,发现在手机休眠一段时间后(1-2小时),后台运行的服务被强行kill掉,有可能是系统回收内存的一种机制,要想避免这种情况可以通过startForegroun ...
- 没想到你是这样的UDP
UDP是国际标准化组织为互联网设定的标准中的传输层中的一个协议.TCP/IP协议簇是一个很庞大的家族,但是今天我们就来看一看这个面向无连接的传输层在Java中是怎样通过编程实现的. 原理性知识 在Ja ...
- (一〇六)iPad开发之UIPopoverController的使用
很多App里都有一种点击显示的悬浮气泡菜单,例如下图: 在iPad上可以使用UIPopoverController实现这个功能,popoverController继承自NSObject而不是UIVie ...
- 刀片服务器和磁盘阵列卡(RAID)技术---永和维护
近期客户需要更换服务器,客户把买好的服务器送来了,原本感觉很小的一个服务器,可当我看到的时候是一个大个的又长又宽,类似机房服务器的那种,后来米老师给大致讲解一番:这个是刀片服务器. 刀片服务器是指在标 ...
- gitlab6 配置的几个问题说明
gitlab6 配置的几个问题说明 按照gitlab的网站的详细步骤,终于把gitlab 6.1 stable安装到2台虚拟机上了.由于gitlab6运行于虚拟机上,所以配置这个虚拟机的hostnam ...
- URI记录
URI:统一资源标识符(Uniform Resource Identifier,或URI)是一个用于标识某一互联网资源名称的字符串.该种标识允许用户对网络中(一般指万维网)的资源通过特定的协议进行交互 ...
- (NO.00001)iOS游戏SpeedBoy Lite成形记(十)
上篇最后遇到是神马问题呢? 原来由于现在seq动作的时间变得不确定了,jump的持续时间不能对应发生变化,导致可能选手在比赛后边就没有跳跃动作了!这虽不影响整个代码逻辑,却多少有些让玩家不爽. 一种解 ...