☰
Linux第一次作业全攻略:环境搭建、核心命令与Shell脚本实战
2026/10/2 2:44:02 网站建设 项目流程

把“Linux第一次作业”当成一次练手项目来写,而不是交差了事。

很多朋友第一次拿到这类作业时,心里想的都是“怎么最快做完交上去”,但我的看法很明确:这样会错过一次真正理解操作系统的机会。这篇内容我会从一个“过来人”的角度,把这份作业拆解成环境搭建、命令学习、脚本初探、进阶实操和报告写作几个部分,每一部分都给出具体的操作逻辑和避坑经验。

1. 先想明白:这份作业到底在练什么

1.1 作业背后隐藏的三层能力

“Linux第一次作业”这个标题看似普通,但几乎所有老师在布置这类作业时,真正想考察的都不是“你会几个命令”,而是三层能力:

  • 第一层是环境搭建能力。能不能从零开始装好一个Linux系统,能不能处理安装过程中的报错,这决定了你后续所有操作是否有一个稳定基础。
  • 第二层是命令操作能力。这里考察的不是死记硬背,而是你是否理解文件系统、用户权限、进程管理这些核心概念,以及是否能组合命令解决实际问题。
  • 第三层是文档总结能力。很多作业要求提交实验报告,能不能把操作过程、报错原因、解决思路讲清楚,往往才是拉分的关键。

想明白这一点,你就知道这份作业不能抱着“做完就行”的心态去对待。它本质上是一次“操作系统入门综合训练”。

1.2 常见的作业要求长什么样

虽然每份作业的具体要求不同,但我归纳了出现频率最高的几个考察点,你拿到作业后可以先对照一下:

考察模块常见要求涉及的核心命令/操作
系统安装安装指定Linux发行版虚拟机配置、镜像烧录、分区
文件操作创建、复制、移动、删除文件lscdcpmvrm
用户管理新建用户、设置密码、切换用户useraddpasswdsusudo
权限管理修改文件权限和所有者chmodchown
文本处理编辑文件、查看内容、过滤内容vimcatgrepawk
进程管理查看进程、结束进程pstopkill
脚本基础编写简单Shell脚本bash脚本语法
网络配置查看IP、配置网络ip addrnmcli
日志与备份清理日志、备份重要文件truncatetar

如果你的作业只涵盖其中三四项,那属于合格线;如果涵盖了七八项,那这份作业就是在为后续的系统管理、运维、嵌入式开发打底子,值得认真做。

2. 环境准备:先把系统跑起来

2.1 为什么我强烈推荐虚拟机而不是双系统

第一次做Linux作业,最大的风险不是命令学不会,而是把宿主机搞坏。我见过太多同学在装双系统时因为分区没选对,把Windows引导刷掉了,最后只能抱着电脑去修。所以我的建议就一句话:第一次作业,老老实实用虚拟机。

虚拟机的好处非常明显:

  • 快照功能可以随时回滚,操作失误了恢复到之前的节点,不心疼。
  • 网络模式可以灵活切换,NAT、桥接、仅主机各有用处。
  • 删除方便,做完作业如果不想要了,直接把虚拟机文件删掉即可。

三个主流方案我做了个对比:

方案优点适合场景注意点
VMware Workstation功能全面、稳定性好Windows宿主机、需要图形化操作新版本收费,但学生可以找校园授权或试用版
VirtualBox免费开源、轻量不想折腾授权、配置一般的电脑偶尔会有USB设备识别问题
WSL2启动快、无缝集成Windows文件系统只需要命令行作业、不想装桌面环境无法直接测试GUI程序,和虚拟机不完全等价

如果你是第一次接触Linux,我建议用VMware或VirtualBox装一个带桌面环境的版本,因为桌面能给你“系统确实运行起来了”的直观反馈,命令行窗口输入命令也不会那么让人发怵。

2.2 发行版怎么选:Ubuntu、Debian、Rocky还是Kali

