8个不可不知的Mac OS X专用命令行工具

2023-11-16

本文转载至:https://segmentfault.com/a/1190000000509514

OS X的终端下通用很多Unix的工具和脚本。如果从Linux迁移到OS X会发现很多熟悉的命令和脚本工具,其实并没有任何区别。

但是OS X也提供了很多其他系统所没有的特别的命令行工具。我们推荐8个这类的工具,希望有助于提高在Mac的命令行环境下的效率。

1. open

open命令用于打开文件、目录或执行程序。就等同于在命令行模式下,重复图形界面“双击”的动作。例如这个命令与在Finder中双击Safari是一样的:

$ open /Applications/Safari.app/

如果open一个文件,则会使用关联的程序打开之。例如open screenshot.png会在Preview中查看图片。

可以使用-a选项要求自行选择打开的程序,或使用-e强制在TextEdit中编辑此文件。

open一个目录会在Finder窗口中打开此目录。一个很有用的技巧是open .打开当前目录。

Finder和终端的交互是双向的——把文件从Finder中拖入终端,就等同于把文件的完整路径粘贴到命令行中。

2. pbcopy 和 pbpaste

这两个工具可以打通命令行和剪贴板。当然用鼠标操作复制粘贴也可以——但这两个工具的真正威力,发挥在将其用作Unix工具的时候。意思就是说:可以将这两个工具用作管道、IO重定向以及和其他命令的整合。例如:

$ ls ~ | pbcopy

可以将主目录的文件列表复制到剪贴板。

也可以把任意文件的内容读入剪贴板:

$ pbcopy < blogpost.txt

做点更疯狂的尝试:获取最新Google纪念徽标(doodle)的URL并复制到剪贴板:

$ curl http://www.google.com/doodles#oodles/archive | grep -A5 'latest-doodle on' | grep 'img src' | sed s/.*'<img src="\/\/'/''/ | sed s/'" alt=".*'/''/ | pbcopy

使用管道语法配合pbcopy工具可以简单的抓取命令的输出,而不必向上滚动翻阅终端窗口。可以用于和他人分享命令行的标准和错误输出。pbcopypbpaste也可以用于自动化或加速执行一些事情。例如把一些邮件的主题存为任务列表,就可以先从Mail.app中复制主题,再运行:

$ pbpaste >> tasklist.txt

3. mdfind

许多Linux用户都发现Linux下查找文件的方法在OS X上不好用。当然经典的Unix find命令总是可以,但既然OS X有杀手级搜索工具Spotlight,为什么不在命令行上也使用一下呢?

这就是mdfind命令了。Spotlight能做的查找,mdfind也能做。包括搜索文件的内容和元数据(metadata)。

mdfind还提供更多的搜索选项。例如-onlyin选项可以约束搜索范围为一个目录:

$ mdfind -onlyin ~/Documents essay

mdfind的索引数据库在后台自动更新,不过你也可以使用mdutil工具诊断数据库的问题,诊断mdfind的问题也等同于诊断Spotlight。如果Spotlight的工作不正确,mdutil -E命令可以强制重建索引数据库。也可以用mdutil -i彻底关闭文件索引。

4. screencapture

screencapture命令可以截图。和Grab.appcmd + shift + 3cmd + shift + 4热键相似,但更加的灵活。

抓取包含鼠标光标的全屏幕,并以image.png插入到新邮件的附件中:

$ screencapture -C -M image.png 

用鼠标选择抓取窗口(及阴影)并复制到剪贴板:

$ screencapture -c -W

延时10秒后抓屏,并在Preview中打开之:

$ screencapture -T 10 -P image.png

用鼠标截取一个矩形区域,抓取后存为pdf文件:

$ screencapture -s -t pdf image.pdf

更多用法请参阅screencapture --help

5. launchctl

launchctl管理OS X的启动脚本,控制启动计算机时需要开启的服务。也可以设置定时执行特定任务的脚本,就像Linux cron一样。

