管理工具
Homebrew: 是一款 Mac OS 平台下的软件包管理工具
RVM / rbenv: 都是管理多个 Ruby 环境的工具,它们都能够提供不同版本的 Ruby 环境管理和切换。
Ruby: 一种简单快捷的面向对象(面向对象程序设计)脚本语言
Gem: Ruby 中的包,其中包含包信息,以及用于安装的文件。Gem 通常是依照 .gemspec 文件构建的,其为 YAML 文件。
源码管理器(Source Code Manager,简称 SCM), 一般是针对单个文件进行版本控制
- Git
包管理器(Package Manager,简称 PM), 包管理器则是针对单个 package 进行版本控制
-
RubyGems: Ruby 的一个包管理器,它所管理的包或者依赖,我们称之为 gem。 作为一个中心化的包管理器,RubyGems 提供了 Ruby 组件的托管服务,可以集中式的查找和安装工具和依赖。当我们使用
gem install xxx时,会通过rubygems.org来查询对应的 gem。iOS 开发中常用的工具都可以通过 RubyGems 进行安装,如:bundler、fastlane、cocoapods等; 它在单一环境(本机)工作, 不需要版本管理 -
Bundler 是管理 gem 依赖的工具,它能够隔离不同项目中 gem 的版本。本质上,Bundler 是一个包管理器,也是一个 gem。
-
CocoaPods: 管理项目三方库依赖, 是通过 Ruby 实现的一个gem包; CocoaPods 以Podfile文件作为描述文件,使用基于 Ruby 的 DSL 来描述依赖关系, 以Podfile.lock文件作为锁存文件,其记录了每个已安装 Pod 的版本。项目中,一般会把Podfile.lock加入到版本控制中 -
Bundler: 是管理 gem 依赖的工具, 是一个 Gem; 团队内希望规范 Gem 版本, 可以使用 Bundler 来管理依赖;
bundle exec pod install时,bundler 会读取 Gemfile 选择指定版本的 cocoapods 来执行pod install命令,从而让团队的工作环境保持一致。
| RubyGems | CocoaPods | Bundler | |
|---|---|---|---|
| 管理内容 | 管理 Gem | 工程依赖包 | 管理 Gem 依赖 |
| 类别 | Gem | Gem | |
| 描述文件 | 无 | Podfile | Gemfile |
| 锁屏文件 | 无 | Podfile.lock | Gemfile.lock |
终端工具
当我们需要执行命令时,需要打开终端程序,终端再与 shell 建立会话连接。可以理解为,终端是命令行环境的外壳,负责高亮显示、窗口管理等;shell 则是核心,负责命令的解析执行。
Unix shell: 既是命令解释器,也是编程语言。起到连接操作系统内核和用户的作用, 把用户在terminal上输入的命令进行解析,接着传递给内核
shell 种类:ash、bash、ksh、csh、zsh等,在大多数 Linux 系统中,默认的 shell 是 Bash,而在 macOS 系统中,默认的 shell 是 Zsh(Z Shell);
shell 使用环境变量来存储 shell 会话和工作环境的相关信息(这也是被称作环境变量的原因; PATH 环境变量定义了用于查找命令和程序的目录。
- 如果应用程序的可执行文件目录不在 PATH 环境变量所包含的目录中, 执行时shell 会提示 command not found。
iterm2:第三方维护的一个终端, 功能比 terminal 更多, 使用起来更方便
Oh My Zsh 是一个开源的、社区驱动的框架,用于管理您的 Zsh 配置
常用插件:
- 命令自动补全插件 zsh-autosuggestions
- 高亮显示常用命令的插件 zsh-syntax-highlighting
常用 Shell 指令
- ctrl + c 终止命令
- ctrl + d 退出 Shell
查看文件操作
- ls -l: 显示详细文件信息 ls -a 显示隐藏文件
-
d开头表示它是一个目录, 以-开头表示它是一个普通文件, 之后每三个字符代表一个权限组,分别表示所有者、所属组和其他用户对该文件的读、写和执行权限。r表示读权限,w表示写权限,x表示执行权限,而-表示相应的权限未设置。 -
13: 这是与该文件或目录相关的链接数。对于目录,链接数表示该目录下的子目录和文件的数量 -
bytedance: 这是文件或目录的所有者。 -
staff: 这是文件或目录的所属用户组。 -
416: 这是文件或目录的大小(以字节为单位)。对于目录,它表示目录本身所占用的磁盘空间。 -
1: 这是最后修改日期的月份。 -
4: 这是最后修改日期的日期。 -
16:53: 这是最后修改日期的时间。 -
BizPod: 这是文件或目录的名称。
工作目录
- cd X: change directory X, 进入 X
- cd ~: /home
- cd -: 退回切换前的目录
- cd ..: 返回上一级目录
- pwd: print working directory 显示用户当前目录
- mkdir: make directory 创建目录
- mkdir -p: make directory with parents 若指定路径的父目录不存在则一并创建
- rm: remove 删除
- rm -r: remove recursively, 删除目录及其子目录下所有内容
- rm -f: remove forcefully, 强制删除
- rm -i: remove interactively, 删除文件前先询问确认
- mv 源 目标文件/目录: move, 移动文件或重命名文件
- touch: 创建文件
文件
- cat: concatenate 用于显示文件的内容、合并文件或从标准输入读取并输出到标准输出
- cat file1 file2 > file3 将file1和file2的内容结合起来写到file3中,file3以前的内容被清空
- cat file1 file2 >> file3 将file1和file2的内容结合起来追加到file3中
- echo: 用于在命令行中打印文本内容或将文本输出到文件
- echo -n: 显示字符串时在最后自动换行
- find: 搜索文件
字符串操作
- ctrl + a 移动到行首
- ctrl + e 移动到行尾
- ctrl + u 清除光标到行首内容
- ctrl + k 清除光标到行尾内容
- ctrl + w 清除光标之前一个单词
- ctrl + y 粘贴上一个删除的字符内容
"vi"("Visual Editor"(可视化编辑器)) 编辑器 / "Vim"("Vi IMproved"(Vi 的改进版))文本编辑器
- Command Mode: 控制光标的移动 和 内容删除
- Insert Mode: 文字输入, [ ESC ] 回退到 command Mode
- Lastline Mode
进入文件: vim file -> 切换到 Insert Mode: i ->
切换回 command Mode: ESC -> 进入 Last line mode: : -> 退出
Command Mode 操作
- ctrl + b 向后滚动一页
- ctrl + f 向前滚动一页
- 0 移到文件开头
- G 移到文件末尾
Last line Mode
- set nu: 列出行号
- #X : 跳到 X 行
- /String: 查找 String, 按 n 跳到下一个匹配的内容
- ?String: 查找 String, 按 n 跳到下一个匹配的内容
- w 保存修改
- q 不保存修改直接退出
- q!
- wq 保存修改并退出