Mac命令行效率提高利器篇

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

自动补全

首先咱们来给终端命令行加上自动补全的功能,经过Homebrew安装bash_completion便可。固然须要先安装brew:git

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

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

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

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

brew install bash-completion
复制代码

安装完成后会提示:segmentfault

# 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跳转到该文件。ruby

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

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

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

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

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

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

路径切换

在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以下图所示:

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

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

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

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

命令别名

有时候命令行的命令太长了,咱们可使用一个别名(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分别表示显示隐藏文件和不显示隐藏文件。在命令行中输入这两个命令和上面的长串命令同等功效。

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

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

参考文章

  1. MAC命令行自动补全(git/maven)
  2. Homebrew介绍和使用
  3. mac安装autojump
  4. Mac添加命令别名