Mac命令行效率提升利器篇

在Mac系统下熟练使用命令行可以使工作更高效,几乎所有的操作都可以用命令行来完成。但这些操作的前提是需要记住各种命令,而且系统原生的终端没有自动补全功能,这让用惯了Xcode的我们尤其不习惯。另外,命令行下路径的切换也显得较为繁琐。工欲善其事必先利其器,本文将介绍一些工具和设置,让命令行使用起来更方便更智能。

自动补全

首先我们来给终端命令行加上自动补全的功能,通过Homebrew安装bash_completion即可。当然需要先安装brew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

在命令行中输入上述命令安装Homebrew. 这是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等众多功能。通过一条指令,就可以实现包管理,而不用关心各种依赖和文件路径的情况。

Homebrew 会将软件安装到独立目录,并将文件链接至/usr/local路径

安装完Homebrew后就可以使用它来安装bash_completion了,在终端中输入如下命令:

brew install bash-completion

安装完成后会提示:

# Add the following lines to your ~/.bash_profile:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

按照提示将上述语句(最后三行)复制到.bash_profile文件中。需要注意的是.bash_profile为隐藏文件,所以要先显示所有文件,然后在Finder中按快捷键Command+Shift+G跳转到该文件。

image

默认brew会安装bash-completion,可以先通过brew list查看,没有再执行上面的安装步骤。

完成上面的操作之后就可以使用自动补全了,比如我们在某个路径下要打开某个文件,但是忘记那个文件的名字了,或者只记得前几个字母,有了自动补全,我们只需要输入open然后直接按tab键就会出现目录下的文件了,然后继续按tab选择你需要打开的文件名直接回车确认就可以了。效果如下:

image

除了系统自有的一些命令补全外,我们还可以把git的常用命令也加入到自动补全里面。首先到git主页下载contrib/completion/目录下的git-completion.bash文件,并将文件放到个人主目录下:

image

然后修改.bash_profile文件,在其中添加下列内容:

mv git-completion.bash ~/.git_completion.bash
# Add to your .bash_profile:
source ~/.git_completion.bash

完成后重新启动下命令行终端就可以使用git的自动补全了,效果如下所示:

image

路径切换

在Mac下使用命令行切换路径通常是使用cd命令,比如在命令行中输入:

cd /Users/Ryan/iOSDev/Documents 

即可跳转到Documents目录下,但是繁琐的地方在于每次都需要输入完整路径。能不能让命令行记住常用的一些路径且快速切换呢?可以!使用autojump就可以实现。autojump是一个命令行工具,它允许你直接跳转到你常用的目录,而不受当前所在目录的限制。

autojump的安装环境推荐使用zsh, zshshell的一种,在Mac OS下默认的shellbash, 但其实zsh是更强大的shell且其完全兼容bash, 我们先来看下怎么安装并切换到zsh:

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

在命令行中输入上述命令即可安装zsh, 安装成功后我们需要将系统的默认shell设置为zsh:

chsh -s /bin/zsh

这个命令会重启shell, 完成后我们在命令行输入:

echo $SHELL

即可查看当前使用的是哪个shell (bash or zsh).

shell其实就是一个c语言编写的程序,我们在命令行输入的命令,都是经过shell解释后传送给操作系统(内核)执行。

切换shell之后我们可以来安装autojump了,还是和上面一样使用brew来安装,在命令行中输入如下命令:

brew install autojump

安装完成后,系统用户根目录下会出现.zshrc文件(和上面的.bash_profile同一个目录),跳转到这个文件并用文本编辑器打开,在其中找到 plugins=, 修改为:

plugins=(
    git autojump
)

之后新起一行,添加:

[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh

修改完内容后.zshrc如下图所示:

image

安装完后我们就可以使用autojump来快速跳转路径了,在autojump中使用j(别名)来代替cd指令,比如我们想跳转到一个路径,但是我们记不得路径全称,只记得里面有perfect这个单词,那么就直接在命令行输入j perfect然后按tab键,就会出来包含perfect的路径,继续按tab键选择需要进入的路径再回车确认即可切换到该路径下:

image

autojump会对访问过的文件和文件夹按照使用频率排序,所以想通过autojump快速跳转的路径必须是之前访问过已经被autojump记录到数据库中的路径,这样它才会再按照频率列出文件和文件夹。

上文只是对autojump基本功能的介绍,至于它的详细功能列表可以到其主页上查看。这边就不再赘述了。另外还一个和功能类似的快速跳转工具fasd, 感兴趣的话也可以自行了解下。

除此之外,还有一个赖人软件
TermHere, 下载
安装后在任意位置(文件夹上或者文件夹里面目录中)右击鼠标,会发现多了一个菜单项「New Terminal Here」点击它就会出现终端窗口,并且当前目录就是你所指的位置。

image

命令别名

有时候命令行的命令太长了,我们可以使用一个别名(alias)来代替,类似于程序中的宏。比如我们显示隐藏文件的命令为:

defaults write com.apple.finder AppleShowAllFiles true ; killall Finder

这个命令太长了,我们可以添加一个别名来代替。打开.zshrc文件,在其中添加下列内容:

alias sfy="defaults write com.apple.finder AppleShowAllFiles true ; killall Finder"
alias sfn="defaults write com.apple.finder AppleShowAllFiles false ; killall Finder"

需要注意的是等号两边均无空格,指令名称中如有空格,需用引号包裹,具体格式为:

alias [别名]='[指令名称]'

添加完后如下图所示,我们添加了两个别名sfysfn分别表示显示隐藏文件和不显示隐藏文件。在命令行中输入这两个命令和上面的长串命令同等功效。

image

保存并关闭.zshrc文件,重新启动命令行后执行别名指令,效果如下所示:

image

如果没有切换过shell, 还是在系统默认的bash下,则需要把别名的内容添加到bash所对应的.bash_profile文件里面。

参考文章

  1. MAC命令行自动补全(git/maven)
  2. Homebrew介绍和使用
  3. mac安装autojump
  4. Mac添加命令别名
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,117评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,963评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,897评论 0 240
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,805评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,208评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,535评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,797评论 2 311
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,493评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,215评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,477评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,988评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,325评论 2 252
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,971评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,055评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,807评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,544评论 2 271
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,455评论 2 266

推荐阅读更多精彩内容