终极Shell修行大法-不得不拥有

Homebrew

Shell神器,OS X 不可或缺的套件管理器。Homebrew较之于Shell,好比CocoaPod较之于Xcode。这么说,Homebrew的定位就应该相当明确了吧!

  • 安装:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 卸载:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
  • 更新已安装的package
    • 先更新brew:$ brew update
    • 更新所有package:$ brew upgarde
  • Homebrew下载的package存放的路径在哪里?
    • /Library/Caches/Homebrew/

Homebrew 可以很方便的安装需要的套件,方法如下:$ brew install wget。是不是很简单?

Homebrew 使 OS X 更完美。使用 gem 来安装 gems、用 brew 来搞定那些依赖包。

Tips:

  • 如果安装过程中提示错误,提示先卸载,但执行卸载命令又卸载不掉,说明有曾经安装失败过,有残留。解决方式删除/usr/local文件夹即可。
Homebrew安装失败.png

wget

wget是一个从网络上自动下载文件的自由工具,支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载,并可以使用HTTP代理。wget名称的由来是“World Wide Web”与“get”的结合。

  • Homebrew下安装: 在安装了Homebrew的情况下安装wget特别简单。只需要:$ brew install wget 即可。如果没安装Homebrew建议赶紧安装。
  • 正常安装(特别复杂,不建议直接安装):
    1. http://ftp.gnu.org/gnu/wget/wget-1.13.4.tar.gz
      下载源码包。这里面找到最新版本,直接下载安装就行了
    2. 到目录cd /usr/local/src 解压: tar -zxvf wget-1.13.tar.gz
    3. ./configure,这个过程第一次是不成功的,然后提示你下载安装一个make,安装make后,再运行一下./configure
    4. make
    5. sudo make install

zsh

终极shell,Mac自带就有,使用oh-my-zsh进行配置,简单又强大.配合iTerm 2一同使用,简单又强大。

