-
Notifications
You must be signed in to change notification settings - Fork 100
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
全新 Mac 安装指南(编程篇) #2
Comments
Open
跟猫哥的软件重合度挺高的:D, |
@aNd1coder 嗯,移动更准确点,我修改下,thx:) |
跟着猫哥走,有酒有肉吃~ |
添加 Alfred Workflows 章节,推荐一些常用的 Alfred 插件。 |
Open
新增:du -sh、Go2Shell、Autojump、tmux、Keycastr |
谢谢哥! |
|
Autojump配合incr服用,效果棒棒哒~ |
文档建议用dash |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
注:本文专门用于指导对计算机编程与设计(尤其是互联网产品开发与设计)感兴趣的 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
输出文件全文内容du -sh *
查看某目录下各子文件和目录的大小source
执行某一个文件,通常 .bash_profile 修改之后需要执行下 source 命令(或者新开一个 shell)来保证配置生效此外,管道命令
|
也是 Shell 中十分常用的命令,它用于将前一个命令的输出结果作为后一个命令的输入参数。例如使用以下命令查看 7070 端口是否有进程占用:
netstat -an | grep 7070
Mac 下默认的 Terminal + bash 不够强大,推荐换成 iTerm2 + zsh ,以下是具体的配置方法:
1、安装 iTerm2
安装后打开 iTerm2,使用
⌘d
可横向切分成出两个窗口,使用⌘t
可以新建一个窗口标签。按下⌘,
进行以下配置可提升逼格:iTerm2 的命令行指示标记可以通过 Preferences -> Profiles -> Terminal -> Shell Integration 取消勾选 Show mark indicators 来关闭
设置窗口透明度。如下图,Preferences -> Profiles -> Window -> Window Appearance 设置 Transparency
设置打开窗口快捷键。Preferences -> Keys -> Hotkey 推荐把快捷键设置成「键盘左下角+左上角」组合成的快捷键,如下图为 control+反引号(数字1左边那个键)。
当 iTerm2 未启动时,以上窗口打开快捷键不会生效,使用自定义 Alfred Workflows 会是一个更好的方案(更多 Alfred 内容参看本文「常用软件推荐」部分):
双击上图的 「Launch Apps / Files 」将 iTerm2 程序拖至浮层区域,并勾选「Toggle visibility for apps」选项。该配置方法可以实现 macOS 下使用任意快捷键显示(隐藏)任意应用程序的功能。
2、安装 zsh
安装完成后还需要进行一定的配置,让 zsh 复用 bash 的环境变量配置,具体步骤如下:
sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
vim ~/.zshrc
,vim 与普通编辑器有很大差异,使用方法可自行百度学习source ~/.bash_profile
,然后按下 Esc 键退出编辑模式,再依次按下 :wq 保存关闭文件ofd
命令将当前 shell 窗口在 Finder 中打开,使用cdf
可在 shell 中直接跳转至当前 Finder 窗口所在的路径ZSH_THEME="gnzh"
设置成其他主题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 [email protected]
此时会要求输入 root 用户的密码,输入完成后即可登录至远程机器。如果不想每次都输入密码,则可以使用 ssh 密钥文件鉴权。在使用 git/scp/rsync 等命令时,配置 ssh 密钥文件能省去每次输入密码的麻烦,其配置方法只需三步:
brew install ssh-copy-id
ssh-keygen -t rsa
ssh-copy-id [email protected]
注:ssh 端口映射
ssh 协议默认使用 22 端口连接,通过
-D
参数可指定将该 ssh 连接通道映射到本机的某个端口,并且该加密通道支持 SOCKS 代理协议,这意味着本地应用程序通过此端口传输数据时,实际上是使用远程服务器的网络请求的数据。以下命令行演示了静默映射 ssh 连接至本地 7070 端口:ssh -g -N -D 7070 -f [email protected]
接下来我们验证下是否映射成功。打开 System Preferences -> Network ,点击当前使用中的网卡 -> Advanced..(高级) 配置面板,进行以下设置:
设置完成后在百度搜索IP看看本地网络是否变成了远程机器的IP。使用 Vultr VPS 的同学可以尝试打开下 Google.com 透透气,学会使用 Google/Stackoverflow/Github 找到技术问题的解决方案,是高级程序员的基础素质。
常用软件推荐
在了解了 环境变量、Shell 终端、SSH 远程连接 之后,基础的命令行编程环境和网络环境已经配置完成。以下是我常用的开发软件,推荐给各位,希望有所帮助。
通用
nativefier --name "DevDocs" "http://devdocs.io/"
打包成本地应用使用(可配置成离线版本)/Library/QuickLook/
目录即可完成安装brew install autojump
安装,在完成安装后,还需要进行配置,以下方法二选一:~/.bash_profile
文件中加入语句[[ -s $(brew --prefix)/etc/profile.d/autojump.sh ]] && . $(brew --prefix)/etc/profile.d/autojump.sh
~/.zshrc
文件中,修改plugins=(git)
插件配置行,以开启 zsh 对 autojump 插件的支持plugins=(git autojump)
Alfred Workflows
Alfred 是 Mac 下的「神兵利器」,以下是部分 Workflows 推荐:
以下是其他集合推荐:
编辑器IDE
网络编程
前端开发
服务端开发
其他
另外,相信不少程序员朋友有听说过神之编辑器 Emacs 与编辑器之神 VIM,在 Mac 下有一个十分关键的隐藏配置,开启之后,可助普通程序员直接步入大神级别。关注微信公众号 「猫哥学前班」,回复
hhkb
关键词即可揭晓答案:)The text was updated successfully, but these errors were encountered: