1. Linux命令行基础概览
1.1 终端与Shell的关系
终端是人与操作系统沟通的入口,提供文本界面来输入命令和显示输出;常见的终端程序包括 GNOME Terminal、iTerm2、xterm 等。
在终端背后运行的是 Shell,它负责解析用户输入的命令、扩展变量、执行脚本以及管控进程。常用的 Shell 有 bash、zsh 等,选择合适的 Shell 能提升工作效率。
1.2 为什么学习命令行
命令行提供了高效且可自动化的工作流,能够通过脚本批量完成重复任务,显著提升生产力。
通过掌握基础命令和管道机制,可以将不同命令组合成强大的工作流,从而实现快速定位问题、处理文本和管理系统的能力。
2. 环境搭建与工具准备
2.1 发行版与包管理器
不同发行版通常使用不同的包管理器来获取软件包,了解所在系统的包管理器是学习命令行的第一步。
在 Debian/Ubuntu 系列中,常用的包管理器是 apt,通过 sudo apt update、sudo apt install <软件名> 等命令安装软件。
# 更新软件包索引
sudo apt update
# 安装 git
sudo apt install -y git
2.2 终端仿真与SSH工具
终端仿真器提供颜色、标签、分屏等方便功能,常见选择包括 GNOME Terminal、iTerm2、Termite 等。
SSH工具用于远程登录另一台主机,常用命令如 ssh user@host;远程拷贝可以使用 scp 或 rsync。
# 使用 SSH 远程登录
ssh user@remote-host
# 将本地文件拷贝到远端
scp localfile.txt user@remote-host:/path/to/destination/
3. 基本命令与目录结构
3.1 路径与工作目录
当前工作目录通过 pwd查看,输出显示你现在所在的路径。
路径分隔符在类 Unix 系统中使用 /,根目录用 /表示,用户目录通常在 /home/你的用户名 下。
pwd
/home/you
3.2 目录列表与导航
列出当前目录内容最常用的命令是 ls,加上参数可以显示更详细信息。
切换工作目录使用 cd,结合相对路径和绝对路径可以快速定位到目标目录。
ls -la
cd /var/log
cd ../tmp
3.3 文件创建与删除
创建空文件可以使用 touch;创建并打开的方式也可以结合编辑器完成。
删除文件与目录需要小心,使用 rm 删除文件,删除目录时需要加选项如 rm -r。
touch newfile.txt
rm oldfile.txt
rm -r olddir
4. 文件与文本处理命令
4.1 文件权限与所有权
权限分为读/写/执行,通过 ls -l 可以看到权限位。
修改权限可以使用 chmod,改变不同用户组的访问级别。
ls -l script.sh
chmod +x script.sh
4.2 文本过滤与查找
文本过滤常用工具是 grep,用于在文件中搜索匹配的文本模式。
多条件筛选可以结合 grep -E、awk、sed 实现复杂筛选。
grep -n "ERROR" /var/log/syslog
grep -E "error|warning" logfile.txt
4.3 文本替换与编辑
简单替换可以用 sed,如就地替换字符串。
批量替换常与管道结合,形成强大的文本处理链。
sed -i 's/old/new/g' filename.txt
cat filename.txt | sed 's/foo/bar/g' | sort
5. 进程、系统信息与性能
5.1 进程查看与控制
查看进程的基础命令是 ps,结合 aux可以查看系统中所有进程信息。
管理前前台进程可以使用 kill、killall,也可以使用更友好的工具如 htop(需要安装)。
ps aux | grep nginx
kill -TERM 1234
5.2 系统资源查看
系统信息可以通过 uname -a、uptime、df -h、free -h 来获取。
性能监控常用命令包括 top、iotop、vmstat。
uptime
df -h
free -h
5.3 常用监控工具
网络负载与资源的监控可以使用 sar(sysstat 包的一部分)来汇总统计信息。
快速排错时,journalctl(对系统日志查看)与 dmesg(内核日志)非常有用。
sar -u 1 3
journalctl -xe
dmesg | tail -n 50
6. 重定向、管道与脚本编写
6.1 重定向与管道
输出重定向将命令输出保存到文件,例如 ls -la > listing.txt。
管道将一个命令的输出作为下一个命令的输入,实现数据流的连接。
ls -la | grep "^d" | wc -l
grep "pattern" logfile | sort | uniq -c | sort -nr
6.2 简单脚本示例
脚本是将一组命令自动化执行的文件,通常以 #!/bin/bash 开头。
编写可执行脚本后,需要赋予执行权限并直接运行。
#!/bin/bash
# 简单问候脚本
echo "Hello, Linux scripting!"
chmod +x greet.sh
./greet.sh
7. 网络相关命令与远程访问
7.1 诊断网络连接
网络连通性可以用 ping、traceroute 或 tracepath。
端口与服务状态可使用 nc(netcat)进行探测,或 ss、netstat 查看连接状态。
ping -c 4 example.com
ss -tulpen | grep 80
7.2 远程连接与文件传输
SSH是最常用的远程登录方式,随着密钥认证也越来越安全。
文件传输可以使用 scp、rsync,适合跨主机备份与同步。
ssh user@remote-host
scp localfile.txt user@remote-host:/path/to/destination/
rsync -avz /local/dir/ user@remote-host:/remote/dir/
8. 实战练习:从零基础到实战的练习清单
8.1 小练习题目
练习目标包括创建目录、搜索日志、提炼关键信息等,帮助巩固基础。
在练习中务必熟悉 命令组合、输出查看与文件管理的基本技巧。
8.2 实战小项目
项目一:每日备份脚本,将指定目录打包后保存到备份目录,并记录时间戳。
以下示例展示一个简化版本,包含注释与可执行脚本的写法:
#!/bin/bash
# 每日备份脚本示例
SRC="/home/user/data"
DST="/home/user/backup"
DATE=$(date +%F-%H%M)
tar czf "$DST/backup-$DATE.tar.gz" -C "$SRC" .
echo "Backup completed: $DST/backup-$DATE.tar.gz"
项目二:日志筛选与汇总,从系统日志中筛选出最近一天的错误信息并统计数量。

步骤包括定位日志文件、使用 grep 过滤、用 wc -l 统计数量,以及用 sort/uniq 汇总。
grep -i "error" /var/log/syslog | grep "$(date +%Y-%m-%d)" | wc -l
grep -i "error" /var/log/syslog | grep "$(date +%Y-%m-%d)" | sort | uniq -c | sort -nr