Oh My Zsh.png
  • 安装

    1. 下载一个 .oh-my-zsh 配置(推荐有)

      git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
      
    2. 创建新配置(备份)
    
     ```ruby  
     cp ~/.zshrc ~/.zshrc.orig
     cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
    
    1. 把 zsh 设置成默认的 shell

       chsh -s /bin/zsh
      
    2. 重启 zsh (打开一个新的 terminal 窗口)

  • 配置

    • 主题:agnoster
    • 字体:Powerline (把 iTerm 2 的设置里的 Profile 中的 Text 选项卡中里的 Regular Font 和 Non-ASCII Font 的字体都设置成 Powerline 的字体。)
      • 推荐使用 14pt Meslo LG S DZ Regular for Powerline
  • 设置命令正确绿色高亮,错误红色高亮

    git clone git://github.com/jimmijj/zsh-syntax-highlighting ~/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
    
    • 然后在~/.zshrc中插件那添加
      • plugins=(zsh-syntax-highlighting)
  • 加强zsh的补全功能实现tab自动纠错

    • 把这两句话添加到oh-my-zsh/lib/completion.zsh (末尾)
    zstyle ':completion:incremental:*' completer _complete _correct
    zstyle ':completion:*' completer _complete _prefix _correct _prefix _match _approximate
    

zsh 好处

  1. zsh 可以补全参数
    当你敲指令敲到一般的时候,不必在虚拟终端下Ctrl_Shift_T 打开一个新标签看手册了,只需要一个<Tab>,zsh 会为你列出所有符合你已经输入部分的参数,其后跟着参数说明,你需要的只是看下其后的说明,然后选中你需要的参数按下回车键。视频中我们差一点就用纯tab 完成了一条dd 指令。

  2. zsh 的参数补全是智能补全
    简单的例子:
    当你输入ls 指令按下<Tab> 的时候,zsh 会列出目录下所有的文件并让你交互式处理。
    当你输入unzip 指令要求补全的时候,zsh 只会列出zip 文件
    当你输入kill 指令要求补全的时候,zsh 会列出所有符合要求的进程并自动把参数转换为PID。
    当你输入参数的一部分时(例如systemctl 的--type=,-t),zsh 会列出其后所有的可能性供你选择。

  3. zsh 可以补全路径
    当你想到你的vim 插件目录下看看的时候,你甚至连cd 都不需要输入,你要做的只是/u/s/v/vimf/p<Tab><Enter>

  4. zsh 可以不额外安装autojump 在目录中快速跳转
    安装oh-my-zsh 后,在你的plugins=() 中加入jump(事实上这个插件提供的是几个函数)。之后mark dir 标记一个目录,下次jump dir 就可以快速跳转到该目录。

  5. zsh 可以自动纠错指令
    当你输入了错误的指令时,如果只是几个字母按错了,一个<Tab> zsh 就会为你自动纠错。
    你可以利用这个特性缩写指令,例如把systemd-analyze 变成sys-an<Tab>。

  6. zsh 可以预先告知你指令中的错误
    zsh 会将错误的指令显示为红色,正确的指令(或者函数、alisa)会被显示为绿色。
    至于目录和文件,虚拟终端下,存在的文件或目录会被显示为下划线形式,tty 下则是绿色,不存在的都会被现实为普通的白色。
    所以当你重定向> file,如果file 带下划线,你会事先明白你的操作会清空一个已经存在的文件而不是重定向到新文件。这个特性对于新手来说是非常有用的。

  7. zsh 可以补全环境变量
    环境变量大多数都比较难记,而且大小写都有,感到很困难?zsh 中一个tab 为你列出所有符合期望的环境变量,你做的只是按上下左右键挑选一个即可。

  8. zsh 有多重定向的功能
    简单的例子:
    当你指令后跟着">/dev/null >1 >2" 的时候,zsh 明白你的意思是将stdout 分别重定向到三个流,但是bash 就无法如此。
    而当你后跟">/dev/null 2>&1 &" 的时候,zsh 明白你的意思是将stdout 和stderr 都重定向到一个流。
    zsh 会推断你的意图,如果你是perl 用户,你会很熟悉这种行为。

  9. zsh 可以提示通配符的作用范围
    不知道有多少人有过"rm -rf dir/<空格>* " 的悲剧——你想清空目录其下的文件并保留目录,结果删除了当前目录下所有的文件。
    zsh 会将被通配符作用的参数显示为深蓝色,当你手贱在"dir/" 和"" 之间敲了一个回车的时候,"/dir" 会立刻变白,你会明白我的通配符无法作用于"dir/",从而预料到这条指令可能造成什么后果。
    事实上:zsh 也有着防手贱的能力,当你rm -rf dir/
    的时候,即使带着-f 参数,zsh 仍然会询问你是否真的想这样做(但是不要认为zsh 总会这样)。

  10. zsh 可以有区分的提示指令历史
    在你的.zshrc 的plugins=() 中添加history 插件,简单的例子:
    在目录A 下输入ls 按上箭头,zsh 会提示你所有在目录A 下执行的ls 指令——zsh 绝对不会补全一个在其他目录下指令的ls 指令的,因为zsh 明白即使补全了,这条指令也对你毫无用处。
    当然这样做有好有坏,如果你不喜欢这个特性,不要启用history 插件。

  11. zsh 内置了大量的命令提示符样式
    .zshrc 的plugins=() 中添加theme 插件,敲theme 指令回车可以随机选择,后跟参数可以选择指定的样式,例如theme gen<Tab><Enter> 会切换到gentoo 样式,这也是新手美化过程中非常痛苦的一环。

  12. zsh 可以alisa 参数
    相对于其他shell 的alisa 指令,zsh 中你可以为参数alisa 一个缩写!

  13. zsh 脚本的语法更加顺手
    简单的例子:bash 中设置PATH,你需要PATH 后跟长长的一串,然而zsh 中可以写成
    PATH=(
    dir1
    dir2
    dir3
    ……
    )

  14. zsh 的配置非常省心
    安装oh-my-zsh 后,配置都已经被继承,你可以很简单的配置好一个舒服的zsh——我的.zshrc 除去成片的alisa 之外,有效配置只有十几行。

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

推荐阅读更多精彩内容

  • Linux命令学习 记录小白学习Linux的过程。 常用命令 man命令 常用工具命令 man命令是Linux下的...
    吃蘑菇De大灰狼阅读 2,722评论 1 15
  • 终极 ShellPosted on 2013 年 7 月 23 日 http://macshuo.com/?p=6...
    Albert陈凯阅读 963评论 0 0
  • 软件安装 Xcode Git iTerm2 zsh Sublime3 TextMate MacDown Intel...
    holaOla阅读 2,751评论 0 13
  • 工欲善其事,必先利其器。工欲利其器,必先思其行。每次换电脑的时候都得重新倒腾一遍,由于时间过得比较久老是忘记,所以...
    程序媛coco阅读 881评论 0 0
  • 1904年美国《企业家》杂志发刊,选择了托马斯 潘恩的《常识》中的一部分做发刊词,文字这样写道: 我是不会选择做一...
    李大女儿阅读 120评论 0 0