iOS开发基础工具

294 阅读6分钟

管理工具

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 进行安装,如:bundlerfastlanecocoapods 等; 它在单一环境(本机)工作, 不需要版本管理

  • 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 命令,从而让团队的工作环境保持一致。

RubyGemsCocoaPodsBundler
管理内容管理 Gem工程依赖包管理 Gem 依赖
类别GemGem
描述文件PodfileGemfile
锁屏文件Podfile.lockGemfile.lock

image.png

终端工具

当我们需要执行命令时,需要打开终端程序,终端再与 shell 建立会话连接。可以理解为,终端是命令行环境的外壳,负责高亮显示、窗口管理等;shell 则是核心,负责命令的解析执行。

Unix shell: 既是命令解释器,也是编程语言。起到连接操作系统内核和用户的作用, 把用户在terminal上输入的命令进行解析,接着传递给内核

image.png

shell 种类:ash、bash、ksh、csh、zsh等,在大多数 Linux 系统中,默认的 shell 是 Bash,而在 macOS 系统中,默认的 shell 是 Zsh(Z Shell);

shell 使用环境变量来存储 shell 会话和工作环境的相关信息(这也是被称作环境变量的原因; PATH 环境变量定义了用于查找命令和程序的目录。

  • 如果应用程序的可执行文件目录不在 PATH 环境变量所包含的目录中, 执行时shell 会提示 command not found

iterm2:第三方维护的一个终端, 功能比 terminal 更多, 使用起来更方便

image.png

Oh My Zsh 是一个开源的、社区驱动的框架,用于管理您的 Zsh 配置 常用插件:

  • 命令自动补全插件 zsh-autosuggestions
  • 高亮显示常用命令的插件 zsh-syntax-highlighting

常用 Shell 指令

  • ctrl + c 终止命令
  • ctrl + d 退出 Shell

查看文件操作

  • ls -l: 显示详细文件信息 ls -a 显示隐藏文件

image.png

image.png

  • 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 保存修改并退出

References

juejin.cn/post/705231…

juejin.cn/post/713098…

juejin.cn/post/723485…