例如,开机时自动启动Apache服务器:

$ sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist

运行launchctl list显示当前的启动脚本。sudo launchctl unload [path/to/script]停止正在运行的启动脚本,再加上-w选项即可去除开机启动。用这个方法可以一次去除Adobe或Microsoft Office所附带的所有“自动更新”后台程序。

Launchd脚本存储在以下位置:

~/Library/LaunchAgents    
/Library/LaunchAgents          
/Library/LaunchDaemons
/System/Library/LaunchAgents
/System/Library/LaunchDaemons

启动脚本的格式可以参考这篇blog,或苹果开发者中心的文章。你也可以使用Lingon应用来完全取代命令行。

6. say

say是一个文本转语音(TTS)的有趣的工具,引擎和OS X使用的一样也是VoiceOver。如果不加其他选项,则会简单的语音朗读你给定的字符串:

$ say "Never trust a computer you can't lift."

-f选项朗读特定文本文件,-o选项将朗读结果存为音频文件而不是播放:

$ say -f mynovel.txt -o myaudiobook.aiff

say命令可以用于在脚本中播放警告或提示。例如你可以设置Automator或Hazel脚本处理文件,并在任务完成时用say命令语音提示。

最好玩(不过也负罪感十足)的用法是:通过SSH连接到朋友或同事的计算机,然后用say命令给他们一个大大大惊喜……

可以在系统设置(System Preferences)的字典和语音(Dictation & Speech)选项中调整系统的语音选项甚至是语音的语言。

7. diskutil

diskutil是OS X磁盘工具应用的命令行版。既可以完成图形界面应用的所有任务,也可以做一些全盘填0、全盘填随机数等额外的任务。先使用diskutil list查看所有磁盘的列表和所在路径,然后对特定的磁盘执行命令。

警告:不正确使用diskutil可能意外的破坏磁盘数据。请小心。

8. brew

Homebrew程序提供的brew,严格来讲不是一个OS X的原生命令,但任何一个OS X的专业用户都不会错过它。“OS X缺少的包管理器”这个评价是恰如其分的。如果你曾经在Linux上使用过apt-get(或其他包管理器——译者注),你就会发现Homebrew基本上是一样的。

使用brew可以简单的获取数千种开源工具和函数库。例如brew install imagemagick就可以安装ImageMagick(几乎可以处理任何图像问题,转换任何格式的图像工具),brew install node可以安装Node.js(当前大热的服务器端JavaScript编程工具)。

也可以通过Homebrew做有趣的事情:brew install archey会安装Archey(在启动命令行时显示苹果LOGO和计算机硬件参数的小工具)。

Homebrew能安装的工具数量庞大,并且一直保持更新。Homebrew最棒的一点是:所有的文件都被约束在/usr/local/一个位置之下。也就是说可以通过Homebrew安装新版软件的同时,保持系统内置的依赖库或其他软件不变。同时如果想彻底删除Homebrew,也变得非常简单。

(注:删除Homebrew最好还是不要直接删除/usr/local/。应当用这个卸载脚本 。)

最后,这里还有一篇OS X所有命令的完整列表


8个不可不知的Mac OS X专用命令行工具
原文:Eight Terminal Utilities Every OS X Command Line User Should Know
编译:SegmentFault
责任:沙渺


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

