预计阅读时间:8 分钟
Linux 入门学习笔记
一、Linux 是什么?为什么要学?
Linux 是一个开源、免费的类 Unix 操作系统内核。我们常说的“Linux”,其实指的是基于这个内核的完整操作系统(发行版)。
为什么值得学? - 服务器领域绝对霸主(90%+ 云服务器跑 Linux) - 开发必备(Android、嵌入式、Docker、K8s 都基于 Linux) - 安全、稳定、高效 - 学会后理解计算机运作本质
二、选择一个发行版
建议新手从 Ubuntu 或 CentOS Stream 开始。
| 发行版 | 特点 | 适用场景 |
|---|---|---|
| Ubuntu | 社区活跃,文档多,apt 包管理 | 桌面、开发、AI |
| CentOS / Rocky | 稳定,yum/dnf 包管理 | 服务器生产环境 |
| Debian | 极其稳定 | 服务器 |
| Arch | 滚动更新,高度定制 | 进阶玩家 |
我的建议:先装 Ubuntu 虚拟机或 WSL2(Windows Subsystem for Linux)。
三、核心哲学:一切皆文件
Linux 中,硬件、进程、网络连接等都被抽象成文件,用统一的接口操作。
# 查看普通文件
cat /etc/passwd
# 查看设备文件(硬盘)
ls -l /dev/sda
# 查看进程信息(每个进程都是一个目录)
ls /proc/$$ # $$ 是当前 shell 的 PID
四、必会基础命令(带着例子学)
4.1 文件和目录操作
# 显示当前路径
pwd
# 列出文件(带详情)
ls -la
# 切换目录
cd /var/log
# 创建目录(父目录一并创建)
mkdir -p project/src
# 复制文件/目录
cp file1.txt file2.txt
cp -r dir1 dir2
# 移动/重命名
mv oldname.txt newname.txt
# 删除(危险!)
rm file.txt
rm -rf directory # 强制递归删除,慎重
# 查看文件内容
cat small.txt
less bigfile.log # 分页查看,按 q 退出
head -20 log.txt # 前20行
tail -f app.log # 实时追踪日志
4.2 文本处理三剑客(grep、sed、awk)
# grep:搜索行
grep "error" /var/log/syslog
grep -r "TODO" ./src/ # 递归搜索
grep -E "error|fatal" log.txt # 扩展正则
# sed:流编辑器(替换)
sed 's/old/new/g' file.txt # 替换所有 old 为 new
sed -i 's/foo/bar/g' file.txt # 直接修改文件
# awk:文本处理语言
awk '{print $1, $3}' data.txt # 打印第1、3列
awk '$2 > 100 {print $0}' scores.txt # 第2列 >100 的行
ps aux | awk '{sum+=$6} END {print sum}'
4.3 权限管理
# 查看权限
ls -l file.txt
# 输出: -rw-r--r-- 1 user group 1024 Jan 1 12:00 file.txt
# 解读: d(目录)|-(文件) rwx(属主) r-x(组) r-x(其他)
# 修改权限(数字法)
chmod 755 script.sh # rwxr-xr-x
# 4=读, 2=写, 1=执行,7=4+2+1
# 修改权限(符号法)
chmod u+x script.sh # 属主加执行
chmod g-w file.txt # 组去掉写
# 修改属主
chown user:group file.txt
4.4 进程管理
# 查看进程
ps aux # 所有进程
ps -ef | grep nginx # 过滤
top # 动态监控(按 q 退出)
htop # 更友好的 top(需安装)
# 杀进程
kill -9 1234 # 强制杀死 PID 1234
pkill nginx # 按名字杀
# 后台运行
./long_task.sh &
nohup ./task.sh & # 退出终端后继续运行
# 查看端口占用
netstat -tlnp # 监听端口
ss -tlnp # 现代替代
五、输入输出重定向和管道(核心技巧)
# 重定向
command > out.txt # 标准输出到文件(覆盖)
command >> out.txt # 追加
command 2> error.txt # 标准错误重定向
command &> all.txt # 全部输出
# 管道:一个命令的输出作为下一个的输入
ps aux | grep python | wc -l # 统计 Python 进程数
cat log.txt | sort | uniq -c | sort -rn | head -10 # 统计高频词
# 常用组合
dmesg | grep -i error | head -20
find . -name "*.log" | xargs grep "ERROR"
六、用户和组
# 用户相关
whoami # 当前用户
sudo useradd -m alice # 创建用户(带家目录)
passwd alice # 改密码
userdel -r alice # 删除用户及家目录
# 切换用户
su - alice # 切换并加载环境
sudo command # 以 root 执行单条命令
# 组管理
groups # 查看当前用户所属组
groupadd dev
usermod -aG dev alice # 将 alice 加入 dev 组
七、包管理(以 Ubuntu/Debian 为例)
# 更新软件源
sudo apt update
# 升级所有软件
sudo apt upgrade
# 搜索包
apt search nginx
# 安装
sudo apt install htop git vim
# 卸载
sudo apt remove vim
sudo apt purge vim # 连配置文件一起删
# 查看已安装
apt list --installed | grep python
八、第一个实用脚本
创建一个自动备份脚本:
#!/bin/bash
# backup.sh - 备份指定目录到 /backup
SOURCE="$1"
DEST="/backup/$(basename $SOURCE)_$(date +%Y%m%d).tar.gz"
if [ -z "$SOURCE" ]; then
echo "用法: $0 <目录路径>"
exit 1
fi
if [ ! -d "$SOURCE" ]; then
echo "错误: $SOURCE 不是一个目录"
exit 1
fi
mkdir -p /backup
tar -czf "$DEST" "$SOURCE"
if [ $? -eq 0 ]; then
echo "✅ 备份成功: $DEST"
echo "📦 大小: $(du -h $DEST | cut -f1)"
else
echo "❌ 备份失败"
exit 1
fi
使用:
chmod +x backup.sh
./backup.sh /home/alice/Documents
九、常见新手的坑
| 问题 | 正确做法 |
|---|---|
rm -rf / |
永远不要执行,会删整个系统 |
| 直接用 root 做所有事 | 用 sudo,仅必要时提权 |
| 路径中有空格不加引号 | 用 "my file.txt" 或 my\ file.txt |
chmod 777 任何文件 |
危险!通常 755 或 644 足够 |
| 脚本不检查错误 | 检查 $? 或用 set -e |
十、推荐的学习路径
- 第1周:熟悉 20 个常用命令,学会
man查手册 - 第2周:理解文件权限、管道、重定向
- 第3周:写 3-5 个自动化脚本(备份、监控、批量处理)
- 第4周:学习 vim/nano 编辑器,配置环境变量
- 进阶:进程间通信、网络配置、systemd、shell 编程深入
十一、速查卡片
# 我最常用的日常命令
alias ll='ls -alh'
alias gs='git status'
alias ..='cd ..'
# 查找大文件
find / -type f -size +100M 2>/dev/null
# 查看内存
free -h
# 查看磁盘
df -h
# 实时查看系统日志
journalctl -f # systemd 系统
tail -f /var/log/syslog
# 压缩解压
tar -czf out.tar.gz dir/
tar -xzf out.tar.gz
# 网络测试
ping -c 4 google.com
curl -I https://example.com
记住:Linux 的文档就是最好的老师。任何时候遇到不懂的命令或函数,输入:
man 命令名
# 或
命令名 --help
坚持使用命令行一个月,你会发现鼠标效率实在太低了。祝你玩得开心!🐧
本文由 尚先生 原创,转载请注明出处。
评论
0