热搜词里有“linux国产”“kali linux安装教程”“rocky linux 10 配置网络信息”,说明不少人在发行版选择上纠结。我的建议是按作业需求来:

  • 如果作业只说“安装Linux”,Ubuntu LTS版本是最稳妥的选择。文档多、社区活跃、遇到问题搜一下基本都有答案,大学作业绝大多数选它不会出错。
  • 如果作业偏向“长期稳定服务、学习企业级运维”,可以选Rocky Linux或AlmaLinux,它们是CentOS停更后的主流替代品,在服务器领域非常常见。
  • 如果作业涉及“桌面办公体验、国产化适配”,可以装deepin(深度Linux),作为国内桌面发行版做得比较好的代表,软件商店、中文输入法都省心。
  • 如果作业方向是“网络安全、渗透测试入门”,Kali Linux是安全领域标配,但请注意:Kali是工具集系统,不适合作为日常桌面使用,第一次作业不推荐直接上手。
  • 如果电脑配置比较老,可以选Debian + 轻量桌面(如XFCE)。Debian稳定、资源占用低,能让你在旧机器上也能流畅体验Linux。

一句话总结:不确定选什么时,选Ubuntu;想做运维方向,选Rocky;想体验国产系统,选deepin。

2.3 安装过程中最容易踩的三个坑

装系统看似无脑点“下一步”,但我在带新人的过程中见过大量失败案例,集中在这三处:

坑一:虚拟机磁盘镜像文件放C盘,导致宿主机磁盘爆满。一个Linux虚拟机动辄占用20G-50G空间。建议在创建虚拟机时就把磁盘文件路径改到D盘或E盘,不要用默认位置。

坑二:网络镜像源没切换,导致下载更新极慢甚至卡死。国内直接连官方源速度非常慢,装完系统第一件事就是换源。以Ubuntu为例,编辑源文件:

sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list sudo apt update

Debian 13(Trixie)的清华源配置也类似,把deb.debian.org替换成mirrors.tuna.tsinghua.edu.cn即可。换源这个操作属于装机必修课,不换源你的第一次作业体验会差好几倍。

坑三:安装过程中分区操作心里没底。对于新手作业,直接在安装引导里选择“使用整个磁盘”即可。如果安装引导让你手动分区,不要贸然操作,先去找这个发行版的默认分区方案说明。

另外提醒一句:热搜词里有“虚拟机安装linux蓝屏”,这通常不是因为Linux本身,而是因为宿主机开启了Hyper-V或内核隔离,跟VMware冲突导致蓝屏。解决办法是在Windows功能中关闭Hyper-V,或者改用VirtualBox配合WSL2方案。

3. 命令学习:不是背命令,是理解命令的设计

3.1 文件与目录操作:一切操作的地基

Linux设计哲学里最核心的一句话就是“一切皆文件”。理解这句话,你就能理解为什么很多命令看起来“不直观”。

比如你想查看当前在哪一层目录、目录下有什么文件:

pwd # 显示当前路径 ls -lah # 查看目录详情 cd /etc # 进入etc目录 cd ~ # 回到当前用户home目录

新手经常搞混的是绝对路径和相对路径。/home/username/test.txt这种从根目录开始写的就是绝对路径;./test.txt、../test.txt这种是从当前目录推导的就是相对路径。我的教学经验是:写命令时优先使用绝对路径,尤其在做脚本或定时任务时,依赖相对路径很容易出问题。

文件操作命令本身不难,但有几个细节值得注意:

cp -r /home/user/dev /home/user/backup_dev # 复制目录必须加 -r rm -rf /tmp/test # 递归强力删除 mv file.txt newname.txt # 重命名和移动同一命令

