博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MacBook 最佳实践
阅读量:5885 次
发布时间:2019-06-19

本文共 9096 字,大约阅读时间需要 30 分钟。

本文不再更新,最新版在

MacBook 兼具命令行的高效与图形界面的酷炫,实在是程序员必备利器。本文主要介绍我在两年的使用过程中总结出的一些最佳实践,供大家参考、借鉴。

Mac OS 简介

Mac OS可以被分成操作系统的两个系列:

  • 一个是老旧且已不被支持的“Classic”Mac OS(系统搭载在1984年销售的首部Mac与其后代上,终极版本是Mac OS 9)。采用Mach作为內核,在Mac OS 7.6.1以前用“System vX.X”来称呼。
  • 新的OS X结合、OpenStep和Mac OS 9的元素。它的最底层建基于Unix基础,其代码被称为Darwin,实行的是部分开放源代码。

关于为什么Mac系统没有采用Linux内核,而是采用了BSD还有个小故事,感兴趣的大家可以看这篇文章。

尽管 Mac 的文件系统目录和 Linux 差不多,但还是有些差距,可参考下面的表格:

Mac 开发环境部署

包管理器

The missing package manager for macOS

brew相当于Ubuntu下的apt-getCentOS中的yum。非常方便实用,一条命令即可安装:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"复制代码
  • brew install <cli-program>,安装命令行工具
  • brew cask install <gui-program>,安装图形界面软件,这得益于扩展

文本编辑器

# 安装命令brew cask install atom复制代码

