Appearance
终端基础
本章将介绍 macOS 终端的使用方法,包括基本命令、Shell 脚本编程等内容。
终端简介
什么是终端
终端(Terminal)是 macOS 的命令行界面工具,它允许用户通过文本命令与系统交互:
bash
# 打开终端
# 方法一:Spotlight 搜索 "终端"
# 方法二:应用程序 → 实用工具 → 终端
# 使用命令行打开终端
open -a Terminal
# 终端快捷键
Command + N # 新建窗口
Command + T # 新建标签页
Command + W # 关闭当前标签页/窗口
Command + Q # 退出终端Shell 简介
macOS 默认使用 zsh(Z Shell)作为默认 Shell:
bash
# 查看当前 Shell
echo $SHELL
# 查看所有可用的 Shell
cat /etc/shells
# 切换 Shell
chsh -s /bin/zsh # 切换到 zsh
chsh -s /bin/bash # 切换到 bash
# 查看 Shell 版本
zsh --version
bash --version终端配置
bash
# zsh 配置文件
# ~/.zshrc - 用户配置文件
# ~/.zprofile - 登录时执行的配置
# 查看当前配置
cat ~/.zshrc
# 编辑配置文件
nano ~/.zshrc
# 或
open -e ~/.zshrc
# 使配置生效
source ~/.zshrc基本命令
目录操作
bash
# 显示当前目录
pwd
# /Users/用户名
# 列出目录内容
ls # 基本列表
ls -l # 详细信息
ls -la # 包含隐藏文件
ls -lh # 人类可读的文件大小
ls -R # 递归列出子目录
# 切换目录
cd /Users # 切换到指定目录
cd ~ # 切换到用户主目录
cd - # 切换到上一个目录
cd .. # 切换到上级目录
cd ../.. # 切换到上两级目录
# 创建目录
mkdir folder # 创建单个目录
mkdir -p a/b/c # 创建多级目录
mkdir folder1 folder2 # 创建多个目录
# 删除目录
rmdir folder # 删除空目录
rm -rf folder # 删除非空目录(谨慎使用)文件操作
bash
# 创建文件
touch file.txt # 创建空文件
touch file1 file2 # 创建多个文件
# 复制文件
cp file.txt copy.txt # 复制文件
cp -r folder/ copy_folder/# 复制目录
# 移动/重命名文件
mv file.txt new.txt # 重命名
mv file.txt ~/Desktop/ # 移动文件
# 删除文件
rm file.txt # 删除文件
rm -i file.txt # 交互式删除(确认)
rm -f file.txt # 强制删除
# 查看文件内容
cat file.txt # 显示全部内容
less file.txt # 分页查看
head file.txt # 显示前 10 行
head -n 20 file.txt # 显示前 20 行
tail file.txt # 显示后 10 行
tail -f file.txt # 实时查看文件更新
# 查找文件
find ~ -name "*.txt" # 按名称查找
find ~ -type f -size +100M # 查找大于 100MB 的文件文本处理
bash
# 搜索文本
grep "pattern" file.txt # 在文件中搜索
grep -r "pattern" folder/ # 递归搜索
grep -i "pattern" file.txt # 忽略大小写
grep -n "pattern" file.txt # 显示行号
grep -v "pattern" file.txt # 显示不匹配的行
# 文本统计
wc file.txt # 行数、词数、字节数
wc -l file.txt # 只显示行数
wc -w file.txt # 只显示词数
# 文本排序
sort file.txt # 排序
sort -r file.txt # 逆序排序
sort -n file.txt # 数字排序
# 去重
sort file.txt | uniq # 排序并去重
uniq -c file.txt # 显示重复次数
# 文本替换
sed 's/old/new/g' file.txt # 替换所有匹配
sed -i '' 's/old/new/g' file.txt # 直接修改文件
# 文本截取
cut -d',' -f1 file.csv # 按分隔符截取
cut -c1-10 file.txt # 按字符截取系统信息
bash
# 查看系统信息
uname -a # 显示所有系统信息
sw_vers # macOS 版本信息
# 查看硬件信息
system_profiler SPHardwareDataType # 硬件信息
system_profiler SPSoftwareDataType # 软件信息
# 查看内存使用
vm_stat # 虚拟内存统计
top # 系统监控
htop # 更友好的系统监控(需安装)
# 查看磁盘使用
df -h # 磁盘空间
du -sh folder/ # 目录大小
du -h --max-depth=1 folder/ # 显示子目录大小
# 查看进程
ps aux # 所有进程
ps aux | grep "name" # 搜索进程
pgrep -l "name" # 按名称查找进程
# 结束进程
kill PID # 发送终止信号
kill -9 PID # 强制终止
killall "进程名" # 按名称终止
pkill "进程名" # 按名称终止Shell 脚本编程
变量
bash
#!/bin/zsh
# 定义变量
name="张三"
age=25
# 使用变量
echo "姓名: $name"
echo "年龄: $age"
# 特殊变量
echo "当前脚本: $0"
echo "第一个参数: $1"
echo "参数个数: $#"
echo "所有参数: $@"
echo "上一命令退出状态: $?"
# 数组
fruits=("苹果" "香蕉" "橙子")
echo "第一个水果: ${fruits[1]}" # zsh 数组索引从 1 开始
echo "所有水果: ${fruits[@]}"
echo "数组长度: ${#fruits[@]}"条件判断
bash
#!/bin/zsh
# if 语句
score=85
if (( score >= 90 )); then
echo "优秀"
elif (( score >= 80 )); then
echo "良好"
elif (( score >= 60 )); then
echo "及格"
else
echo "不及格"
fi
# 文件测试
file="test.txt"
if [[ -f $file ]]; then
echo "文件存在"
fi
if [[ -d $file ]]; then
echo "是目录"
fi
# 常用测试操作符
# -f 文件存在且是普通文件
# -d 目录存在
# -e 文件或目录存在
# -r 可读
# -w 可写
# -x 可执行
# -s 文件大小不为零
# 字符串比较
str1="hello"
str2="world"
if [[ $str1 == $str2 ]]; then
echo "相等"
fi
if [[ $str1 != $str2 ]]; then
echo "不相等"
fi循环
bash
#!/bin/zsh
# for 循环
for i in 1 2 3 4 5; do
echo "数字: $i"
done
# 使用范围
for i in {1..10}; do
echo "计数: $i"
done
# 遍历数组
fruits=("苹果" "香蕉" "橙子")
for fruit in ${fruits[@]}; do
echo "水果: $fruit"
done
# C 风格 for 循环
for ((i=1; i<=5; i++)); do
echo "循环: $i"
done
# while 循环
count=0
while (( count < 5 )); do
echo "计数: $count"
((count++))
done
# until 循环
count=0
until (( count >= 5 )); do
echo "计数: $count"
((count++))
done
# 循环控制
for i in {1..10}; do
if (( i == 5 )); then
continue # 跳过 5
fi
if (( i == 8 )); then
break # 到 8 停止
fi
echo $i
done函数
bash
#!/bin/zsh
# 定义函数
greet() {
echo "你好, $1!"
}
# 调用函数
greet "张三"
# 带返回值的函数
add() {
local result=$(($1 + $2))
echo $result
}
sum=$(add 10 20)
echo "结果: $sum"
# 返回状态码
check_file() {
if [[ -f $1 ]]; then
return 0 # 成功
else
return 1 # 失败
fi
}
check_file "test.txt"
if [[ $? -eq 0 ]]; then
echo "文件存在"
else
echo "文件不存在"
fi命令行技巧
命令历史
bash
# 查看命令历史
history
# 执行历史命令
!123 # 执行第 123 条命令
!! # 执行上一条命令
!$ # 上一条命令的最后一个参数
!^ # 上一条命令的第一个参数
# 搜索历史命令
# Ctrl + R 后输入搜索内容
# 历史命令配置
# 在 ~/.zshrc 中添加
HISTSIZE=10000 # 保存的历史命令数
SAVEHIST=10000 # 保存到文件的历史命令数
setopt HIST_IGNORE_DUPS # 忽略重复命令别名
bash
# 定义别名
alias ll='ls -la'
alias la='ls -a'
alias l='ls -l'
# 查看所有别名
alias
# 删除别名
unalias ll
# 在 ~/.zshrc 中添加常用别名
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias cls='clear'
alias h='history'
alias j='jobs'命令补全
bash
# Tab 键自动补全
# 输入部分命令后按 Tab
# 双击 Tab 显示所有可能的补全
# zsh 补全增强
# 在 ~/.zshrc 中启用
autoload -Uz compinit && compinit
# 补全菜单导航
# 使用方向键选择补全项管道和重定向
bash
# 管道 - 将一个命令的输出作为另一个命令的输入
ls -la | grep ".txt" # 查找 txt 文件
cat file.txt | sort | uniq # 排序并去重
# 输出重定向
echo "Hello" > file.txt # 覆盖写入
echo "World" >> file.txt # 追加写入
# 输入重定向
sort < file.txt # 从文件读取输入
# 错误重定向
command 2> error.log # 重定向错误输出
command > output.log 2>&1 # 重定向所有输出
# 丢弃输出
command > /dev/null 2>&1 # 丢弃所有输出包管理器
Homebrew
Homebrew 是 macOS 最流行的包管理器:
bash
# 安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 基本命令
brew search package # 搜索软件包
brew info package # 查看软件包信息
brew install package # 安装软件包
brew uninstall package # 卸载软件包
brew update # 更新 Homebrew
brew upgrade # 升级所有软件包
brew upgrade package # 升级指定软件包
brew list # 列出已安装的软件包
brew cleanup # 清理旧版本
# 安装 cask 应用
brew install --cask visual-studio-code
brew install --cask google-chrome
brew install --cask iterm2
# 服务管理
brew services list # 列出服务
brew services start mysql # 启动服务
brew services stop mysql # 停止服务
brew services restart mysql # 重启服务常用软件包
bash
# 开发工具
brew install git # 版本控制
brew install node # Node.js
brew install python # Python
brew install go # Go 语言
brew install rust # Rust 语言
# 命令行工具
brew install wget # 下载工具
brew install curl # 网络工具
brew install htop # 系统监控
brew install tree # 目录树
brew install jq # JSON 处理
brew install fzf # 模糊搜索
# 终端增强
brew install zsh # Zsh
brew install zsh-autosuggestions # 命令建议
brew install zsh-syntax-highlighting # 语法高亮终端增强
Oh My Zsh
bash
# 安装 Oh My Zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# 配置文件
# ~/.zshrc
# 更改主题
# 编辑 ~/.zshrc,修改 ZSH_THEME
ZSH_THEME="robbyrussell" # 默认主题
ZSH_THEME="agnoster" # 流行主题
ZSH_THEME="powerlevel10k/powerlevel10k" # 高级主题
# 启用插件
plugins=(git zsh-autosuggestions zsh-syntax-highlighting)
# 更新 Oh My Zsh
omz updateiTerm2
bash
# 安装 iTerm2
brew install --cask iterm2
# iTerm2 特点
# - 分屏功能
# - 丰富的配色方案
# - 触发器和自动完成
# - Shell 集成
# - 密码管理器
# 常用快捷键
Command + D # 垂直分屏
Command + Shift + D # 水平分屏
Command + Option + 方向键 # 切换分屏
Command + / # 显示光标位置
Command + Shift + H # 显示粘贴历史小结
本章介绍了 macOS 终端的主要内容:
- 终端基础:了解终端和 Shell
- 基本命令:掌握常用命令操作
- Shell 脚本:学习脚本编程基础
- 命令行技巧:提高命令行效率
- 包管理器:使用 Homebrew 管理软件
- 终端增强:优化终端使用体验
下一步
下一章我们将学习 软件管理,了解 macOS 应用程序的管理方法。
