
很多开发者初次接触 Linux 时面对黑乎乎的终端和复杂的命令常常感到无从下手网上资料又过于零散。本文旨在用一周的时间系统性地带你从零基础入门 Linux覆盖从最基础的命令操作、系统安装到文件管理、权限控制、网络配置、进程管理等核心知识点最终形成一个完整的 Linux 知识体系。无论你是准备转行运维、后端开发还是单纯想提升自己的技术栈这套流程都能让你快速上手并应用到实际工作中。1. Linux 核心概念与学习路线1.1 什么是 Linux为什么必须学Linux 是一个开源、免费的操作系统内核。我们常说的 “Linux 操作系统” 通常指的是基于 Linux 内核并集成了 GNU 工具和各种应用软件的操作系统发行版如 Ubuntu、CentOS、Debian 等。对于开发者而言学习 Linux 几乎是必经之路主要原因有服务器领域绝对主流全球超过 90% 的服务器运行在 Linux 系统上包括云计算、大数据、人工智能等领域的后端服务。开发环境统一许多开发工具链、编译环境、容器技术如 Docker都原生支持或优先支持 Linux在 Linux 下开发能避免很多跨平台兼容性问题。强大的命令行与脚本能力Linux 的命令行工具极其丰富和高效通过 Shell 脚本可以实现复杂的自动化任务大幅提升工作效率。深入理解计算机系统学习 Linux 的过程也是理解操作系统原理、文件系统、进程管理、网络协议等底层知识的最佳实践。1.2 一周学习路线图为了高效学习我们制定一个为期七天的学习计划每天聚焦一个核心主题Day 1 环境搭建与初识终端– 安装 Linux 系统虚拟机/实体机熟悉终端界面掌握最基本的几个命令。Day 2 文件与目录操作核心命令– 学习如何浏览、创建、移动、复制、删除文件和目录这是所有操作的基础。Day 3 文件内容查看与编辑– 掌握查看文件内容的多种方式并学会使用vim或nano编辑器修改文件。Day 4 用户、权限与进程管理– 理解 Linux 多用户特性学习用户/组管理、文件权限设置以及如何查看和控制进程。Day 5 软件包管理与系统服务– 学习使用apt/yum等工具安装软件并管理系统的后台服务如启动、停止 Web 服务器。Day 6 网络配置与磁盘管理– 学习配置网络、查看网络状态以及磁盘分区、挂载等基本管理操作。Day 7 Shell 脚本编程入门与综合实践– 将前六天的知识串联起来编写一个简单的自动化脚本并复盘整个知识体系。2. 环境准备安装你的第一个 Linux 系统对于初学者强烈建议使用虚拟机安装这样可以在不破坏现有 Windows/Mac 系统的前提下安全地进行各种实验。2.1 准备工作虚拟机软件下载并安装VMware Workstation Player免费用于个人学习或VirtualBox完全免费。Linux 发行版镜像选择一款适合新手的发行版推荐Ubuntu 22.04 LTS。LTS 代表长期支持版本更稳定。从官网下载其 ISO 镜像文件。硬件资源为虚拟机分配至少2核 CPU、4GB 内存、20GB 硬盘空间。这些资源是从你宿主机中划出的。2.2 在 VMware 中安装 Ubuntu以下是在 VMware Workstation 17 Player 中安装 Ubuntu 22.04 的详细步骤创建新的虚拟机打开 VMware选择“创建新虚拟机”。选择安装来源选择“安装程序光盘映像文件(iso)”并浏览到你下载的 Ubuntu ISO 文件。设置用户名和密码输入你的全名如yourname。输入用户名如devuser这将是你登录系统的账户名。设置一个安全的密码并确认。命名虚拟机与指定位置给虚拟机起个名字如MyUbuntu并选择一个剩余空间充足的磁盘位置来存放虚拟机文件。指定磁盘容量建议将最大磁盘大小设置为40 GB并选择“将虚拟磁盘拆分成多个文件”。自定义硬件关键步骤在完成前点击“自定义硬件”。内存调整为4096 MB4GB。处理器调整为2个内核。网络适配器确保是NAT 模式这样虚拟机可以共享宿主机的网络上网。其他设置保持默认点击“关闭”然后点击“完成”。开始安装VMware 会自动启动虚拟机并开始安装过程。安装过程是全自动的等待约10-20分钟。安装完成安装结束后系统会提示重启。重启后输入你之前设置的密码即可登录到 Ubuntu 的图形化桌面环境。安装后第一件事打开终端。你可以使用快捷键Ctrl Alt T或者在应用菜单中搜索 “Terminal” 并打开。你将看到一个类似devusermyubuntu:~$的提示符这表示你已经准备好输入命令了。3. Day 1 2 终端基础与文件目录操作3.1 终端基础与命令结构打开终端后你会看到命令提示符其一般结构为用户名主机名:当前目录$。$符号表示当前是普通用户如果是#则表示是超级管理员 root。Linux 命令的基本格式是命令 [选项] [参数]命令要执行的操作如ls,cd。选项通常以-或--开头用于修改命令的行为如ls -l。参数命令作用的对象如文件名或目录名如cd /home。常用基础命令pwd打印当前工作目录的绝对路径。clear或Ctrl L清空终端屏幕。whoami显示当前登录的用户名。history查看之前执行过的命令历史。可以用!序号来快速执行历史中的某条命令。3.2 文件与目录操作核心命令这是使用 Linux 最频繁的部分。1. 列出目录内容 (ls)# 列出当前目录下的文件和目录简单列表 ls # 以长格式列出显示详细信息权限、所有者、大小、修改时间 ls -l # 列出所有文件包括隐藏文件以 . 开头的文件 ls -a # 组合使用以长格式列出所有文件包括隐藏文件 ls -la # 按文件大小排序-S大文件在前并显示人类可读的大小-h ls -lhS # 递归列出子目录的内容 ls -R2. 切换目录 (cd)# 切换到用户的家目录/home/用户名 cd cd ~ # 切换到根目录 cd / # 切换到上一级目录 cd .. # 切换到上两级目录 cd ../.. # 切换到绝对路径 /usr/local/bin cd /usr/local/bin # 切换到相对路径例如当前目录下的 projects 子目录 cd projects # 返回之前所在的目录 cd -3. 查看文件内容# 查看文件全部内容适合小文件 cat filename.txt # 查看文件开头10行 head filename.txt # 查看文件末尾10行 tail filename.txt # 实时查看日志文件的新增内容非常实用 tail -f /var/log/syslog # 分页查看文件内容按空格翻页按q退出 less filename.txt # 显示文件内容并加上行号 cat -n filename.txt4. 创建与删除# 创建一个空文件 touch newfile.txt # 创建目录 mkdir myfolder # 创建多级目录-p 表示如果父目录不存在则一并创建 mkdir -p project/src/main/java # 删除空目录 rmdir emptyfolder # 删除文件系统会询问确认 rm file.txt # 强制删除文件不询问 rm -f file.txt # 递归删除目录及其下所有内容危险使用需谨慎 rm -rf myfolder警告rm -rf /是极其危险的命令会强制删除根目录下所有文件导致系统崩溃。切勿尝试5. 复制与移动# 复制文件 cp source.txt destination.txt cp source.txt /path/to/destination/ # 复制目录-r 表示递归复制 cp -r sourcedir/ destinationdir/ # 移动或重命名文件 mv oldname.txt newname.txt mv file.txt /another/path/ # 移动目录 mv dir1/ /new/location/4. Day 3 文件编辑与查找4.1 使用 Vim 编辑器vim是 Linux 下功能最强大的文本编辑器之一虽然学习曲线稍陡但掌握后效率极高。它有两种主要模式普通模式 (Normal Mode)刚进入 vim 时的模式用于移动光标、删除、复制粘贴等。插入模式 (Insert Mode)可以像普通编辑器一样输入文本。基本操作流程# 1. 用 vim 打开或创建一个文件 vim hello.txt # 此时处于普通模式。 # 2. 按下 i 键进入插入模式屏幕左下角会显示 -- INSERT --。 # 3. 输入文本例如Hello, Linux World! # 4. 按下 Esc 键退出插入模式回到普通模式。 # 5. 输入 :wq 然后按回车保存文件并退出 vim。 # :w 表示保存 (write) # :q 表示退出 (quit) # :wq 合并命令保存并退出 # :q! 不保存强制退出常用 Vim 命令在普通模式下h/j/k/l 左/下/上/右移动光标。x 删除光标所在字符。dd 删除剪切当前行。yy 复制当前行。p 粘贴到光标下一行。u 撤销上一次操作。/keyword 在文件中搜索keyword按n查找下一个。:set nu 显示行号。:行号 跳转到指定行如:10跳转到第10行。对于新手也可以使用更简单的nano编辑器它的操作更接近普通文本编辑器。4.2 文件查找与内容搜索1. 查找文件 (find)# 在当前目录及子目录中查找名为 config.ini 的文件 find . -name config.ini # 在 /etc 目录下查找所有以 .conf 结尾的文件 find /etc -name *.conf # 查找最近7天内被修改过的文件 find /home -mtime -7 # 查找大于100MB的文件 find / -size 100M2. 在文件中搜索文本 (grep)grep是文本搜索的瑞士军刀。# 在 file.txt 中搜索包含 “error” 的行 grep error file.txt # 搜索时忽略大小写 grep -i error file.log # 递归地在当前目录所有文件中搜索 grep -r function_name . # 显示匹配行及其前后2行内容-A:后-B:前-C:前后 grep -C 2 critical application.log # 只显示匹配的文本部分-o并结合正则表达式查找 IP 地址 grep -oE \b([0-9]{1,3}\.){3}[0-9]{1,3}\b access.log5. Day 4 用户、权限与进程管理5.1 用户与组管理Linux 是一个多用户系统。每个文件都有所属用户和所属组。查看用户信息# 查看当前登录用户 whoami # 查看当前用户的详细信息 id # 查看所有用户登录情况 who用户管理需要 root 权限使用sudo# 添加一个新用户 testuser sudo adduser testuser # 系统会提示设置密码等信息 # 删除用户 testuser同时删除其家目录 sudo deluser --remove-home testuser # 修改用户密码 sudo passwd testuser组管理# 添加新组 developers sudo groupadd developers # 将用户 testuser 添加到 developers 组 sudo usermod -aG developers testuser # 查看用户所属组 groups testuser5.2 文件权限详解使用ls -l查看文件时第一列显示的就是权限如-rwxr-xr--。第1位文件类型-普通文件d目录l链接。第2-4位所有者 (user)的读(r)、写(w)、执行(x)权限。第5-7位所属组 (group)的权限。第8-10位其他用户 (others)的权限。权限也可以用数字表示r4, w2, x1。rwxr-xr--换算为数字就是754。修改权限 (chmod)# 数字形式给文件所有者读写执行(7)组用户读执行(5)其他用户读(4) chmod 754 script.sh # 符号形式给所有用户添加执行权限 chmod ax script.sh # 符号形式移除组和其他用户的写权限 chmod go-w document.txt修改所有者和所属组 (chown, chgrp)# 将文件 file.txt 的所有者改为 root需要 sudo sudo chown root file.txt # 将文件 file.txt 的所有者和组都改为 root sudo chown root:root file.txt # 仅修改文件 file.txt 的所属组为 www-data sudo chgrp www-data file.txt5.3 进程管理进程是正在运行的程序实例。查看进程 (ps)# 查看当前终端下的进程 ps # 查看所有进程BSD风格 ps aux # 查看所有进程并以全格式显示 ps -ef # 结合 grep 查找特定进程如查找 nginx ps aux | grep nginx动态查看进程 (top/htop)top命令可以实时显示系统进程状态和资源占用CPU、内存。htop是其增强版界面更友好通常需要安装sudo apt install htop。结束进程 (kill)# 首先找到进程的 PID进程ID例如 1234 ps aux | grep some_program # 优雅地结束进程发送 SIGTERM 信号允许进程清理后退出 kill 1234 # 强制结束进程发送 SIGKILL 信号立即终止 kill -9 1234 # 根据进程名结束所有相关进程 pkill some_program killall some_program进程后台运行# 在命令末尾加 让命令在后台运行 python3 long_running_script.py # 查看后台作业 jobs # 将后台作业调到前台运行%1 表示作业号1 fg %1 # 将当前前台作业暂停并放到后台按 CtrlZ然后输入 bg # 按 CtrlZ 暂停进程 bg %1 # 让其在后台继续运行6. Day 5 软件包管理与系统服务6.1 软件包管理不同的 Linux 发行版使用不同的包管理工具。Ubuntu/Debian 系列使用aptCentOS/RHEL/Fedora 系列使用yum或dnf。Ubuntu/Debian (apt) 常用命令# 1. 更新软件包源列表必须经常做 sudo apt update # 2. 升级所有已安装的软件包到最新版本 sudo apt upgrade # 3. 安装一个软件包如 nginx sudo apt install nginx # 4. 移除一个软件包但保留配置文件 sudo apt remove nginx # 5. 完全移除软件包及其配置文件 sudo apt purge nginx # 6. 搜索软件包 apt search python3-pip # 7. 查看软件包信息 apt show nginx # 8. 清理不再需要的依赖和缓存 sudo apt autoremove sudo apt autocleanCentOS/RHEL (yum/dnf) 常用命令# 更新软件包dnf 是 yum 的下一代版本命令基本兼容 sudo yum update # 或 sudo dnf update # 安装软件包 sudo yum install nginx # 移除软件包 sudo yum remove nginx # 搜索软件包 yum search python36.2 系统服务管理 (systemd)现代 Linux 发行版大多使用systemd作为初始化系统和服务管理器。查看服务状态# 查看 nginx 服务的状态 sudo systemctl status nginx # 如果服务正在运行会显示 active (running)启动、停止、重启、重载服务sudo systemctl start nginx # 启动 sudo systemctl stop nginx # 停止 sudo systemctl restart nginx # 重启先停后启 sudo systemctl reload nginx # 重载配置不中断服务适合Nginx设置开机自启/禁用sudo systemctl enable nginx # 启用开机自启 sudo systemctl disable nginx # 禁用开机自启查看所有已启动的服务systemctl list-units --typeservice --staterunning7. Day 6 网络配置与磁盘管理7.1 网络配置与诊断查看网络接口与IP地址# 传统命令 ifconfig # 新式命令推荐 ip addr show # 简写 ip a测试网络连通性# 测试到百度服务器的连通性和延迟 ping www.baidu.com # 按 CtrlC 停止 # 跟踪数据包经过的路由节点 traceroute www.baidu.com # 或使用 tracepath tracepath www.baidu.com查看网络连接和端口监听# 显示所有网络连接、监听端口等信息 netstat -tulnp # 新式命令推荐显示所有监听端口 ss -tulnp # 解释 # -t: TCP, -u: UDP, -l: 监听, -n: 数字形式显示端口, -p: 显示进程名配置静态IP以Ubuntu为例 编辑网络配置文件/etc/netplan/01-netcfg.yaml文件名可能不同network: version: 2 ethernets: ens33: # 你的网卡名称用 ip a 查看 dhcp4: no addresses: [192.168.1.100/24] # 静态IP和子网掩码 gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114]应用配置sudo netplan apply7.2 磁盘与文件系统管理查看磁盘空间使用情况# 查看所有挂载点的磁盘使用情况人类可读格式 df -h # 查看当前目录下各文件/目录的大小 du -sh * # 查看当前目录总大小 du -sh .挂载与卸载磁盘# 查看已挂载的设备 mount # 或 lsblk # 挂载一个U盘或光盘假设设备是 /dev/sdb1挂载到 /mnt/usb sudo mount /dev/sdb1 /mnt/usb # 卸载 sudo umount /mnt/usb创建文件系统与分区警告此操作会清空磁盘数据务必确认磁盘无误# 查看磁盘分区情况 sudo fdisk -l # 对磁盘 /dev/sdb 进行分区操作交互式 sudo fdisk /dev/sdb # 在 fdisk 交互界面中常用命令 # n - 新建分区 # p - 打印分区表 # w - 写入并退出 # q - 不保存退出 # 在新分区 /dev/sdb1 上创建 ext4 文件系统 sudo mkfs.ext4 /dev/sdb18. Day 7 Shell 脚本入门与综合实践Shell 脚本是将一系列命令组合在一起实现自动化任务的强大工具。8.1 编写第一个 Shell 脚本创建脚本文件# 使用 vim 或 nano 创建一个新文件 vim my_first_script.sh编写脚本内容#!/bin/bash # 这是一个简单的 Shell 脚本示例 # 第一行 #!/bin/bash 称为 shebang指定解释器 echo 系统信息报告 echo 报告生成时间$(date) echo echo 1. 当前用户$(whoami) echo echo 2. 系统运行时间 uptime echo echo 3. 磁盘使用情况 df -h | grep -E ^/dev/sd echo echo 4. 内存使用情况 free -h echo echo 5. 当前目录文件列表 ls -la echo echo 报告结束 赋予脚本执行权限chmod x my_first_script.sh运行脚本# 方式一使用解释器直接运行 bash my_first_script.sh # 方式二作为可执行文件运行需要先 chmod x ./my_first_script.sh8.2 Shell 脚本核心语法变量# 定义变量等号两边不能有空格 nameLinux Learner count10 # 使用变量用 $ 符号引用 echo Hello, $name echo Count is $count # 将命令执行结果赋值给变量 current_date$(date) echo Today is $current_date条件判断 (if)#!/bin/bash read -p 请输入一个数字: num if [ $num -gt 10 ]; then echo 数字大于10 elif [ $num -eq 10 ]; then echo 数字等于10 else echo 数字小于10 fi循环 (for, while)# for 循环示例 for i in {1..5}; do echo 循环第 $i 次 done # 遍历当前目录下的 .txt 文件 for file in *.txt; do echo 处理文件: $file # 可以在这里添加处理命令如 wc -l $file done # while 循环示例 count1 while [ $count -le 5 ]; do echo Count: $count ((count)) # 或 count$((count1)) done函数#!/bin/bash # 定义函数 greet_user() { local username$1 # local 声明局部变量 echo Hello, $username! Welcome to the system. } # 调用函数 greet_user Alice greet_user Bob8.3 综合实践自动备份脚本让我们编写一个实用的脚本用于备份指定目录到另一个位置并保留7天内的备份。#!/bin/bash # backup_script.sh - 目录备份脚本 # 配置变量 SOURCE_DIR/home/devuser/important_data # 要备份的源目录 BACKUP_DIR/backups # 备份存放目录 BACKUP_PREFIXdata_backup # 备份文件前缀 RETENTION_DAYS7 # 保留天数 # 创建备份目录如果不存在 mkdir -p $BACKUP_DIR # 生成带时间戳的备份文件名 TIMESTAMP$(date %Y%m%d_%H%M%S) BACKUP_FILE$BACKUP_DIR/${BACKUP_PREFIX}_${TIMESTAMP}.tar.gz echo 开始备份: $(date) echo 源目录: $SOURCE_DIR echo 备份到: $BACKUP_FILE # 执行备份使用 tar 压缩 tar -czf $BACKUP_FILE -C $(dirname $SOURCE_DIR) $(basename $SOURCE_DIR) 2/dev/null # 检查备份是否成功 if [ $? -eq 0 ]; then echo 备份成功完成 echo 备份文件大小: $(du -h $BACKUP_FILE | cut -f1) else echo 备份失败请检查源目录是否存在或权限是否足够。 exit 1 fi # 清理旧的备份文件保留最近7天 echo 清理 $RETENTION_DAYS 天前的旧备份... find $BACKUP_DIR -name ${BACKUP_PREFIX}_*.tar.gz -mtime $RETENTION_DAYS -delete echo 备份和清理操作全部完成于: $(date)使用说明将脚本中的SOURCE_DIR和BACKUP_DIR修改为你的实际路径。赋予执行权限chmod x backup_script.sh。可以将其加入crontab实现定时自动备份例如每天凌晨2点# 编辑当前用户的 cron 任务 crontab -e # 在末尾添加一行 0 2 * * * /path/to/your/backup_script.sh /path/to/backup.log 219. 常见问题与排查思路问题现象可能原因排查与解决思路命令未找到 (Command not found)1. 命令拼写错误。2. 软件包未安装。3. 命令所在目录不在PATH环境变量中。1. 检查拼写which 命令名或type 命令名。2. 使用包管理器安装sudo apt install 包名。3. 检查PATH:echo $PATH。权限被拒绝 (Permission denied)1. 对文件/目录没有读、写或执行权限。2. 操作需要 root 权限。1. 检查权限ls -l 文件名。2. 修改权限chmod或chown。3. 在命令前加sudo如果是 root 权限问题。无法连接到网络1. 网络服务未启动。2. IP 配置错误。3. 防火墙阻止。1. 检查网卡状态ip a看是否有UP标志和有效 IP。2. 重启网络服务sudo systemctl restart networking或NetworkManager。3. 检查防火墙规则sudo ufw statusUbuntu。磁盘空间不足 (No space left on device)1. 磁盘确实已满。2. inode 耗尽小文件过多。1. 查看磁盘使用df -h。2. 查找大文件/目录du -sh /* | sort -rh | head -10。3. 查看 inode 使用df -i。进程占用端口服务启动失败某个进程已经占用了服务需要使用的端口。1. 查找占用端口的进程sudo lsof -i :端口号或sudo ss -tulnp | grep :端口号。2. 停止该进程或修改服务配置使用其他端口。脚本执行错误bad interpreter1. Shebang (#!) 行指定的解释器路径错误。2. 脚本文件格式是 Windows (CRLF) 而非 Unix (LF)。1. 检查第一行head -1 脚本名.sh确保是#!/bin/bash。2. 转换文件格式dos2unix 脚本名.sh。sudo提示用户不在 sudoers 文件中当前用户没有被授予sudo权限。1. 使用 root 用户登录或切换至已有 sudo 权限的用户。2. 由 root 用户编辑/etc/sudoers文件添加该用户。谨慎操作10. 最佳实践与进阶学习建议10.1 日常使用最佳实践勤用 Tab 键补全在输入命令、路径、文件名时多按Tab键可以自动补全或列出选项提高效率并减少拼写错误。善用命令历史使用上/下箭头翻阅历史命令CtrlR进行反向搜索历史命令。理解命令后再执行对于不熟悉的命令尤其是rm -rf、dd、fdisk、chmod 777 /等危险命令先用--help查看帮助或在测试环境验证。使用别名 (alias)将常用长命令设为简短别名添加到~/.bashrc文件中。alias llls -la alias updatesudo apt update sudo apt upgrade然后执行source ~/.bashrc使其生效。重定向与管道是利器输出重定向追加输入重定向|管道将一个命令的输出作为另一个命令的输入。例如grep error log.txt | wc -l统计错误行数。配置文件备份修改重要配置文件如/etc/ssh/sshd_config,~/.bashrc前先备份cp file.conf file.conf.bak。10.2 安全注意事项最小权限原则不要长期使用 root 用户操作。日常使用普通用户需要时再用sudo。谨慎处理权限避免随意使用chmod 777这会给所有用户赋予所有权限存在严重安全风险。应根据实际需要精确设置权限。防火墙启用并配置防火墙如ufw只开放必要的端口。定期更新使用sudo apt update sudo apt upgrade定期更新系统修复安全漏洞。密钥登录 SSH禁用 SSH 密码登录改用密钥对认证更安全。10.3 下一步进阶学习路线完成本周的基础学习后你可以根据兴趣选择方向深入Shell 脚本编程学习更复杂的语法、函数、调试、信号处理阅读《Linux命令行与Shell脚本编程大全》。网络服务管理深入学习 Nginx/Apache Web服务器、MySQL/PostgreSQL数据库、Docker容器的配置与管理。系统性能调优学习使用vmstat,iostat,sar,perf等工具监控和分析系统性能瓶颈。自动化与配置管理学习 Ansible、Puppet、Chef 等自动化运维工具。内核与驱动深入理解 Linux 内核模块、设备驱动开发难度较高。云计算与容器学习在 AWS/Azure/GCP 云平台上部署和管理 Linux 实例深入学习 Docker 和 Kubernetes。学习 Linux 是一个持续的过程最好的方法就是多动手、多实践、多犯错、多总结。将你的个人电脑环境、开发环境甚至家庭服务器都迁移到 Linux在真实的使用场景中不断巩固和深化你的技能。遇到问题善用man命令如man ls查看官方手册以及利用 Google 和 Stack Overflow 等社区寻找解决方案。