注:本文專門用于指導對計算機編程與設計(尤其是互聯網產品開發與設計)感興趣的 Mac 新用戶,如何在 Mac OS X 系統上配置開發與上網環境,另有《全新 Mac 安裝指南(通用篇)》作為本安裝指南的基礎篇。
在 《為什么說每個程序員都應該有臺Mac電腦》一文中我有提到 Mac 系統的命令行環境與 Linux 系統十分類似,這是因為 Mac OS X 的操作系統內核是 Darwin,它和 Linux 一樣是一種優秀的類 Unix 系統。掌握 Linux Shell 命令行的使用,可以說是全棧工程師的基本要求之一,而使用 Mac 的初學者會比使用 Windows 系統的有著更大的優勢。
接下來,我們先來了解幾個 Mac (及 Linux )下的基礎概念 環境變量、Shell 終端、SSH 遠程連接。
環境變量
環境變量(environment variables)是所有操作系統中的一個通用概念,簡單來說就是系統啟動之后,會預設一些全局的變量信息供所有應用程序來使用。打個比方,如果我聲明「接下來文章里說的 env 是表示 environment variables 的意思」,其實就是在這篇文章的環境下,定義了一個環境變量 $env = "environment variables"
。
在一個操作系統中,可以把一個目錄名、命令行語句、數值或字符串定義成一個環境變量。以下截圖展示了 Windows 操作系統中預設的一些環境變量:
其中有一個比較特殊的環境變量叫做 系統 path 變量,它的用途是定義一組全局目錄路徑。當在命令行終端下運行一個命令行時,若當前路徑中不存在該命令,則會在系統 path 變量所定義的目錄中按先后順序一一查找,查找到則執行,如果遍歷完 path 中所有目錄都未查找到,則返回無法找到該命令。
Shell 終端
Shell 可以用來執行命令行,在 Mac 下打開 Terminal(終端)程序,會自動開啟一個 Shell 命令行界面,而 Shell 每次在被打開(或執行)的時候會自動加載默認配置文件。Mac 和 Linux 默認的 shell 都是 bash,其中 Mac 的 bash 默認配置文件是 .bash_profile ,Linux 的是 .bashrc 。Mac 下通過修改 .bash_profile 文件可以進行一些環境變量的配置。
接下來實際操作演示如何使用 Terminal 在 .bash_profile 中配置 ll
快捷命令,其中我會順帶使用一些常用命令,它們含義如下:
cd
跳轉至目錄ls
列出當前目錄下的文件及文件夾ls -l
ls 命令加-l
參數表示列出更多詳細信息mv
移動 / 重命名文件touch
新建文件rm -r
刪除文件,-r
參數表示遞歸刪除目錄pwd
顯示當前目錄~
波浪號表示當前用戶根目錄,一般用戶的配置文件都放在這里echo
打印字符串或變量>
將結果輸出至某文件中cat
輸出文件全文內容source
執行某一個文件,通常 .bash_profile 修改之后需要執行下 source 命令(或者新開一個 shell)來保證配置生效
此外,管道命令 |
也是 Shell 中十分常用的命令,它用于將前一個命令的輸出結果作為后一個命令的輸入參數。
例如使用以下命令查看 7070 端口是否有進程占用:
netstat -an | grep 7070
Mac 下默認的 Terminal + bash 不夠強大,推薦換成 iTerm2 + zsh ,以下是具體的配置方法:
1、安裝 iTerm2
安裝后打開 iTerm2,按下 ⌘,
進行以下配置用來提升逼格:
-
設置窗口透明度。如下圖,Preferences -> Profiles -> Window -> Window Appearance 設置 Transparency
-
設置打開窗口快捷鍵。Preferences -> Keys -> Hotkey 推薦把快捷鍵設置成 control+反引號(數字1左邊那個鍵)
iTerm2 支持窗口切分,使用 ⌘d
可橫向切分成兩個 shell。
2、安裝 zsh
安裝完成后還需要進行一定的配置,讓 zsh 復用 bash 的環境變量配置,具體步驟如下:
- 在線自動安裝 zsh 。在 iTerm2 中執行以下命令
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
- 使用 vim 編輯器打開用戶 zsh 配置文件,
vim ~/.zshrc
,vim 與普通編輯器有很大差異,使用方法可自行百度學習 - 文件打開后,先按字母鍵大寫 G(跳至文件末尾),再按下字母鍵小寫 o(新插入一行,同時進入編輯模式),輸入以下字符
source ~/.bash_profile
,然后按下 Esc 鍵退出編輯模式,再依次按下 :wq 保存關閉文件
3、安裝 brew
Mac 安裝其他命令行,需要一個類似 Linux apt-get
這樣的包管理工具,運行以下命令即可自動完成安裝 brew
命令:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝完成后,如想安裝 wget 命令行(一款常用的爬蟲下載工具),只需在 shell 中運行 brew install wget
。大多數命令行都可以通過 brew 進行安裝和管理。
SSH 遠程連接
ssh 是 Mac/Linux 下一個遠程連接主機的命令行工具,兩臺機器建立一個 ssh 連接之后可以進行一系列的加密指令和數據傳輸。ssh 十分重要,每個愛編程自由的人都應該掌握。
在開始學習 ssh 之前,我們需要有一臺 Linux 的主機(或者另外一臺 Mac 電腦)用來作為遠程被訪問的機器。由于國內的 阿里云、騰訊云 價格略高,建議可以買一個國外的 VPS(虛擬獨立服務器),Linode / Vultr 加州機房在國內的訪問速度不錯,Vultr 最便宜的主機 30RMB/月,不過網速最快的還屬 Google Compute Engine 。使用 Google 的云服務需要解決這樣一個悖論:一方面你需要能打開 Google 的網站才能購買他的 VPS 服務,另外一方面你需要有了他的 VPS 主機才能通過 SSH 打開他的網站。(這是老大哥留給我們這代人的難題)。
假設你已經有了另外一臺 Linux 主機,IP地址 為 1.2.3.4,用戶名為 root ,使用以下命令可發起建立 ssh 連接:
ssh root@1.2.3.4
此時會要求輸入 root 用戶的密碼,輸入完成后即可登錄至遠程機器。如果不想每次都輸入密碼,則可以使用 ssh 密鑰文件鑒權。在使用 git/scp/rsync 等命令時,配置 ssh 密鑰文件能省去每次輸入密碼的麻煩,其配置方法只需三步:
- 安裝 ssh-copy-id 命令行工具
brew install ssh-copy-id
- 生成本機密鑰/公鑰文件
ssh-keygen -t rsa
- 將本機公鑰上傳到遠程服務器上
ssh-copy-id root@1.2.3.4
注:ssh 端口映射
ssh 協議默認使用 22 端口連接,通過 -D
參數可指定將該 ssh 連接通道映射到本機的某個端口,并且該加密通道支持 SOCKS 代理協議,這意味著本地應用程序通過此端口傳輸數據時,實際上是使用遠程服務器的網絡請求的數據。以下命令行演示了靜默映射 ssh 連接至本地 7070 端口:
ssh -g -N -D 7070 -f root@1.2.3.4
接下來我們驗證下是否映射成功。打開 System Preferences -> Network ,點擊當前使用中的網卡 -> Advanced..(高級) 配置面板,進行以下設置:
設置完成后在百度搜索IP看看本地網絡是否變成了遠程機器的IP。使用 Vultr VPS 的同學可以嘗試打開下 Google.com 透透氣,學會使用 Google/Stackoverflow/Github 找到技術問題的解決方案,是高級程序員的基礎素質。
常用軟件推薦
在了解了 環境變量、Shell 終端、SSH 遠程連接 之后,基礎的命令行編程環境和網絡環境已經配置完成。以下是我常用的開發軟件,推薦給各位,希望有所幫助。
通用
- SwitchHost HOST切換工具
- LICECap 極簡錄屏工具,直接生成 gif 格式
- Beyond Compare 文件文本對比工具
- Dash 各類開發語言、框架 Cheatsheet
- Transmit FTP/SFTP 客戶端
- Github Desktop / SourceTree Git GUI 客戶端,SVN 可使用 Cornerstone
編輯器IDE
- Visual Studio Code 微軟新出的基于 Atom Shell 的編輯器
- Sublime Text
- PHP Storm
- MacVim 通過 brew 安裝,同時安裝 VimBox 增強插件
- Android Studio 開發 Android 應用
- Xcode 開發 iOS 應用
網絡編程
- Postman HTTP 接口調試 Chrome 插件
- SwitchyOmega Chrome 代理插件
- Charles Proxy 最好用的 HTTP 抓包工具(推薦購買正版)
- HTTPScoop 網卡上 HTTP 抓包
前端開發
- OmniGraffle / Axure 產品原型設計軟件
- Sketch 圖片編輯工具,也可以當做輕量級原型設計軟件
- Adobe Photoshop / Flash / Illustrator
- Pixelmator Photoshop 的輕量級替代品
- Origami 動畫原型設計工具
- PNG-2x-Export PS 快捷導圖切圖工具
- Miro Video Converter 視頻轉碼工具(可轉成瀏覽器支持的 video mp4格式)
- FontLab Studio 字體設計工具
- GIFBrewery MOV 格式轉 GIF 格式
- ImageAlpha / ImageOptim 圖片壓縮工具,ImageAlpha 可有損壓縮 PNG
- nvm 管理不同 node 版本的命令行工具
- EgretEngine Egret 游戲開發框架
服務端開發
- ampps / MAMP Apache/MySql/PHP 環境
- Navicat Data Modeler 數據庫設計
- Sequel Pro MySQL GUI客戶端
- Robomongo MongoDB GUI客戶端
其他
另外,相信不少程序員朋友有聽說過神之編輯器 Emacs 與編輯器之神 VIM,在 Mac 下有一個十分關鍵的隱藏配置,開啟之后,可助普通程序員直接步入大神級別。關注微信公眾號 「貓哥學前班」,回復 hhkb
關鍵詞即可揭曉答案:)
文章列表