Atom 新时代的文本编辑器,功能和 Sublime 差不多,但是免费开源,快捷键也类似,可以无缝迁移。两个非常实用的快捷键:

  • Multiple Selection Control+Command+G(在 Linux/Windows 下,是Alt+F3
  • 选中多行 Shift+Command+L

神之编辑器

# 安装命令brew install --with-cocoa --srgb emacs复制代码

其实 Mac 是有自带 Emacs 的,位置是/usr/bin/emacs,只是版本非常旧,通过brew安装的位置在/usr/local/bin/emacs,可以通过下面的命令删除 Mac 自带的 Emacs:

sudo rm /usr/bin/emacssudo rm -rf /usr/share/emacs复制代码

为了能在 git,终端中默认使用 Emacs,需要做以下配置:

# ~/.bashrcexport EDITOR="emacsclient -t -a=\"\""export ALTERNATE_EDITOR=""# ~/.gitconfig[core]    editor = emacsclient -t -a=\\\"\\\"复制代码

上面的配置会调用 emacsclient 去连接 emacs daemon服务,如果服务没启,就先启动服务再去连接。

API 查阅工具

# 安装命令brew cask install dash复制代码

Dash gives your Mac instant offline access to 150+ API documentation sets.

安装 Dash 后,就可以离线查各种语言/框架的 API 文档了。?

抓包工具

# 安装命令brew cask install wireshark复制代码

也许是最强大的抓包工具,从其名字上就能体现出:wire(线路)+ shark(鲨鱼)。但这个软件初次使用时有些难度,最重要的是区分两个概念:

  • capture filter,在抓包开始时指定。
    常见表达式
# Capture only traffic to or from IP address 172.18.5.4:host 172.18.5.4# Capture traffic to or from a range of IP addresses:net 192.168.0.0/24# Capture non-HTTP and non-SMTP traffic on your server (both are equivalent):host www.example.com and not (port 80 or port 25)host www.example.com and not port 80 and not port 25# Capture traffic within a range of ports  with newer versions of libpcap (0.9.1 and later):tcp portrange 1501-1549#Capture only IPv4 traffic - the shortest filter, but sometimes very useful to get rid of lower layer protocols like ARP and STP:ip# Capture only unicast traffic - useful to get rid of noise on the network if you only want to see traffic to and from your machine, not, for example, broadcast and multicast announcements:not broadcast and not multicast复制代码
  • display filter,在抓取一定包后进行过滤。
    常见表达式
ip.dst_host == 192.168.30.103 and tcp.dstport == 80ip.addr == 10.43.54.65# is equivalent toip.src == 10.43.54.65 or ip.dst == 10.43.54.65复制代码

终端

# 安装命令brew cask install iterm2复制代码

Mac自带的终端不是很强,程序员们需要一个强劲的终端来工作,于是有了 iTerm2,这个终端可以很方便的用快捷键来达到分屏(CMD+D)、开多个Tab(CMD+T)、在多个Tab之间进行切换(CMD+数字),其中有一点不好的是不能按字移动,如果我们在终端上键入"OPTION+向左键",会输入一个特殊字符,我们需要自定义两个Action为Send Escape Sequence的快捷键,效果如下图:

我这里把向前按字移动设为了"OPTION+CMD+向左键",向后按字移动设为了"OPTION+CMD+向右键"。

当然,说到了 iTerm2,不得不提到终端复用软件 ,tmux 默认配置文件在 Mac 上很别扭,你可以参考我这里的,这样 tmux 就可以像 vim 一样实现各种分屏的效果了。如果你还不知道 tmux 为何物,强烈推荐你看这个13分钟的,绝对物超所值,感谢 的分享。

终端中输入命令时,移动光标有两种方式,一个是 emacs,一个 vi,可以通过 set 命令来设置,默认的是 emacs 模式,也可以通过set -o emacs来显式设置,有如下快捷键:

  • ctrl + a Move cursor to beginning of line
  • ctrl + e Move cursor to end of line
  • meta + b Move cursor back one word
  • meta + f Move cursor forward one word
  • ctrl + w Cut the last word
  • ctrl + u Cut everything before the cursor
  • ctrl + k Cut everything after the cursor
  • ctrl + y Paste the last thing to be cut
  • ctrl + _ Undo

如果想使用 vi 模式,可以使用如下命令set -o vi开启。 开启vi 模式后,默认是 insert 模式,按下esc键进入命令模式。

  • h Move cursor left
  • l Move cursor right
  • A Move cursor to end of line and put in insert mode
  • 0 (zero) Move cursor to beginning of line (doesn't put in insert mode)
  • i Put into insert mode at current position
  • a Put into insert mode after current position
  • dd Delete line (saved for pasting)
  • D Delete text after current cursor position (saved for pasting)
  • p Paste text that was deleted
  • j Move up through history commands
  • k Move down through history commands
  • u Undo

参考:

其他一些有用的快捷键:

  • Ctrl + r 搜索历史命令
  • !! 执行上条命令
  • Ctrl+x Ctrl+e 调用

~/.bashrc

Linux 一般通过~/.bashrc进行环境变量的配置,但是在 Mac 下配置后,发现根本没有效果,这是为什么呢? 其实这是个比较基础的问题,shell有两种:登录式shell与非登录式shell,直观理解,登录(login)式shell就是在你打开shell要求你输入用户名与密码的shell,我们在使用桌面Linux时一般只在登录时接触到这种shell,等我们进入系统后,再打开的Terminal就是非登录式shell了。这两种 shell 读取配置的文件是不同的:

  • 登录式Shell启动时会去读取~/.profile文件(Redhat、Mac上为 ~/.bash_profile
  • 非登录式Shell会去读取~/.bashrc文件

这也就解释了为什么在 Linux 系统上只需要修改 ~/.bashrc 后即可生效的原因。但在 Mac 上有些不同,开机后再通过 Terminal.app(或iTerm.app) 打开终端时,这时的 shell 是登录式shell,因为Terminal.app(或iTerm.app)这个应用程序是通过/usr/bin/login这个命令打开终端的,所以不会去source ~/.bashrc了。 解决方法也很简单,在~/.bash_profile加上下面一句代码就ok了

[ -r ~/.bashrc ] && source ~/.bashrc复制代码

Mac下ls命令默认是没有颜色的,不是很直观,可以自己设置一个alias,参考

export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcxalias ls='ls -FG'alias ll='ls -l'复制代码

为了在命令行提示符中显示时间,可以设置PS1变量

export PS1="\n\e[1;37m[\e[m\e[1;35m\u\e[m\e[1;36m@\e[m\e[1;37m\h\e[m \e[1;33m\t\e[m \w\e[m\e[1;37m]\e[m\e[1;36m\e[m\n\$ "# 效果如下[liujiacai@macbook 22:02:13 ~]复制代码

系统快捷键

  • 查看桌面F11
  • HOME Command + <-
  • END Command + ->
  • 锁屏 Shift + Control + 电源键 (Windows 下为Win+L
  • 强制关闭程序 Command + Option + esc(Windows 下为Ctrl+Alt+Delete

Finder

Finder是Mac上的文件浏览器,其中有个比较严重的问题时,没有“剪贴(cut)”功能,当我们选中一个文件后,菜单中的“Edit”->“Cut”是灰色的,也就是无法使用,这是因为Finder中的“Cut”只适用于文本,对于文件就无能为力了。 我们当然可以通过打开两个Finder窗口,然后“拖”过去。但是这样未免太麻烦了,其实我们可以这么做:

  1. 首先Cmd + C复制文件
  2. 然后找到你想要放到文件夹
  3. 最后Cmd + Option + V就能实现“剪贴”的效果了。

参考:

JDK

# 安装命令brew cask install java复制代码

通过brew cask安装后,可以通过执行/usr/libexec/java_home这个命令来获取JAVA_HOME

export JAVA_HOME="$(/usr/libexec/java_home)"复制代码

实用命令

# 修改hostnamesudo scutil --set HostName 
# 查看USB设备system_profiler SPUSBDataType复制代码

下面的命令需要通过brew进行安装后在使用

# 查看网络请求brew install httpstat$ httpstat baidu.comConnected to 180.149.132.47:80 from 172.17.10.80:54727HTTP/1.1 200 OKDate: Sat, 14 Jan 2017 13:49:16 GMTServer: ApacheLast-Modified: Tue, 12 Jan 2010 13:48:00 GMTETag: "51-47cf7e6ee8400"Accept-Ranges: bytesContent-Length: 81Cache-Control: max-age=86400Expires: Sun, 15 Jan 2017 13:49:16 GMTConnection: Keep-AliveContent-Type: text/htmlBody stored in: /var/folders/2g/fxz_98ks0lgc79sjp5vn5cxc0000gn/T/tmpsawHq4  DNS Lookup   TCP Connection   Server Processing   Content Transfer[    69ms    |      37ms      |       33ms        |        0ms       ]             |                |                   |                  |    namelookup:69ms           |                   |                  |                        connect:106ms             |                  |                                      starttransfer:139ms            |                                                                 total:139ms# Swiss Army Knife for macOS !brew install m-cli$ m trash statusSize:  51GNumber of files: 252172复制代码

常用软件

日常使用的软件首选通过App Store进行安装,默认安装在/Applications下,个人从互联网上单独下载的软件放在这里面即可出现在Launchpad中找到。 对于通过App Store安装的软件,在Launchpad界面,按住Option键可进行删除。但是需要注意一点的时,应用程序一般都会有些历史文件,存放的位置有如下三处

  • ~/Library/Application Support/<Application name>
  • ~/Library/Cache/<Application name>
  • ~/Library/Preferences/<Application name>.plist

使用find + grep的方式就能轻松找出来了。网上也有诸如、的小软件,大家可以根据需要自取之。

下面介绍下我日常使用的一些免费软件,供大家参考。

PS: Mac 下有很多非常实用的收费软件,我个人用的并不多,这里就不在列举了。 大家可以参考知乎上的

浏览器

Mac 上自带的 Safari 比较轻量,虽然比较省电,但扩展性远不如 Chrome、Firefox,所以这两个是必须的。

brew cask install firefoxbrew cask install google-chrome复制代码

图片截屏、合并

Mac上的截图工具已经很好了,Cmd + Shift + 3/4就够用了,但是如果想在图片上写些文字,马赛克某部分,就不行了,推荐用 Snip,才 2M 大小,虽说是腾讯开发的,但是不流氓。可以设置快捷键,我设定的是Cmd + Shift + 6。 更重要的一点是, 可以解决Retina下截屏2x问题(就是截出来的图超大),就光这个特点就足以让你使用snip。

Mac自带的 Preview 可以对图片进行旋转、调整大小、添加文字,不需要在额外安装软件。

此外,如果要对两张图片进行合并,需要通过安装 ,并且通过以下命令操作:

brew install ImageMagick# 下面两条命令都会把 left.png right.png 合并到 merged.png 里面convert +append left.png right.png merged.pngmontage -geometry 100% left.jpg right.jpg merged.jpg复制代码

如果你依赖于Evernote,可以试试,洋名skitch,同样很好很强大。

录屏 gif

# 安装命令brew cask install licecap复制代码

很多时候我们需要把自己的操作展示给别人看,比较好的做法是通过录屏软件将自己的操作保存成 gif 格式的图片。 的 很好的解决了这个问题。

流程图制作工具

对于程序员来说,流程图应该是再亲切不过的了,一张图胜过千言万语。之前我都是用 Keynote 来画,但是实在是不好用,后来在上发现了在线版的,大大减少了我画流程图的时间,上手也比较快。

视频播放器

# 安装命令brew cask install vlc复制代码

Mac下的自带的播放器QuickTime,功能实在是太弱了,支持的格式既少又难用,快进什么的貌似都没快捷键,只能手动点击进度条,试用了一段时间的,发现效果也不好,会有视频卡顿的现象,最终选择了 ,一直用的还不错。

此外, 有网友补充道 才是程序员最佳播放器,大家也可以尝试下。

音乐频播放器

# 安装命令brew cask install vox复制代码

官方的 iTunes 实在是不适应,喜欢简洁清爽的朋友可以试试

*.webarchive

在windows下保存网页时,如果想把网页上的资源,比如css、js、image等一起下载下来,会单独生成个文件夹,但是用 Mac 上的 Safari 保存整个网页时,是以webarchive为后缀名的文件进行保存的,如何把打开这种文件呢?推荐:

http://sourceforge.net/projects/webarchivext/

虚拟机

# 安装命令brew cask install virtualbox复制代码

在天朝,很多网站是只支持 IE 的,Mac 下的 Firefox, Chrome, Safari 这时候都显得心有力而不足了,而且很多软件也只有 Windows 版,所以装个虚拟机是非常有必要的。 Virtualbox 是我自用 Ubuntu 以来一直用的虚拟机,开源免费。

常见问题

不能写 NTFS

用惯了 Windows 的大家都习惯用 NTFS 文件系统格式,但是很遗憾,这个文件系统是微软自己搞得,不是开放的,所以 Mac 是不支持的,如果你以前的 NTFS 格式的硬盘放到 Mac 上,会发现只能进行读操作,不能写入,这属于正常现象,不要惊慌。

解决的方法也很简单,把移动硬盘格式化成FAT32(单个文件大小不能超过4G)或FAText 格式都可以,Mac 自带的磁盘工具就可以进行格式转化,当然你需要先把移动硬盘上的数据拷贝出来。

Wi-Fi 时常中断

Mac 生于乔帮主之手时,为了凸显尊贵,接口与一般的电脑有很大不同。常见的网线没办法直接连接 Mac 电脑,需要单独购买一个,所以大部分同学都是使用无线连接,但 Mac 这里应该是有个 bug,而且是很久的 bug,我用 Mac 两年了,偶尔会遇到几次,网上解决的方法有如下几种:

  1. 修改网络位置,不是其默认的“自动”就好
  2. 修改路由器,把无线信道改为6或9
  3. 关闭蓝牙,Mac 中,同时打开蓝牙与 Wi-Fi 会冲突。

如果你的 Mac 也遇到了 Wi-Fi 问题,可以试试上面三个解决方法。

总结

Once you get Mac, you never come back!

参考

PS: 微信公众号,头条,掘金等平台均有我文章的分享,但我的文章会随着我理解的加深不定期更新,建议大家最好去我的阅读最新版。

转载地址:http://lmlix.baihongyu.com/

你可能感兴趣的文章
Nomad添加acl认证
查看>>
“TI门外汉”网路知识笔记一 OSI参考模型
查看>>
你不需要jQuery(五)
查看>>
DatanodeDescriptor说明
查看>>
ServlertContext
查看>>
Python WOL/WakeOnLan/网络唤醒数据包发送工具
查看>>
sizeof(long)
查看>>
pxe网络启动和GHOST网克
查看>>
2.5-saltstack配置apache
查看>>
django数据库中的时间格式与页面渲染出来的时间格式不一致的处理
查看>>
增强myEclipse的提示功能
查看>>
[翻译]Protocol Buffer 基础: C++
查看>>
runloop与线程的关系
查看>>
[Bzoj2246]迷宫探险(概率+DP)
查看>>
详解消息队列的设计与使用
查看>>
使用Sqoop从mysql向hdfs或者hive导入数据时出现的一些错误
查看>>
控制子窗口的高度
查看>>
处理 Oracle SQL in 超过1000 的解决方案
查看>>
Alpha线性混合实现半透明效果
查看>>
chkconfig 系统服务管理
查看>>