8个不可不知的Mac OS X专用命令行工具 的相关文章

  • 数据结构静态顺序表

    顺序表 用一段地址连续存储单元依次存储数据元素的线性结构 seqlist h pragma once 防止头文件重复包含 define MAX SIZE 10 include
  • 苹果电脑升降级MacOS 11-13.x系统安装包

    macOS 13 Ventura 具有许多功能 包括 Stage Manager 和更新的 Spotlight 搜索 目前 苹果已经发布了正式版本 支持机型 iMac 2017 及后续机型 iMac Pro MacBook AIr 2018
  • 《九》TypeScript 中的内置工具

    TypeScript 内置了很多类型工具 来辅助进行类型转换 Partial
  • js获取获取上个月、当月、下个月 第一天与最后一天

    开发中的一个小需求 用js获取获取上个月 当月 下个月 第一天与最后一天 直接上代码 获取上个月 当月 下个月 第一天与最后一天 param val 传值 gt 1 2 3 param specificDate 传入日期 gt 2020 1
  • Java不指定具体数据库名,建立Mysql连接

    碰到个需求 即只提供IP地址 需要获取所有的数据库名 以及各个数据库的详细信息 以下内容为转载 感谢作者 本文是答疑文章 有朋友提出 为什么java建立连接 必须要指定数据库 不能像PHP那样连接数据库后再选择数据库吗 答案是肯定的 能 下
  • QML使用loader加载qml文件到QML

    转自 http blog chinaunix net uid 26126915 id 4366840 html QML的Loader元素经常备用来动态加载QML组件 可以使用source属性或者sourceComponent属性加载 这个元
  • 跨vlan通信-----单臂路由技术

    跨vlan通信 单臂路由技术 实验目标 1 实现跨vlan通信 为什么要使用vlan 1 提高性能 同一个广播域发送广播 造成网络堵塞 2 提高安全性 同一广播域中 机器设备过多 安全性降低 实验网络拓扑 pc1 pc2 pc3 pc4 V

