macOS系统命令行最佳实践

替换终端

Iterm2是一个第三方终端软件, 相较于系统自带的terminal提供了更多的功能. 十分推荐.

安装步骤:

  1. 到官网下载最新版的安装包.
  2. 下载完成后是zip文件, 解压后将.app文件拖动到侧边栏的应用程序中即可完成安装

最常用的功能对于我来说就是分屏和profiles了.
profiles可用于保存一些常用的配置, 比如可以把一些经常登录的服务器信息设置为一个profile, 通过添加tag来分类

如果用秘钥对登录, 直接设置为命令即可, 如果需要输入密码, 可用sshpass工具实现密码的保存.

Iterm2下常用的快捷键:

按键 功能
cmd + o 打开profile
cmd + d 垂直分屏
cmd + shift + d 水平分屏
cmd + option + ←/↑/→/↓ 切换屏幕
cmd + [/] 切换屏幕
cmd + shift + I 将输入发送到所有窗口
cmd + ; 查看历史
cmd + shift + h 查看剪贴板历史
cmd + option + e 搜索

安装homebrew

homebrew是macOS下的软件包管理工具, 等同于centos下的yum, ubuntu下的apt-get;

安装

执行此命令即可完成安装.

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

安装完成后, 即可很方便的安装一些linux下常用的工具.
比如安装wget, 执行 brew install wget 即可

替换源

在使用apt-get等工具时, 由于网络原因, 会导致下载软件包的过程十分缓慢, 我们通常会手动替换为国内的源来加速软件包的下载速度. 同样, homebrew也存在一些国内的源, 我目前使用的是中科大的源
替换步骤:

1
2
3
4
5
6
7
8
9
# 替换brew.git:
cd "$(brew --repo)"
git remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 替换homebrew-core.git:
cd "$(brew --repo)/Library/Taps/homebrew/homebrew-core"
git remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git

echo 'export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles' >> ~/.zshrc
source ~/.zshrc

homebrew的常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 安装
brew install <formula>
brew search vi
brew search /正则表达式/ # 标准格式
brew search /^vi/ #规定了只能是vi开头
brew search /^vi\\w$/ #规定只能是vi开头并且只有三个字母

# 卸载对应包名字
brew uninstall <package_name>
# 列出过时的包
brew outdated
# 更新过时的包,不带包名就跟新所有包
brew upgrade [ package_name ]
# 跟新HomeBrew自身
brew update
# 清除缓存
brew cleanup [包名]
# 列出已经安装的包
brew list

替换GNU的命令

macOS和Linux虽然都是Unix-like操作系统, 但是macOS并不是Linux; 据说乔帮主最初打算采用Linux内核, 但是由于没能和Linux之父Linus谈成, 后来采用了BSD内核. BSD和Linux是两个完全不同的分支, 虽然大多数命令命名相差不大, 但是用法还是有些差异的. 就拿最基本的ls来讲, 参数和Linux下的ls是不同的. 由于Linux是发行在GNU下的, 所以这里说的的Linux命令也就是指GNU命令

对于用惯了Linux的同学来讲, 基于BSD的命令用起来多少有点不太习惯. 好在他们都是基于POSIX标准的. 可以将GNU的命令在macOS下编译即可运行. homebrew为我们提供了一个快捷的方式来编译安装GNU的命令

执行以下命令即可(此过程时间较长. 会自动下载源代码并编译安装)

1
2
3
4
5
brew install coreutils
brew install findutils --with-default-names
brew install gnu-sed --with-default-names
brew install grep --with-default-names
brew install gnu-tar --with-default-names

安装完成后可通过gls, gdf等方式调用gnu的命令, g开头代表是GNU的命令. 也可配置如下环境变量, 优先使用gnu的命令:

1
2
export PATH="/usr/local/opt/coreutils/libexec/gnubin:$PATH"
export MANPATH="/usr/local/opt/coreutils/libexec/gnuman:$MANPATH"

这样的话就不需要在命令前加g了.

Tips: 如何查看指定命令使用的是系统命令还是自定义的命令.
which -a ls (会显示所有, 按照优先级从上往下排列)
或者 type -p ls
不要用whereis !!!. 可能显示错误的结果

参考1: apple.stackexchange…
参考2: zhuanlan…

安装sshpass

出于安全考虑, brew不能安装sshpass, 可通过手动编译方式安装

1
2
3
4
5
6
wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz  
tar xvzf sshpass-1.05.tar.gz
./configure --prefix=/usr/local/Cellar/sshpass/1.05
make
make install
ln -s /usr/local/Cellar/sshpass/1.05/bin/sshpass /usr/local/bin/sshpass

lrzsz

可方便登录Linux服务器后与自己的电脑互传文件. 如需要此工具可参考下列文章
http://www.jianshu.com/p/4926a957a41e
https://github.com/mmastrac/iterm2-zmodem

安装指定版本的包

可参考
https://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula


安装oh-my-zsh

安装

oh-my-zsh在zsh的基础上引入了一些插件. 比起系统默认的bash要好用很多.

安装之前首先要安装git brew install git 和zsh; 由于近几年发布的macOS系统已经自带了zsh. 因此可以直接执行以下命令完成安装

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

配置文件位于 ~/.zshrc

常用功能

  1. tab自动补全: 文件, 命令, 参数的补全提示会更加友好.
  2. kill 扩充. 例如可键入kill java, 再按tab键, 会列出所有java的进程. 选择即可kill
  3. 进入到有git仓库的目录, 会显示当前仓库的状态.

shell下常用的快捷键

适用于zsh和bash

按键 功能
ctrl + u 清除当前行
ctrl + l 清除屏
ctrl + a / e 到行首/尾
ctrl + f / b 右移/左移
ctrl + p 上一条命令
ctrl + r 搜索命令历史
ctrl + d 删除当前光标的字符
ctrl + h 删除光标之前的字符
ctrl + w 删除光标之前的单词
ctrl + k 删除到文本末尾
ctrl + t 交换光标处文本

[完]

0%