mac 終端使用梳理

慣例前言:

??吉德林法則:把難題清清楚楚地寫出來,便已經(jīng)解決了一半默穴。
??從 16 年使用 cocoapods 管理項(xiàng)目以來禁悠,便開始了 mac 終端的使用鼓择。從此開始與它作斗爭(zhēng),不知道小伙伴們有沒有這樣的感觸:“終端環(huán)境就沒有正常過”则北。而且習(xí)慣了可視操作后矿微,對(duì)計(jì)算機(jī)基礎(chǔ)不扎實(shí)的我,終端總是顯得不那么友好尚揣,不知道它做沒做我讓它做的事涌矢,不知道它做的對(duì)不對(duì)。快骗。娜庇。。方篮。名秀。(咱也不知道,咱也不敢問)
??一直都是用到什么就查藕溅,出問題了就改泰偿。所以終端總體給我的感覺就是“真 JB 復(fù)雜,屢不清它的條條框框”蜈垮。
??本著“知其然知其所以然”的原則耗跛,加上最近對(duì)腳本語言莫名的感興趣,再加上公司業(yè)務(wù)需求中需要用到 python攒发、shell 腳本调塌。就認(rèn)認(rèn)真真的對(duì)常用的終端工具以及終端環(huán)境做了梳理工作。這個(gè)過程中感謝柱哥和不知名大佬“diudiutang”惠猿。

工欲善其事必先利其器

??1. 下載 iTerm 2 代替系統(tǒng)終端(內(nèi)存小的朋友不需要擔(dān)心羔砾,它只有 8M多。)
??2. 當(dāng)前用戶最好設(shè)置成 root 用戶偶妖,這樣可以盡可能的減少?zèng)]有權(quán)限(permission denied)帶來的問題姜凄。
??3. 下載并安裝 Homebrew、RVM趾访、Ruby态秧、zsh、oh-my-zsh扼鞋、xcode-command-tools等申鱼。

“器”之詳解

??iTerm 2:https://www.iterm2.com/(作用愤诱、優(yōu)勢(shì)可見官網(wǎng),比我說的好)

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

??oh-my-zsh:是為 zsh而生的捐友。有了oh-my-zsh這個(gè)開源項(xiàng)目之后淫半,讓zsh配置降到0門檻.而且它完全兼容 bash。配合 iTerm 2 使用可以讓你的終端騷到起飛匣砖。

??xcode-command-tools:(提供一些基礎(chǔ)工具) 終端執(zhí)行:“xcode-select --install”安裝科吭。但我對(duì)它并不是特別的了解,求指點(diǎn)猴鲫。

??Homebrew:https://brew.sh/
??是Mac OSX上的軟件包管理工具对人,能在Mac中方便的安裝軟件或者卸載軟件。Homebrew 的默認(rèn)安裝目錄為 /usr/local变隔,所有通過 brew 安裝的程序都會(huì)默認(rèn)安裝到 /usr/local/Cellars/程序名/版本號(hào)/目錄下规伐。
??安裝命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
??常見命令行:

$ brew --help #簡(jiǎn)潔命令幫助
$ man brew #完整命令幫助
$ brew install git #安裝軟件包(這里是示例安裝的Git版本控制)
$ brew uninstall git #卸載軟件包
$ brew search git #搜索軟件包
$ brew list #顯示已經(jīng)安裝的所有軟件包
$ brew update #同步遠(yuǎn)程最新更新情況,對(duì)本機(jī)已經(jīng)安裝并有更新的軟件用*標(biāo)明
$ brew outdated #查看已安裝的哪些軟件包需要更新
$ brew upgrade git #更新單個(gè)軟件包
$ brew info git #查看軟件包信息
$ brew home git #訪問軟件包官方站
$ brew cleanup #清理所有已安裝軟件包的歷史老版本
$ brew cleanup git #清理單個(gè)已安裝軟件包的歷史版本

??程序安裝路徑及文件夾功用:

-bin #用于存放所安裝程序的啟動(dòng)鏈接(相當(dāng)于快捷方式)
-Cellar #所有brew安裝的程序匣缘,都將以[程序名/版本號(hào)]存放于本目錄下
-etc #brew安裝程序的配置文件默認(rèn)存放路徑
-Library #Homebrew 系統(tǒng)自身文件夾
–Formula #程序的下載路徑和編譯參數(shù)及安裝路徑等配置文件存放地
–Homebrew #brew程序自身命令集

??RVM:
??Ruby版本管理器猖闪,是一個(gè)命令行工具。全稱 Ruby Version Manager肌厨,可以用來多版本 Ruby 環(huán)境的管理和切換培慌。
??下載及安裝命令:

$ curl -sSL https://get.rvm.io | bash -s stable
$ source ~/.bashrc
$ source ~/.bash_profile
$ rvm -v   # 查看版本號(hào),確保安裝成功柑爸。

??常見命令行:

$ 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  #設(shè)置2.4.0為默認(rèn)版本    
$ rvm default #通過default可以快速回到默認(rèn)版本    
$ rvm  ruby-2.4.0 #切換2.4.0為當(dāng)前使用版本    
$ rvm 2.4.0 #同上   

??Ruby:
??ruby 是一種動(dòng)態(tài)語言(類似 python)吵护, 日本的松本行弘創(chuàng)建于1993年。但我們這里常說的 ruby指的是 ruby環(huán)境表鳍。我們 Mac的終端上自帶 ruby環(huán)境馅而。 ruby軟件包被稱為gem,其中包含了 ruby應(yīng)用或庫譬圣。(粗俗的講瓮恭,gem 就是運(yùn)行 ruby環(huán)境上的軟件包)

??RubyGems:
??RubyGems 是一個(gè)包管理框架,提供了 ruby社區(qū) gem的托管服務(wù)厘熟,用于方便地下載屯蹦、安裝和使用ruby軟件包。會(huì)伴隨 ruby環(huán)境的安裝而存在绳姨,就是用來操作 gem 的登澜。命令行由 gem 開頭。舉例:

# 通過 RubyGems 去 ruby托管平臺(tái) 上找到 fir-cli飘庄、cocoapods 安裝
$ gem install fir-cli 
$ gem install cocoapods
$ gem install fastlane

不知道怎么命名的雜亂部分

??這塊兒內(nèi)容主要會(huì)寫一些我自己遇到過的難題以及猜測(cè)和解決思路脑蠕,大概就類似于批注的東西,不一定正確但是應(yīng)該可以加深對(duì)這塊兒內(nèi)容的理解竭宰。
??我自己想的空郊!不一定正確份招!不權(quán)威切揭!

??認(rèn)識(shí)匯總:
??“usr/bin” 經(jīng)常會(huì)看到路徑中有這兩個(gè)詞狞甚,我想來一定是有什么特殊意義在的:usr - Unix System Resource、bin - 二進(jìn)制文件廓旬。

??Homebrew 我將它理解成 macOS可視系統(tǒng)下的 App Store哼审。上面我的也說過了它的安裝路徑默認(rèn)是 usr/local,并非安裝在在某一“用戶”下孕豹。測(cè)試后涩盾,也發(fā)現(xiàn)切換用戶后都可以在終端對(duì) brew進(jìn)行使用,且由 brew install 安裝的軟件包也可以使用励背。

??RVM 它是一個(gè)“尨夯簦款專項(xiàng)”的軟件包管理工具,只負(fù)責(zé)對(duì) Ruby 環(huán)境的下載叶眉、切換等管理操作址儒。默認(rèn)安裝路徑 /Users/用戶名/.rvm/bin/RVM,可以看到這玩意兒的安裝路徑是在某一用戶文件目錄下衅疙。同樣測(cè)試后莲趣,發(fā)現(xiàn)更換用戶后將不能對(duì) rvm 相關(guān)命令行進(jìn)行操作,且提示 沒有發(fā)現(xiàn) rvm饱溢。

??Ruby 它既是一個(gè)門語言喧伞,也是一種環(huán)境。這東西一度讓我懵逼绩郎,搞不清楚該如何定義它潘鲫。自我總結(jié):使用 ruby 語言寫的軟件包稱為 gem包,可以通過 RubyGems這個(gè)包管理框架進(jìn)行管理肋杖。gem包是需要 Ruby 環(huán)境支持才能夠執(zhí)行溉仑。

