1、Shell介绍
1.1、何为shell
关于shell,一个广义的解释就是在用户与操作系统之间,提供一个工具或接口给用户来操作计算机系统;用户在shell中通过输入命令行,按下回车键,shell执行命令后就能返回结果,达到操作计算机的效果。
很多人会问,为什么要学习shell呢?
- 在通过ssh来远程操纵Linux/Unix服务器时,都是使用shell而不是用户界面
- 相比于通过点击多个用户界面来执行操作,输入命令行更加直接和快捷
- 利用管道组合各种可用工具,来创建和定制宏工具
- 使用shell script将重复简单的任务自动
1.2、Shell有哪些功能
- 命令历史记录
- shell就会存储当前标签下正确执行过的命令。
- 历史记录存放在
~/.bash_history
文件。 - 你可以按方向键↑和↓来查看之前执行过的命令。
- 可以使用
ctrl-r
来搜索命令历史记录。
- 命令和文件补全(tab)
- 命令别名
alias
- 命令别名是一个比较有用的东西,特别适应用于简化命令输入。
- 在
~/.bash_profile
或者~/.zshrc
(当你使用zsh时)中配置别名对应的具体命令。
alias pod_update='pod update --verbose --no-repo-update'
- 修改
~/.zshrc
文件之后,要执行source ~/.zshrc
。
- 任务控制
- 将任务放在后台运行:
command + &
- 将任务丢到后台暂停:
ctrl-z
- 查看后台所有任务状态:
jobs -l
- 将后台的任务拿到前台处理:
fg %jobnumber
- 将后台的任务变成运行中:
bg %jobnumber
- 管理后台当中的任务:
kill -signal %jobnumber
- 将任务放在后台运行:
- shell脚本
- 一些shell命令组合在一起编写出来的程序。
- 遵循shell的语法规则,搭配数据重定向、管道、和正则表达式等功能来组合各种工具,实现简单重复任务的自动化。
- 通配符
- 除了完整的字符串之外,shell还支持许多的通配符来帮助用户查询和命令执行。
2、iTerm 2 + oh my zsh
2.1、bash与zsh
Linux/Unix提供了很多种Shell,常用的Shell有这么几种,sh、bash、csh等。通过命令cat /etc/shells
可以查看系统支持哪些shell。
在 Linux 里执行这个命令和 Mac 略有不同,你会发现 Mac 多了一个 zsh,也就是说 OS X 系统预装了个 zsh。
目前常用的 Linux 系统和 OS X 系统的默认 Shell 都是 bash,但是真正强大的 Shell 是深藏不露的 zsh。
2.2、iTerm 2与oh my zsh
- 终端应用
iTerm 2
相比mac自带的Terminal
应用,有太多优点了。例如,支持画面分割,可以设置主题,各种使用的快捷键,以及快速唤出。 - 由于配置
zsh
过于复杂,所以初期无人问津,直到有一天,国外有个程序员开发出了一个能够让你快速上手的zsh项目,叫做「oh my zsh」。 -
oh my zsh
安装
// curl方式
curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh
// wget方式
wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O - | sh
- 查看当前终端使用的shell:
echo $SHELL
。 - 切换终端使用的shell:
chsh -s /bin/zsh
,指定shell的路径。
2.3、外观配置
2.3.1、iterm外观配置
- 配色方案:iTerm -> Preferences -> Profiles -> Colors
- 不用鼠标也可以选择文本:cmd-F -> Tab,tab键可以一直一直按,每按一次多选中一个单词,自动复制到剪切板。
- 支持一键调出命令行:iTerm -> Preferences -> Keys,
Hotkey
下的所有复选框选中,自定义快捷键:cmd-\。 - 设置命令行背景图片、透明度、磨砂等效果。
- 修改
hotkey window
的位置:Profile -> Hotkey Window -> window -> style
2.3.2、oh my zsh主题配置
- Oh My Zsh 提供了很多主题风格,存放在
~/.oh-my-zsh/themes
目录中 - 主题的配置在
~/.zshrc
文件中
ZSH_THEME="robbyrussel"// 主题名字
ZSH_THEME="random" // 随机主题
-
echo $ZSH_THEME
输出当前主题的名称 - 查看当前所有的在线主题
2.4、iterm 2 的功能
- 标签排列切换:如果你在一个窗口中打开了很多标签,使用
cmd-option-e
搜索你要找的那个标签。 -
..
回到上级。 - 目录浏览和跳转:输入
d
,会列出当前会话里访问过的目录,输入列表前的序号,即可以跳转到对应目录下。 - 命令行标记功能:光标在某一行按下
cmd-shift-m
,以后按下cmd-shift
。 - 剪切板历史记录:
- 快照返回:如果你想知道你在之前的某个时间段执行了哪些命令。
- iTerm2 指南
2.5、oh my zsh 插件
- Oh My Zsh 插件篇 - 实用工具
-
oh my zsh
提供丰富的插件,存放在~/.oh-my-zsh/plugins
目录下。 - 想了解每个插件的功能以及如何使用,只要打开相关插件的目录下
xxx.plugin.zsh
文件即可。 - 添加插件的方法一般是在
~/.zshrc
的plugins=(xxx xxx)
里面添加插件名字,然后重新打开命令行窗口。
2.5.1、git
2.5.2、autojump
- 自动补完不算什么,一键直达目录才是终极神器!
- 安装方法
- 自动安装:执行
brew install autojump
。 - 公司电脑自动安装报错:
- 自动安装:执行
"Please source the correct autojump file in your shell's startup file. For more information, please reinstall autojump and read the post installation instructions."
解决办法:往`~/.zshrc`中的插件中添加`autojump`
- 自个电脑,自动安装成功。
-
工作原理
在你每次启动命令后,每次
cd
进哪个目录,autojump
都会记录目录访问的频率,把它添加进它自身的数据库中。使用越多的目录权重越大,当你没有输入完整的名称,autojump会检索它的数据库,并返回最可能的结果。执行j -s
可以查看当前autojump记录的目录和对应权重。 -
几点注意:
- 不要给
autojump
设置j
别名,安装的时候已经设置了。 - 必须在
autojump
启动后访问过的目录,才能使用autojump
跳转。 - 使用
autojump
作为命令名,无法实现跳转(尽管控制台输出了跳转的地址,但是实际依然停留在当前目录)。必须使用j
。 - 如果要从当前目录,进入它自己的子目录,使用
j
,无法使用tab
补全文件名,这时候连续点击两次tab
,会列出所有曾经访问过的包含已输入字符的path,让用户自己选择要跳转的路径。 - 如果要使用
j + tab
自动补全子文件名,应该代替使用jc + tab
,jc
是专门用于打开子文件的。
- 不要给
可以访问目录数据库,并修改它的内容。可以使用下面的命令来手动添加一个目录
autojump -a [目录]
- 把当前目录变成你的最爱和使用最频繁的文件夹,通过命令增加它的权重(或者减少权重)
autojump -i [权重] // 增加权重
autojump -d [权重] // 减少权重
2.5.3、osx
-
tab
在新的标签页打开当前目录 -
cdf
cd到当前finder目录 -
quick-look
快速浏览特殊文件 -
man-preview
在preview打开特定的man page -
trash
将指定文件移到垃圾桶
2.5.4、wd(其实有autojump,wd也没啥必要了)
- 能够快速的切换到常用的目录,有时候我们要进入层级很深的目录,使用
cd
目录非常耗时间,wd
插件解决了这一问题。 - 对于常用目录,第一次进入的时候,输入
wd add web
,给该目录做标记,以后再想进入这个目录,只需输入wd web
。 - 使用
wd rm xx
删除已有的映射 - 使用
wd show
查看已有的映射 - github地址
2.5.5、web-search
使用goolge xxx
在google下搜索xxx内容,同样支持baidu xxx
或者bing xxx
2.5.6、last-working-dir
记录上一次退出命令行时候的所在路径,并且在下一次启动命令行的时候自动恢复到上一次所在的路径。
3、Mac专用命令行工具
- 8个不可不知的Mac OS X专用命令行工具
- OS X所有命令的完整列表