目录 CONTENTS
- 01
基础命令 ls/cd/pwd - 02
文件系统结构 - 03
文件操作 - 04
文本处理 - 05
用户与权限 - 06
网络命令 - 07
进程管理 - 08
Vim 编辑器 - 09
Shell 脚本
最基础的命令
每天都会用到的核心命令
pwd — 当前目录
Print Working Directory,显示当前工作目录
$ pwd
$pwd/home/feng/projects
ls — 列出文件
List,查看目录内容
$ ls [选项] [目录]
$ls# 普通列出$ls -l# 详细列表$ls -a# 包含隐藏文件$ls -lh# 人性化大小$ls -lt# 按时间排序$ls -R# 递归列出
cd — 切换目录
Change Directory,目录间移动
$ cd [目录]
$cd /home# 绝对路径$cd ..# 上级目录$cd ~# 用户主目录$cd -# 返回上次目录$cd .# 当前目录
clear — 清屏
清空终端屏幕
$ clear
$clear# 或 Ctrl+L
💡 提示:按Tab自动补全,Ctrl+C终止当前命令,Ctrl+L清屏
Linux 文件系统
理解 Linux 的目录结构
/(根目录,所有目录的起点)
├── home/(普通用户目录)
└── feng/(用户 feng 的主目录)
├── Desktop/
├── Downloads/
├── Documents/
└── .config/(隐藏配置目录)
├── root/(管理员主目录)
├── etc/(系统配置文件)
├── var/(可变数据:日志、缓存)
├── usr/(用户程序)
├── tmp/(临时文件)
├── dev/(设备文件)
└── proc/(进程信息)
📌 快捷符号:.当前目录 |..上级目录 |~家目录 |-上次位置
文件与目录操作
创建、复制、移动、删除
mkdir — 创建目录
$ mkdir [选项] 目录名
$mkdir project# 创建单个$mkdir -p a/b/c# 递归创建$mkdir -p {src,dist,test}# 同时创建多个
touch — 创建文件
$ touch 文件名
$touch readme.md$touch a.txt b.txt c.txt# 多个
cp — 复制
$ cp [选项] 源 目标
$cp file.txt backup.txt$cp -r dir/ backup/# 目录$cp -i f.txt dest/# 询问$cp -v f.txt dest/# 显示
mv — 移动/重命名
$ mv [选项] 源 目标
$mv old.txt new.txt# 重命名$mv file.txt /tmp/# 移动$mv -i file.txt dest/# 询问$mv *.txt backup/# 通配符
rm — 删除
$ rm [选项] 文件
$rm file.txt# 删除文件$rm -r dir/# 删除目录$rm -rf dir/# 强制删除$rm -i file.txt# 询问确认
ln — 链接
$ ln [选项] 源 链接
$ln file link# 硬链接$ln -s file link# 软链接$ln -s /path/link# 绝对路径
⚠️ 危险命令:rm -rf /删除全系统!rm -rf *删除当前一切!rm -rf .*删除所有隐藏文件!
文本处理
查看、搜索、统计文本内容
cat — 查看内容
$cat file.txt# 全部$cat -n file.txt# 行号$cat -A file.txt# 显示隐藏字符
head / tail — 部分查看
$head -20 file.txt# 前20行$tail -30 file.txt# 后30行$tail -f log.txt# 实时跟踪$tail -F log.txt# 跟踪并重试
grep — 搜索
$grep "word" file.txt# 搜索$grep -i "word" file.txt# 忽略大小写$grep -r "word" dir/# 递归搜索$grep -n "word" file.txt# 显示行号$grep -v "word" file.txt# 反向匹配
wc — 统计
$wc -l file.txt# 行数$wc -w file.txt# 单词数$wc -c file.txt# 字符数$wc file.txt# 全部
sort / uniq — 排序去重
$sort file.txt# 排序$sort -u file.txt# 排序去重$uniq file.txt# 去重$sort file.txt | uniq -c# 统计重复
diff — 比较文件
$diff a.txt b.txt# 比较$diff -u a.txt b.txt# 统一格式$diff -r dir1/ dir2/# 目录比较
sed — 流编辑器
$sed 's/old/new/' file.txt# 替换$sed 's/old/new/g' file.txt# 全局替换$sed -i 's/old/new/' file.txt# 直接修改$sed '3d' file.txt# 删除第3行
awk — 文本处理
$awk '{print $1}' file.txt# 打印第1列$awk -F',' '{print $2}' file.txt# 指定分隔符$awk 'NR>1' file.txt# 跳过表头$awk '$3>80 {print}' file.txt# 条件打印
用户与权限
理解 Linux 的权限系统
📌 权限格式:-rw-r--r--= 文件类型 + 所有者 + 组 + 其他人的权限
chmod — 修改权限
$chmod +x script.sh# 添加执行权限$chmod 755 file# rwxr-xr-x$chmod 644 file# rw-r--r--$chmod -R 755 dir/# 递归
chown — 修改所有者
$chown user file# 修改所有者$chown user:group file# 同时修改组$chown -R user dir/# 递归
sudo — 提权
$sudo command# 以root执行$sudo -i# 切换root$sudo visudo# 编辑sudoers
su — 切换用户
$su - user# 切换用户$su -# 切换root$whoami# 当前用户
网络命令
检查网络、连接服务器
ping — 连通性测试
$ping google.com# 测试连通$ping -c 4 google.com# 发送4次$ping -i 2 google.com# 间隔2秒
curl — HTTP请求
$curl http://example.com# GET请求$curl -I http://example.com# 响应头$curl -o file.html url# 下载$curl -X POST url -d data# POST
wget — 下载
$wget url# 下载$wget -O file url# 重命名$wget -c url# 断点续传$wget -r url# 递归下载
ssh — 远程连接
$ssh user@host# 连接$ssh -p 2222 user@host# 指定端口$ssh -i key.pem user@host# 密钥登录$scp file user@host:/path# 复制
ip / ifconfig — IP地址
$ip addr# 查看IP$ip addr show eth0# 指定网卡$ip link set eth0 up# 启用网卡$hostname -I# 本机IP
netstat / ss — 端口
$ss -tuln# 监听端口$netstat -tuln# (旧)$ss -tn | grep :80# 80端口
进程管理
查看、控制运行中的程序
ps — 进程列表
$ps# 当前终端$ps aux# 所有进程$ps -ef# 完整格式$ps aux | grep nginx# 查找进程
top / htop — 资源监控
$top# 任务管理器$htop# (需安装)$top -u user# 指定用户$top -p 1234# 指定PID
kill — 终止进程
$kill 1234# 正常终止$kill -9 1234# 强制终止$killall nginx# 按名称终止$pkill -f "python"# 按关键字
jobs / fg / bg — 后台任务
$command &# 后台运行$jobs# 查看任务$fg %1# 切到前台$bg %1# 切到后台$Ctrl+Z# 暂停任务
Vim 编辑器
Linux 下最强大的编辑器
📌 提示:Vim 有三种模式:普通模式(命令)、插入模式(编辑)、可视模式(选择)
基本操作
$vim file.txt# 打开:w# 保存:q# 退出:wq# 保存退出:q!# 强制退出
插入模式
i# 当前光标前a# 当前光标后o# 下方新行O# 上方新行Esc# 退出插入
光标移动
h j k l# ← ↓ ↑ →w# 下个单词b# 上个单词0 $# 行首/行尾gg G# 文件头/尾
编辑操作
x# 删除字符dd# 删除行u# 撤销Ctrl+r# 重做yy# 复制行p# 粘贴
搜索替换
/word# 搜索n# 下个匹配:%s/old/new/g# 全局替换:s/old/new/# 当前行
高级技巧
5G# 跳到第5行dw# 删除单词ciw# 改写单词:sp file# 水平分屏:vsp file# 垂直分屏
📌 口诀:i=插入Esc=退出:wq=保存u=撤销dd=删行
Shell 脚本基础
编写自动化脚本
hello.sh
#!/bin/bash# 这是一个简单的脚本echo"Hello World!"NAME="Linux"echo"Welcome to $NAME"# 条件判断if[ -f "$1" ]; then echo"File exists"fi
变量
$name="Linux"# 定义$echo $name# 使用$echo ${name}# 规范写法$readonly const="X"# 常量
数组
$arr=(a b c d)# 定义$echo ${arr[0]}# 访问$echo ${arr[@]}# 全部$echo ${#arr[@]}# 长度
循环
# for 循环fori in {1..5}; do echo$idone
函数
func(){ echo$1}$func arg1
💡 运行脚本:chmod +x script.sh && ./script.sh
动手练习
在服务器上实践这些命令吧
🎯 练习 1:文件操作
# 1. 创建项目目录结构mkdir -p myproject/{src,docs,tests,dist}# 2. 进入项目目录cd myproject# 3. 创建文件touch README.mdtouch src/index.jstouch src/style.css# 4. 查看结构ls -R# 5. 复制文件cp README.md README.backup.md# 6. 重命名mv src/index.js src/main.js# 7. 删除rm README.backup.md# 8. 最终结构tree # 如果没有 tree,用 ls -R
🎯 练习 2:文本搜索
# 1. 创建测试文件echo -e "apple\nbanana\napple\norange\napple" > fruits.txtcat fruits.txt# 2. 搜索 applegrep "apple" fruits.txt# 3. 显示行号grep -n "apple" fruits.txt# 4. 统计出现次数grep -c "apple" fruits.txt# 5. 反向搜索(不含 apple)grep -v "apple" fruits.txt# 6. 排序并去重sort fruits.txt | uniq -c# 7. 替换sed 's/apple/grape/g' fruits.txt
🎯 练习 3:权限管理
# 1. 创建脚本echo '#!/bin/bashecho "Hello"' > hello.sh# 2. 查看权限ls -l hello.sh# 3. 添加执行权限chmod +x hello.sh# 4. 再次查看ls -l hello.sh# 5. 运行脚本./hello.sh# 6. 数字权限chmod 755 hello.sh # rwxr-xr-xchmod 644 hello.sh # rw-r--r--# 7. 创建新用户(需要root)# sudo useradd testuser# sudo passwd testuser
🎯 练习 4:Vim 入门
# 1. 打开文件vim hello.txt# 2. 进入插入模式,输入内容iHello VimWorld[按 Esc 退出插入模式]# 3. 保存退出:wq# 4. 再次打开vim hello.txt# 5. 删除一行(普通模式)dd# 6. 撤销u# 7. 复制一行yy# 8. 粘贴p# 9. 搜索/hellon # 下一个N # 上一个# 10. 替换当前行:s/hello/bye/g# 11. 保存退出:wq
🎯 练习 5:监控与进程
# 1. 查看当前进程ps aux | head -10# 2. 实时监控top# 按 q 退出# 3. 查找特定进程ps aux | grep bash# 4. 后台运行任务sleep 100 &jobs# 5. 查看后台任务jobs# 6. 切到前台fg %1# 按 Ctrl+C 终止# 7. 再次后台运行sleep 100 &# 8. 终止进程kill %1# 9. 查看系统资源df -hfree -huptime
🎯 练习 6:网络操作
# 1. 测试网络ping -c 3 baidu.com# 2. 下载文件wget https://example.com/file.tar.gz# 或curl -O https://example.com/file.tar.gz# 3. 查看本机 IPip addrhostname -I# 4. 检查端口ss -tuln# 5. 远程连接测试ssh -V# 6. HTTP 请求curl https://httpbin.org/getcurl -I https://baidu.com# 7. 传输文件# scp localfile user@host:/path/# scp user@host:/remotefile ./
🎯 练习 7:简单 Shell 脚本
# 创建 backup.shcat > backup.sh << 'EOF'#!/bin/bash# 备份脚本示例DATE=$(date +%Y%m%d)BACKUP_DIR="./backups"# 创建备份目录mkdir -p $BACKUP_DIR# 备份文件cp -r src $BACKUP_DIR/src_$DATEecho "Backup completed: src_$DATE"ls -la $BACKUP_DIREOF# 添加执行权限chmod +x backup.sh# 运行./backup.sh# 创建一个交互脚本cat > greet.sh << 'EOF'#!/bin/bashecho "What's your name?"read nameecho "Hello, $name! Welcome to Linux."EOFchmod +x greet.sh./greet.sh
💡 练习技巧:先看答案理解思路,然后自己动手敲命令。遇到问题用man 命令查看手册,或命令 --help查看帮助。