随机推荐

  • Elastic Stack简介及es简单操作

    如果你没有听说过 Elastic Stack 那你一定听说过 ELK 实际上 ELK 是三款软件的简称 分别是 Elasticsearch Logstash Kibana 组成 在发展的过程中 又有新成员 Beats 的加入 所以就形成了
  • M2后日谈

    团队成员的简介 按照字母表序 韩佳胤 http www cnblogs com yinee 黄杨 http www cnblogs com skyjoker 林璐 http www cnblogs com linlu1142 刘俊伟 htt
  • 206.Flink(一):flink概述,flink集群搭建,flink中执行任务,单节点、yarn运行模式,三种部署模式的具体实现

    一 Flink概述 1 基本描述 Flink官网地址 Apache Flink Stateful Computations over Data Streams Apache Flink Flink是一个框架和分布式处理引擎 用于对无界和有界
  • Servlet--会话管理

    默认情况下 一个Web服务器是无法区分一个HTTP请求是否为第一次访问 例如 一个Web邮件应用要求用户登录后才能查看邮件 因此 当用户输入了相应的用户名和密码后 应用不应该再次提示需要用户登录 应用必须记住哪些用户已经登录 即应用必须能管
  • 蓝桥杯 模拟赛 D快速幂

    一个数的整数次幂 是我们在计算中经常用到的 但是怎么可以在 mathcal O log n O log n 的时间内算出结果呢 代码框中的代码是一种实现 请分析并填写缺失的代码 求 x y mod pxymodp 的结果 include
  • c++之 继承、 多态

    目录 继承 1继承的概念及定义 总结 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元 与静态成员 复杂的菱形继承及菱形虚拟继承 多态 多态的概念 虚函数重写的两个例外 重载 覆盖 重写 隐藏 重定义 的对比 抽象
  • JAVA中string按照之前顺序转换JSONObject

    可以使用LinkedHashMap来保持JSONObject中的键值对的顺序 首先 将JSON字符串转换为LinkedHashMap 然后将其转换为JSONObject 代码如下 import com alibaba fastjson JS
  • 计算机二级复习之文件操作

    博主正在准备考二级C语言但是最怕的就是遇到文件操作相关的题 真的是太难了 为了那些和我一起考二级的小伙伴我更新这期C语言文件操作的相关资料 文件的打开与关闭 在打开文件之前我们需要先创建一个文件指针 FILE fp 用来记录地址 文件打开函
  • 源码安装Tomcat及配置

    8005 是tomcat本身的端口 8080 tomcat负责建立HTTP连接 在通过浏览器访问Tomcat服务器的Web应用时 使用 8009 tomcat负责和其他的HTTP服务器建立连接 如nginx和apache互通时使用 tomc
  • 常用中间件启动脚本

    ActiveMQ bin bash description activemq ACTIVEMQ PATH usr local activemq export JAVA HOME usr java jdk1 8 0 241 amd64 cas
  • MySQL字段类型详解

    http www chinaz com program 2009 0105 59154 shtml MySQL支持大量的列类型 它可以被分为3类 数字类型 日期和时间类型以及字符串 字符 类型 本节首先给出可用类型的一个概述 并且总结每个列
  • 联盟链战国:五大巨头横向对比

    联盟链是目前区块链落地实践的热点 也是大家对 杀手级应用 期望最大的区块链部署形态 联盟链的诞生源于对区块链技术的 反思 是对比特币 以太坊所体现的技术特点与企业客户实际需要的融合与折衷 蕴含了大量区块链工作者的智慧与辛劳 由于对未来价值的
  • Node.js

    修改软件安装的路径 此电脑右击 属性 高级系统设置 环境变量 选中path 编辑 修改路径 确定 定义区别 一 浏览器中的JS 1 浏览器中的JS组成 JS核心语法 ECMAScript 和 WebAPI 浏览器内置的API 2 为什么Ja
  • 在cms以及kindeditor中插入百度动态地图的方法

    想在网页中插入动态地图不难 直接打开网址http api map baidu com lbsapi creatmap 然后按照提示操作 最终生成脚本 放到html文件中即可 而在kindeditor中插入动态地图就更简单了 最新版的kind
  • 部分和问题(c/c++)

    给定整数a1 a2 a3 an 判断是否可以从中 选出若干输使得它们的和恰好为k 第一行输入n代表几个数字 第二行输入数字 第三行输入结果 样例 4 1 2 4 7 13 yes 这是一道基础题 对于初学者而言使用两重循环无疑是最便捷的 i
  • 路由器与交换机的基本工作原理

    本文介绍路由器与交换机的基本工作原理 在介绍这之前先来看一下OSI七层工作模型 现在开始解释路由器的作用及其基本工作原理 路由器的作用 1 异种网络互连 比如具有异种子网协议的网络互连 2 子网协议转换 不同子网间包括局域网和广域网之间的协
  • 论文排版:Word加入脚注后,分栏的正文就跑到下一页上去了的解决方案

    在论文排版中 在题目或作者处插入了脚注后 再对正文分栏时 或者先分栏 再在题目或作者处插入脚注 分栏后的正文就跑到下一页上去了 这个问题 我抓狂了很久 终于在搜索若干关键字后得以解决 情况一 稿件格式的要求 1 题目和摘要部分不分栏 正文部
  • 【架构】1.2浅谈架构基础-架构设计的目的

    架构设计的目的 架构设计的目的 软件发展历程 如何识别软件的复杂度 高性能 高可用 可扩展 成本价值 安全因素 架构设计的目的 谈及架构设计 应该IT从业者都很经常听到 然而对于架构设计的目的 可能每个人都有自己的理解 例如 因为现在的系统
  • 毕业设计 opencv图像增强算法系统

    文章目录 0 简介 1 基于直方图均衡化的图像增强 2 基于拉普拉斯算子的图像增强 4 基于伽马变换的图像增强 软件实现效果 最后 0 简介 今天学长向大家分享一个毕业设计项目 毕业设计 opencv图像增强算法系统 项目运行效果 毕业设计
  • 8个不可不知的Mac OS X专用命令行工具

    本文转载至 https segmentfault com a 1190000000509514 OS X的终端下通用很多Unix的工具和脚本 如果从Linux迁移到OS X会发现很多熟悉的命令和脚本工具 其实并没有任何区别 但是OS X也提