??RubyGems 是一個(gè)包管理框架,提供了 ruby社區(qū) gem的托管服務(wù)兽愤,用于方便地下載彼念、安裝和使用ruby軟件包。值得一說的是浅萧,本地多 Ruby 版本的情況下逐沙,gem包的安裝使用情況。例:
??ruby 2.4.0 環(huán)境下執(zhí)行:“gem install fir-cli --no-ri --no-rdoc”洼畅。此時(shí) fri這個(gè)包是被下載安裝路徑為:/Users/用戶名/.rvm/gems/ruby-2.4.0/bin/fir
執(zhí)行 rvm 2.5.0吩案,切換至 ruby 2.5.0版本。執(zhí)行 which fir 此時(shí)會(huì)有兩種情況:
????第一種:報(bào)錯(cuò)帝簇,報(bào)錯(cuò)信息是沒有找到 fir徘郭。此時(shí)靠益,說明只有在安裝了此 gem包的 ruby 2.4.0環(huán)境下才可以使用“fir”。
????第二種:/usr/local/bin/fir残揉。一個(gè)在用戶路徑以外的路徑(和上面講的 brew安裝的軟件包路勁很相近胧后,同理此時(shí)的 gem包不但可以跨 Ruby 環(huán)境使用,也可以跨用戶使用)抱环。
??至于到底為什么會(huì)有第二種的情況的發(fā)生壳快,我只找到了一種情形:gem 包安裝的時(shí)候執(zhí)行“sudo gem install -n usr/local/bin fir-cli --no-ri --no-rdoc” 此時(shí),被安裝的 gem 包的執(zhí)行文件會(huì)在用戶路徑下一份镇草,且在 /usr/local/bin 下一份眶痰。所以我覺得后者在實(shí)際工作中能帶來很多便利。

??坑一:系統(tǒng)自帶 Ruby 2.3.7 版本梯啤。自己安裝了 RVM竖伯,隨后安裝了 Ruby 2.4.0。且通過 RVM 設(shè)置 2.4.0為默認(rèn)使用的版本因宇。但是每次打開的終端后七婴,都會(huì)變成 Ruby 2.3.7 環(huán)境。
??解:這是因?yàn)榻K端環(huán)境變量的優(yōu)先加載順序羽嫡,在終端中用 echo $PATH 可以查看本姥。通過 RVM 設(shè)置默認(rèn),并不能會(huì)更改到終端環(huán)境變量的加載順序杭棵,且每次打開 mac 終端婚惫,環(huán)境變量會(huì)重新計(jì)算的。所以想要徹底更改這個(gè)問題魂爪,只需要手動(dòng)更改配置文件即可先舷。用zsh的話,配置文件在 ~/.zshrc滓侍,如果默認(rèn)用系統(tǒng)自帶的bash蒋川,配置文件在 ~/.bashrc。

??坑二:安裝命令行時(shí)的權(quán)限問題

    報(bào)錯(cuò)信息: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

叨叨

??果真是天下文章一大抄撩笆。在梳理這塊兒內(nèi)容查資料的時(shí)候捺球,發(fā)現(xiàn)太多都是直接復(fù)制粘貼別人的總結(jié),一點(diǎn)自己的內(nèi)容都沒有加進(jìn)去夕冲,把魯迅先生的“拿來主義”運(yùn)用的淋漓盡致??氮兵。

獻(xiàn)給小白

$ gem ***   # 使用 RubyGems(gem包管理框架)對(duì) 某gem包 進(jìn)行操作
$ rvm ***   # 使用 RVM(Ruby版本管理器)對(duì) 某ruby環(huán)境 進(jìn)行操作
$ brew ***  # 使用 Homebrew(軟件包管理工具)對(duì) 某Unix軟件包進(jìn)行操作
$ bury ***  #  目前只是用過 bury -v
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市歹鱼,隨后出現(xiàn)的幾起案子泣栈,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件南片,死亡現(xiàn)場(chǎng)離奇詭異掺涛,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)疼进,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門薪缆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人颠悬,你說我怎么就攤上這事矮燎《ㄑ” “怎么了赔癌?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)澜沟。 經(jīng)常有香客問我灾票,道長(zhǎng),這世上最難降的妖魔是什么茫虽? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任刊苍,我火速辦了婚禮,結(jié)果婚禮上濒析,老公的妹妹穿的比我還像新娘正什。我一直安慰自己,他們只是感情好号杏,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布婴氮。 她就那樣靜靜地躺著,像睡著了一般盾致。 火紅的嫁衣襯著肌膚如雪主经。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天庭惜,我揣著相機(jī)與錄音罩驻,去河邊找鬼。 笑死护赊,一個(gè)胖子當(dāng)著我的面吹牛惠遏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骏啰,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼节吮,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了器一?” 一聲冷哼從身側(cè)響起课锌,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后渺贤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體雏胃,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年志鞍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瞭亮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡固棚,死狀恐怖统翩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情此洲,我是刑警寧澤厂汗,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站呜师,受9級(jí)特大地震影響娶桦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜汁汗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一衷畦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧知牌,春花似錦祈争、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至袭厂,卻和暖如春墨吓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纹磺。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來泰國打工帖烘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人橄杨。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓秘症,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親式矫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乡摹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容