mac 终端使用梳理

惯例前言:

  吉德林法则:把难题清清楚楚地写出来,便已经解决了一半。
  从 16 年使用 cocoapods 管理项目以来,便开始了 mac 终端的使用。从此开始与它作斗争,不知道小伙伴们有没有这样的感触:“终端环境就没有正常过”。而且习惯了可视操作后,对计算机基础不扎实的我,终端总是显得不那么友好,不知道它做没做我让它做的事,不知道它做的对不对。。。。。。(咱也不知道,咱也不敢问)
  一直都是用到什么就查,出问题了就改。所以终端总体给我的感觉就是“真 JB 复杂,屡不清它的条条框框”。
  本着“知其然知其所以然”的原则,加上最近对脚本语言莫名的感兴趣,再加上公司业务需求中需要用到 python、shell 脚本。就认认真真的对常用的终端工具以及终端环境做了梳理工作。这个过程中感谢柱哥和不知名大佬“diudiutang”。

工欲善其事必先利其器

  1. 下载 iTerm 2 代替系统终端(内存小的朋友不需要担心,它只有 8M多。)
  2. 当前用户最好设置成 root 用户,这样可以尽可能的减少没有权限(permission denied)带来的问题。
  3. 下载并安装 Homebrew、RVM、Ruby、zsh、oh-my-zsh、xcode-command-tools等。

“器”之详解

  iTerm 2:https://www.iterm2.com/(作用、优势可见官网,比我说的好)

  zsh:Zsh也是一种shell(命令解析器)

  oh-my-zsh:是为 zsh而生的。有了oh-my-zsh这个开源项目之后,让zsh配置降到0门槛.而且它完全兼容 bash。配合 iTerm 2 使用可以让你的终端骚到起飞。

  xcode-command-tools:(提供一些基础工具) 终端执行:“xcode-select --install”安装。但我对它并不是特别的了解,求指点。

  Homebrew:https://brew.sh/
  是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件。Homebrew 的默认安装目录为 /usr/local,所有通过 brew 安装的程序都会默认安装到 /usr/local/Cellars/程序名/版本号/目录下。
  安装命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  常见命令行:

$ brew --help #简洁命令帮助
$ man brew #完整命令帮助
$ brew install git #安装软件包(这里是示例安装的Git版本控制)
$ brew uninstall git #卸载软件包
$ brew search git #搜索软件包
$ brew list #显示已经安装的所有软件包
$ brew update #同步远程最新更新情况,对本机已经安装并有更新的软件用*标明
$ brew outdated #查看已安装的哪些软件包需要更新
$ brew upgrade git #更新单个软件包
$ brew info git #查看软件包信息
$ brew home git #访问软件包官方站
$ brew cleanup #清理所有已安装软件包的历史老版本
$ brew cleanup git #清理单个已安装软件包的历史版本

  程序安装路径及文件夹功用:

-bin #用于存放所安装程序的启动链接(相当于快捷方式)
-Cellar #所有brew安装的程序,都将以[程序名/版本号]存放于本目录下
-etc #brew安装程序的配置文件默认存放路径
-Library #Homebrew 系统自身文件夹
–Formula #程序的下载路径和编译参数及安装路径等配置文件存放地
–Homebrew #brew程序自身命令集

  RVM:
  Ruby版本管理器,是一个命令行工具。全称 Ruby Version Manager,可以用来多版本 Ruby 环境的管理和切换。
  下载及安装命令:

$ curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ rvm -v   # 查看版本号,确保安装成功。

  常见命令行:

$ rvm info #查看rvm信息   
$ rvm list known #列出RVM所支持的所有Ruby版本的信息    
$ rvm list #列出已安装的Ruby版本    
$ rvm install 2.4.0 # 安装 ruby-2.4.0   
$ rvm remove 2.4.0 #卸载 ruby-2.4.0   
$ rvm --default use 2.4.0  #设置2.4.0为默认版本    
$ rvm default #通过default可以快速回到默认版本    
$ rvm  ruby-2.4.0 #切换2.4.0为当前使用版本    
$ rvm 2.4.0 #同上   

  Ruby:
  ruby 是一种动态语言(类似 python), 日本的松本行弘创建于1993年。但我们这里常说的 ruby指的是 ruby环境。我们 Mac的终端上自带 ruby环境。 ruby软件包被称为gem,其中包含了 ruby应用或库。(粗俗的讲,gem 就是运行 ruby环境上的软件包)

  RubyGems:
  RubyGems 是一个包管理框架,提供了 ruby社区 gem的托管服务,用于方便地下载、安装和使用ruby软件包。会伴随 ruby环境的安装而存在,就是用来操作 gem 的。命令行由 gem 开头。举例:

