跳到主要内容

命令行基础教程

掌握命令行,成为高效的开发者

命令行概述

什么是命令行

命令行界面(CLI, Command Line Interface) 是通过文本命令与计算机交互的方式。

图形界面(GUI):用鼠标点击操作
命令行界面(CLI):用键盘输入命令

例子:创建文件夹
GUI:右键 → 新建 → 文件夹 → 输入名称
CLI:mkdir 文件夹名 # 一行命令搞定

为什么要学命令行

  1. 效率更高:批量操作、脚本自动化
  2. 功能更强:很多工具只有命令行版本
  3. 服务器必备:服务器通常没有图形界面
  4. 开发者标配:Git、npm、pip 等都通过命令行使用
  5. 理解计算机:更接近计算机的工作方式

终端 vs Shell

终端(Terminal):显示命令和结果的窗口程序
Shell:解释和执行命令的程序

关系:
终端 是 Shell 的"壳"(外壳/界面)
Shell 是真正处理命令的"核心"

常见Shell:

Shell系统特点
BashLinux/Mac最通用
ZshMac默认Bash增强版
PowerShellWindows功能强大
CMDWindows老式命令行

基础命令

目录操作

# 显示当前目录
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条历史命令

本章小结

  1. 基础命令:pwd, ls, cd, mkdir, touch, cp, mv, rm
  2. 查看内容:cat, less, head, tail, grep
  3. 快捷键:Tab补全, Ctrl+C中断, 历史命令
  4. 管道重定向:| 连接命令,> 输出到文件
  5. 权限管理:chmod修改权限

下一步

掌握了命令行基础,接下来学习Git版本控制。

→ 继续阅读:12-Git版本控制入门