我看到无数新人在rm -rf上翻过车,所以单独强调:rm -rf后面跟的路径务必反复确认,特别是不要习惯性地写出rm -rf /*这种命令。生产环境事故百分之八十都是删错目录,这是个可以记一辈子的教训。

3.2 文本处理:过滤、查找、统计的组合技

很多作业会要求你“统计某文件行数”“在大量日志中过滤某个关键词”“查找指定特征的文件”。这类需求属于Linux命令的精髓部分:组合多个简单命令解决复杂问题。

最常用的文本三剑客是grep、awk、sed。入门阶段先把grep用熟练:

grep -r "error" /var/log/nginx/ # 递归查找目录下所有含error的行 grep -i "warning" system.log # 忽略大小写过滤 grep -c "failed" auth.log # 统计匹配次数

管道符|是这个系统里最伟大的设计之一,它把不同命令串联成流水线。比如考试类作业常考“统计日志中访问量前十的IP”:

cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -10

这条命令单看可能头大,但拆开理解就很清晰:cat读取日志,awk取出IP列,sort排序让相同IP相邻,uniq -c去重并计数,sort -nr按数字倒序排列,head -10取前十个。这种组合思路才是Linux作业真正想训练的能力。

还有个高频场景是“清空日志文件”。热搜词里就有“linux 清空日志文件”,很多人直接rm删除日志文件,结果发现进程仍然占用句柄、日志继续写入但是看不见了。正确做法是用truncate或重定向:

truncate -s 0 /var/log/app.log # 等价方式 cat /dev/null > /var/log/app.log

3.3 用户与权限:搞清楚sudo到底在干什么

“linux新建用户”“linux密码过期提醒通知”这两个热搜词说明用户管理类操作是作业高频点。我推荐的练习方式是:自己创建一个用户,设置密码,再用这个用户去操作文件,感受权限报错。

sudo useradd -m -s /bin/bash alice # 创建用户并建home目录、指定shell sudo passwd alice # 设置密码 su - alice # 切换到该用户

权限部分核心概念是读(r)、写(w)、执行(x)三组权限,分别对应文件所有者、同组用户、其他用户。很多人一开始搞不清数字权限的换算,其实很简单:r=4,w=2,x=1。比如chmod 755 script.sh就是所有者有rwx(4+2+1=7)、同组和其他人有rx(4+1=5)。

关于sudo这里多说一句:它让普通用户临时获得root权限,而不是“切换到root”。很多作业里老师要求“使用sudo执行命令”,本质是考察你是否理解权限提升必须遵循最小授权原则。自己练习时可以配置一个免密sudo的测试账户:

sudo vim /etc/sudoers # 在文件末尾添加 # alice ALL=(ALL) NOPASSWD: ALL

生产环境千万不要这样配置,但在虚拟机作业里可以快速体验sudo的工作逻辑。

3.4 系统信息与进程:从“卡住了”到“看监控”

第一次作业做到进程管理时,有些同学会觉得抽象,但如果配合“系统突然卡住”这个场景就很好理解了。当你怀疑系统异常时,第一步永远是查看进程状态:

ps -ef # 查看所有进程完整信息 top # 动态资源监控 htop # 更友好的交互界面 kill -9 <pid> # 强制结束进程

热搜词里有个“linux 修改进程名称”,这是个很有意思的点。比如你启动一个Java程序,默认进程名可能是java,你希望它显示成业务名以便管理:

exec -a myapp /usr/bin/java -jar app.jar &

exec -a可以让进程的名字在ps里显示成myapp。更进一步,在脚本里可以这样写:

#!/bin/bash exec -a nginx-mock /usr/sbin/nginx -c /etc/nginx/nginx.conf

进程名管理这个概念在很多运维场景中很实用,像systemd服务内部改进程名、Python里用setproctitle模块修改进程名字,本质都是同样的需求:让进程“可识别”。作业阶段能理解exec -a就已经足够了。

4. Vim和Shell脚本:第一次作业里的“软实力”

4.1 Vim为什么劝退又必须学

社交媒体上关于Vim的段子特别多,很多人第一次打开Vim就不知道怎么退出。热搜词里“linux下gvim怎么全选”也说明大家确实卡在编辑器上。

我的观点是:第一次作业阶段不用深挖Vim,但至少要做到“会用”。会用包含什么?能打开文件、能切换模式、能输入文本、能保存退出、能全选复制。

Vim的核心是模式切换:

模式进入方式作用
普通模式打开Vim时默认光标移动、删除、复制
插入模式按i编辑文本
可视模式按v选中文本进行复制、删除
命令行模式按:保存退出、查找替换

“全选”这个操作在网络搜索里很热门,Vim全选的标准操作是:

按 gg 跳到文件开头 按 ggVG 等一下,这里细说

实际上全选的正确姿势是:先按gg跳到第一行,再按Shift+v进入可视行模式,然后按G跳到末尾,屏幕上你会看到整个文件被选中,这时按y即可复制。用连写的组合记法是:ggVG,拆开就是“跳到开头、行可视模式、跳到结尾”。gvim作为Vim的图形版,操作和终端Vim完全一致。

退出Vim的问题,我提供一个最保险的路径:按Esc确保回到普通模式,输入:wq回车(保存并退出);如果只是退出不保存,输入:q!。

建议新手新建一个~/.vimrc文件,把行号显示和语法高亮打开,体验会好很多:

echo "set nu" >> ~/.vimrc echo "syntax on" >> ~/.vimrc

4.2 第一个Shell脚本:从长命令到自动化

如果作业里有Shell脚本,说明老师的意图是教你“把重复劳动自动化”。一个经典练习场景是写一个系统信息收集脚本,模拟日常巡检。

#!/bin/bash # 系统信息收集脚本 echo "==== 系统基本信息 ====" uname -a echo "==== 磁盘使用情况 ====" df -h echo "==== 内存使用情况 ====" free -h echo "==== CPU负载 ====" uptime echo "==== 当前登录用户 ====" who

写好后执行:

chmod +x sysinfo.sh ./sysinfo.sh

脚本执行后你会看到完整的系统概览。这时候作业就算做完,你已经可以把这些内容整理到报告里了。

再进一步,如果作业要求“对脚本有逻辑判断”,可以看一下这样的例子:

#!/bin/bash # 磁盘使用率预警脚本 THRESHOLD=80 DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//g') if [ "$DISK_USAGE" -gt "$THRESHOLD" ]; then echo "磁盘使用率过高:${DISK_USAGE}%" else echo "磁盘使用率正常:${DISK_USAGE}%" fi

这里用到了df取磁盘信息、awk提取百分比、sed去掉百分号、if做条件判断。这条脚本你写完之后,搭配一个定时任务(比如每天9点执行):

crontab -e # 加入 # 0 9 * * * /home/username/disk_check.sh >> /tmp/disk_check.log 2>&1

Cron的语法第一次接触确实很难记住,但入门只需理解五个星号的顺序:分、时、日、月、周。0 9 * * *就是每天9点整执行。写脚本阶段养成一个调试习惯,会省很多时间:

bash -x script.sh

-x参数会逐行打印脚本执行过程,哪里报错、哪个变量为空一眼就能看出来。这是我从踩坑里总结出来的经验:写完脚本先跑一遍,如果异常,不要猜,用bash -x看执行轨迹。

5. 进阶一点:进程、网络、存储与常见故障

5.1 进程间通信的入门理解

热搜词里有“linux进程间通信”,这个主题在大学课程里通常会单独开章节,但第一次作业阶段不会被要求深入实现。我建议你暂时只把场景和概念对应起来:

  • 管道:上一个命令的输出作为下一个命令的输入。比如cat file | grep abc。Shell管道是进程间通信最直观的形式。
  • 信号:kill -9 PID本质是发送SIGKILL信号,kill -TERM PID是发送SIGTERM终止信号。你平时“结束进程”就是在做信号通信。
  • 共享内存与消息队列:允许不同进程读同一块内存或通过队列传消息,编程作业阶段才会用到。

作业里如果遇到“请说明Linux进程间通信方式”,我建议你用管道和信号来举例说明,因为它们在日常操作中看得见摸得着。比如ps aux | grep nginx就是典型的管道通信,kill -HUP nginx_pid是让nginx重载配置文件的信号。

5.2 网络配置与共享上网

“linux 共享上网 办法”也是个高频热搜。最常见的校园网或家庭网络共享场景是这样的:一台Linux机器有外网连接(比如通过网线或者Wi-Fi),另一台设备想通过这台机器共享上网。

通用做法是开启IP转发并配置iptables的NAT规则:

# 1. 开启IP转发 sudo sysctl -w net.ipv4.ip_forward=1 # 永久生效:编辑 /etc/sysctl.conf 添加 net.ipv4.ip_forward = 1 # 2. 在对外网卡上配置NAT sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 3. 内网设备把网关指向这台Linux机器的内网IP,并配置DNS

这里的原理是把Linux机器当作路由器,通过NAT把内网流量伪装成外网地址发送出去。对第一次作业来说,你不需要理解十分底层的五元组匹配,只要记住“IP转发+NAT”是共享上网的标配逻辑就行。

顺便说一句,使用VirtualBox时,如果两台Linux虚拟机想互通,可以设置“内部网络”模式,然后在两台机器上手动配置IP。这样你能在不上外网的前提下练习网络配置,非常安全。

5.3 挂载NAS存储:一个非常落地的作业扩展

如果你作业做完还有“学有余力”的念头,强烈推荐实践一下“linux挂载nas存储”。这个技能在企业运维里几乎天天用,一台Linux服务器要扩容磁盘或者访问共享目录,最常用的两种协议是NFS和SMB/CIFS。

安装客户端并挂载:

# NFS示例 sudo apt install nfs-common sudo mkdir -p /mnt/nasdata sudo mount -t nfs 192.168.1.100:/volume1/share /mnt/nasdata # SMB/CIFS示例 sudo apt install cifs-utils sudo mount -t cifs //192.168.1.100/share /mnt/nasdata -o username=nasuser,vers=3.0

挂载之后如果希望重启仍然有效,需要写入/etc/fstab:

192.168.1.100:/volume1/share /mnt/nasdata nfs defaults,_netdev 0 0

这个知识点可能在作业里不会直接出现,但很能体现你知识面的广度。如果报告里能写一笔“我们还可以通过NFS挂载远程存储”,老师的印象分一般不会低。

5.4 系统备份、日志清理和密码策略

系统管理这块有几个实操点:备份、日志、密码策略,每一项都对应真实运维问题。

备份最简单可靠的做法是用tar打包关键目录:

sudo tar -czvf /backup/home_backup_$(date +%F).tar.gz /home

$(date +%F)会自动插入当天日期,配合定时任务可以形成每日备份节奏。

日志清理前面已经提过truncate方案,这里再给一个日志轮转的初级做法。在生产环境中日志不能只清空,还要按日期归档。用系统自带的logrotate完成:

# 新建 /etc/logrotate.d/myapp /var/log/myapp/*.log { weekly rotate 4 compress delaycompress missingok notifempty create 0640 root root }

这样每周轮转一次,保留4份历史日志,旧日志自动压缩。这套逻辑在真实服务器和作业报告里都很值钱。

密码过期策略属于安全和系统管理交叉的知识点。默认情况下密码永不过期,但很多安全标准会要求90天改密。查看现有策略:

chage -l alice

设置90天改密及提前提醒:

sudo chage -M 90 -W 7 alice

-M 90指密码最长有效90天,-W 7指过期前7天提醒。这个知识点也正好对应热搜词里的“linux密码过期提醒通知”。

6. 作业报告:从“做过”到“讲清楚”

6.1 一份能拿高分的报告结构

很多人做完实验觉得万事大吉,结果报告被批“像流水账”。核心原因是只写了“做什么”,没写“为什么做”和“做完学到了什么”。

我建议你按下面结构组织报告:

  1. 实验目的(不要只写“熟悉Linux命令”,要写具体能力,比如“通过用户管理操作理解Linux权限模型”)。
  2. 实验环境(CPU、内存、虚拟机软件版本、Linux发行版和内核版本,可以用uname -a输出)。
  3. 实验内容与步骤(按模块组织,配关键命令和运行结果截图)。
  4. 遇到的问题与解决办法(这一项是拉开差距的地方)。
  5. 实验总结(写自己的理解程度,以及还想深入的方向)。

6.2 新手最容易丢分的三个地方

第一,没有截图或截图没有关键信息。截图的目的是让老师确认“你确实跑通了”。每个重要命令执行完,pwd、ls -l的输出、脚本运行结果都要截。截图里建议包含终端窗口和时间信息,增加可信度。

第二,没有记录报错过程和排查思路。初次运行grep -r时因为忘记加权限或用错路径而报错,这是再正常不过的事情。但你处理报错的过程恰恰是老师最想看的内容。比如你执行rm提示权限不足,然后你通过sudo解决,把每一步记录下来,这份作业的含金量会明显提升。

第三,不总结原理,只贴命令。命令会随时间遗忘,原理不会。你写grep过滤日志时,如果能补一句“管道符让前一条命令的标准输出成为后一条命令的标准输入”,说明你就不是机械复制,而是真的理解了数据流。

如果你愿意再加一个小亮点,可以在报告末尾写一段“通过这次作业,我意识到Linux的学习曲线虽然陡峭,但只要掌握了文件、用户、进程、权限这几个核心概念,后续的命令都是在这几个骨架上做扩展”。这一句比你写几百个“熟悉了xx命令”更有说服力。

我个人在实际带项目的经验里,经常把第一次Linux作业看成一面镜子:你对待它的方式,很大程度上能反映出你未来处理复杂系统问题的方式。有人装系统卡在换源就放弃,有人因为看不懂报错就跳过,但那些愿意把bash -x跑一遍、把报错记录下来的人,通常三个月后已经能自己部署一套完整服务了。这份作业没那么高深,它只是给你一个机会,让你在动手操作中理解操作系统的运行逻辑。做完上面这些任务之后,别急着删虚拟机,多留几天,想敲命令的时候进去敲一敲,你会发现自己对这台“小机器”越来越有掌控感,这比作业得了多少分都更有意义。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询