# 通过 RubyGems 去 ruby托管平台 上找到 fir-cli、cocoapods 安装
$ gem install fir-cli 
$ gem install cocoapods
$ gem install fastlane

不知道怎么命名的杂乱部分

  这块儿内容主要会写一些我自己遇到过的难题以及猜测和解决思路,大概就类似于批注的东西,不一定正确但是应该可以加深对这块儿内容的理解。
  我自己想的!不一定正确!不权威!

  认识汇总:
  “usr/bin” 经常会看到路径中有这两个词,我想来一定是有什么特殊意义在的:usr - Unix System Resource、bin - 二进制文件。

  Homebrew 我将它理解成 macOS可视系统下的 App Store。上面我的也说过了它的安装路径默认是 usr/local,并非安装在在某一“用户”下。测试后,也发现切换用户后都可以在终端对 brew进行使用,且由 brew install 安装的软件包也可以使用。

  RVM 它是一个“专款专项”的软件包管理工具,只负责对 Ruby 环境的下载、切换等管理操作。默认安装路径 /Users/用户名/.rvm/bin/RVM,可以看到这玩意儿的安装路径是在某一用户文件目录下。同样测试后,发现更换用户后将不能对 rvm 相关命令行进行操作,且提示 没有发现 rvm。

  Ruby 它既是一个门语言,也是一种环境。这东西一度让我懵逼,搞不清楚该如何定义它。自我总结:使用 ruby 语言写的软件包称为 gem包,可以通过 RubyGems这个包管理框架进行管理。gem包是需要 Ruby 环境支持才能够执行。

  RubyGems 是一个包管理框架,提供了 ruby社区 gem的托管服务,用于方便地下载、安装和使用ruby软件包。值得一说的是,本地多 Ruby 版本的情况下,gem包的安装使用情况。例:
  ruby 2.4.0 环境下执行:“gem install fir-cli --no-ri --no-rdoc”。此时 fri这个包是被下载安装路径为:/Users/用户名/.rvm/gems/ruby-2.4.0/bin/fir
执行 rvm 2.5.0,切换至 ruby 2.5.0版本。执行 which fir 此时会有两种情况:
    第一种:报错,报错信息是没有找到 fir。此时,说明只有在安装了此 gem包的 ruby 2.4.0环境下才可以使用“fir”。
    第二种:/usr/local/bin/fir。一个在用户路径以外的路径(和上面讲的 brew安装的软件包路劲很相近,同理此时的 gem包不但可以跨 Ruby 环境使用,也可以跨用户使用)。
  至于到底为什么会有第二种的情况的发生,我只找到了一种情形:gem 包安装的时候执行“sudo gem install -n usr/local/bin fir-cli --no-ri --no-rdoc” 此时,被安装的 gem 包的执行文件会在用户路径下一份,且在 /usr/local/bin 下一份。所以我觉得后者在实际工作中能带来很多便利。

  坑一:系统自带 Ruby 2.3.7 版本。自己安装了 RVM,随后安装了 Ruby 2.4.0。且通过 RVM 设置 2.4.0为默认使用的版本。但是每次打开的终端后,都会变成 Ruby 2.3.7 环境。
  解:这是因为终端环境变量的优先加载顺序,在终端中用 echo $PATH 可以查看。通过 RVM 设置默认,并不能会更改到终端环境变量的加载顺序,且每次打开 mac 终端,环境变量会重新计算的。所以想要彻底更改这个问题,只需要手动更改配置文件即可。用zsh的话,配置文件在 ~/.zshrc,如果默认用系统自带的bash,配置文件在 ~/.bashrc。

  坑二:安装命令行时的权限问题

    报错信息:ERROR:  While executing gem ... (Gem::FilePermissionError)
        You don't have write permissions for the /usr/bin directory.

  解:sudo gem install -n /usr/local/bin fastlane

叨叨

  果真是天下文章一大抄。在梳理这块儿内容查资料的时候,发现太多都是直接复制粘贴别人的总结,一点自己的内容都没有加进去,把鲁迅先生的“拿来主义”运用的淋漓尽致🌚。

献给小白

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

推荐阅读更多精彩内容