命令行基础教程
掌握命令行,成为高效的开发者
命令行概述
什么是命令行
命令行界面(CLI, Command Line Interface) 是通过文本命令与计算机交互的方式。
图形界面(GUI):用鼠标点击操作
命令行界面(CLI):用键盘输入命令
例子:创建文件夹
GUI:右键 → 新建 → 文件夹 → 输入名称
CLI:mkdir 文件夹名 # 一行命令搞定
为什么要学命令行
- 效率更高:批量操作、脚本自动化
- 功能更强:很多工具只有命令行版本
- 服务器必备:服务器通常没有图形界面
- 开发者标配:Git、npm、pip 等都通过命令行使用
- 理解计算机:更接近计算机的工作方式
终端 vs Shell
终端(Terminal):显示命令和结果的窗口程序
Shell:解释和执行命令的程序
关系:
终端 是 Shell 的"壳"(外壳/界面)
Shell 是真正处理命令的"核心"
常见Shell:
| Shell | 系统 | 特点 |
|---|---|---|
| Bash | Linux/Mac | 最通用 |
| Zsh | Mac默认 | Bash增强版 |
| PowerShell | Windows | 功能强大 |
| CMD | Windows | 老式命令行 |
基础命令
目录操作
# 显示当前目录
pwd
# 输出:/Users/username/Projects
# 列出目录内容
ls # 简单列表
ls -l # 详细信息
ls -a # 显示隐藏文件
ls -la # 详细+隐藏
ls -lh # 人类可读的大小
# 切换目录
cd 目录名 # 进入目录
cd .. # 返回上级目录
cd ~ # 回到用户主目录
cd - # 回到上一次的目录
cd / # 进入根目录
# 创建目录
mkdir 目录名 # 创建目录
mkdir -p 父目录/子目录/孙目录 # 递归创建多级目录
# 删除目录
rmdir 目录名 # 删除空目录
rm -r 目录名 # 删除目录及其内容(谨慎使用!)
文件操作
# 创建文件
touch 文件名.txt # 创建空文件
echo "内容" > 文件名.txt # 创建并写入内容
# 查看文件
cat 文件名 # 显示全部内容
less 文件名 # 分页查看(按q退出)
head 文件名 # 显示前10行
head -n 20 文件名 # 显示前20行
tail 文件名 # 显示后10行
tail -f 文件名 # 实时跟踪文件变化
# 复制文件
cp 源文件 目标文件 # 复制文件
cp -r 源目录 目标目录 # 复制目录
# 移动/重命名
mv 旧名称 新名称 # 重命名
mv 文件 目标目录/ # 移动文件
# 删除文件
rm 文件名 # 删除文件
rm -f 文件名 # 强制删除
rm -rf 目录名 # 强制删除目录(危险!)
搜索命令
# 在文件中搜索内容
grep "关键词" 文件名 # 搜索包含关键词的行
grep -r "关键词" 目录 # 递归搜索目录
grep -i "关键词" 文件 # 忽略大小写
grep -n "关键词" 文件 # 显示行号
# 查找文件
find 目录 -name "*.py" # 按名称查找
find . -type f -name "*.txt" # 查找txt文件
find . -type d -name "src" # 查找目录
文件内容操作
# 写入文件
echo "Hello" > file.txt # 覆盖写入
echo "World" >> file.txt # 追加写入
# 查看文件差异
diff 文件1 文件2
# 统计
wc 文件名 # 行数、词数、字符数
wc -l 文件名 # 只显示行数
常用技巧
快捷键
| 快捷键 | 功能 |
|---|---|
| Tab | 自动补全 |
Ctrl + C | 中断当前命令 |
Ctrl + Z | 挂起当前进程 |
Ctrl + D | 退出终端 |
Ctrl + L | 清屏(或输入 clear) |
Ctrl + A | 光标移到行首 |
Ctrl + E | 光标移到行尾 |
Ctrl + U | 删除光标前的内容 |
Ctrl + K | 删除光标后的内容 |
Ctrl + W | 删除前一个单词 |
↑ / ↓ | 历史命令 |
Ctrl + R | 搜索历史命令 |
历史命令
history # 查看命令历史
!n # 执行第n条历史命令
!! # 执行上一条命令
!关键词 # 执行最近包含关键词的命令
管道和重定向
# 管道:将前一个命令的输出作为后一个命令的输入
命令1 | 命令2
# 例子
ls -la | grep ".py" # 列出文件,筛选py文件
cat file.txt | wc -l # 统计文件行数
history | grep "git" # 查找git相关命令
# 重定向
命令 > 文件 # 输出到文件(覆盖)
命令 >> 文件 # 输出到文件(追加)
命令 < 文件 # 从文件读取输入
命令 2> 文件 # 错误输出到文件
命令 &> 文件 # 标准输出和错误都到文件
# 例子
ls -la > files.txt # 保存文件列表
echo "log" >> app.log # 追加日志
python script.py > output.txt 2>&1 # 所有输出到文件
通配符
* # 匹配任意字符
? # 匹配单个字符
[abc] # 匹配a、b或c
[0-9] # 匹配数字
# 例子
ls *.py # 所有.py文件
ls test?.txt # test1.txt, test2.txt等
rm *.log # 删除所有log文件
权限与用户
文件权限
# 查看权限
ls -l
# -rw-r--r-- 1 user group 1234 Dec 21 10:00 file.txt
# ↑
# 权限字符串
# 权限解读
# -rw-r--r--
# - rw- r-- r--
# 类型 所有者 组 其他人
#
# r = 读(4) w = 写(2) x = 执行(1)
修改权限
# 数字方式
chmod 755 文件名 # rwxr-xr-x
chmod 644 文件名 # rw-r--r--
# 符号方式
chmod +x 文件名 # 添加执行权限
chmod -w 文件名 # 移除写权限
chmod u+x 文件名 # 给所有者添加执行权限
# 常用权限
# 755:脚本/可执行文件
# 644:普通文件
# 600:私密文件
切换用户
sudo 命令 # 以管理员权限执行
sudo -i # 切换到root用户
whoami # 显示当前用户名
进程管理
查看进程
ps # 当前终端进程
ps aux # 所有进程
ps aux | grep python # 筛选python进程
top # 动态进程监控(按q退出)
htop # 更好看的top(需安装)
管理进程
# 前台/后台
命令 & # 在后台运行
Ctrl + Z # 挂起到后台
bg # 继续后台运行
fg # 调回前台
# 终止进程
kill PID # 正常终止
kill -9 PID # 强制终止
killall 进程名 # 终止所有同名进程
网络命令
基础网络
# 网络连通性
ping 地址 # 测试连接
ping -c 4 google.com # ping 4次
# DNS查询
nslookup 域名 # 查询DNS
# 网络配置
ifconfig # 查看网络配置(Mac/Linux)
ipconfig # 查看网络配置(Windows)
下载与传输
# 下载文件
curl -O URL # 下载文件
curl -o 文件名 URL # 下载并重命名
wget URL # 下载(需安装)
# 远程连接
ssh user@host # SSH连接
scp 文件 user@host:路径 # 远程复制
实用组合命令
常用场景
# 查找并统计Python文件数量
find . -name "*.py" | wc -l
# 查找大文件
find . -type f -size +100M
# 批量重命名(需要rename命令或写脚本)
for f in *.txt; do mv "$f" "${f%.txt}.md"; done
# 实时查看日志
tail -f /var/log/app.log
# 查找并删除空目录
find . -type d -empty -delete
# 统计代码行数
find . -name "*.py" -exec wc -l {} + | tail -1
# 压缩文件
tar -czvf archive.tar.gz 目录名 # 压缩
tar -xzvf archive.tar.gz # 解压
zip -r archive.zip 目录名 # 压缩成zip
unzip archive.zip # 解压zip
系统信息
# 系统信息
uname -a # 系统信息
df -h # 磁盘使用
du -sh 目录 # 目录大小
free -h # 内存使用(Linux)
# 日期时间
date # 当前时间
cal # 日历
命令速查表
最常用20个命令
| 命令 | 用途 | 示例 |
|---|---|---|
| pwd | 显示当前目录 | pwd |
| ls | 列出文件 | ls -la |
| cd | 切换目录 | cd ~/Projects |
| mkdir | 创建目录 | mkdir myproject |
| touch | 创建文件 | touch readme.md |
| cp | 复制 | cp a.txt b.txt |
| mv | 移动/重命名 | mv old.txt new.txt |
| rm | 删除 | rm file.txt |
| cat | 查看文件 | cat file.txt |
| grep | 搜索内容 | grep "error" log.txt |
| find | 查找文件 | find . -name "*.py" |
| chmod | 修改权限 | chmod +x script.sh |
| sudo | 管理员权限 | sudo apt update |
| ps | 查看进程 | ps aux |
| kill | 终止进程 | kill 1234 |
| ping | 测试网络 | ping google.com |
| ssh | 远程连接 | ssh user@host |
| tar | 压缩解压 | tar -xzvf file.tar.gz |
| history | 历史命令 | history | grep git |
| clear | 清屏 | clear |
练习任务
练习1:目录操作
# 完成以下任务:
# 1. 进入用户主目录
# 2. 创建 coding-practice 目录
# 3. 进入该目录
# 4. 创建 python、javascript、notes 三个子目录
# 5. 列出所有目录
# 6. 返回上级目录
练习2:文件操作
# 完成以下任务:
# 1. 创建一个 hello.py 文件
# 2. 写入 print("Hello, World!")
# 3. 查看文件内容
# 4. 复制为 hello_backup.py
# 5. 重命名为 greet.py
练习3:搜索和管道
# 完成以下任务:
# 1. 列出当前目录所有 .py 文件
# 2. 搜索文件中包含 "print" 的行
# 3. 统计 .py 文件数量
# 4. 查看最近10条历史命令
本章小结
- 基础命令:pwd, ls, cd, mkdir, touch, cp, mv, rm
- 查看内容:cat, less, head, tail, grep
- 快捷键:Tab补全, Ctrl+C中断, 历史命令
- 管道重定向:| 连接命令,> 输出到文件
- 权限管理:chmod修改权限
下一步
掌握了命令行基础,接下来学习Git版本控制。
→ 继续阅读:12-Git版本控制入门