很多新手问我同一个问题:Linux到底怎么学?买本书从头翻到尾,或者照着视频一行行敲命令,第二天就忘了大半。我自己的体验是,Linux入门不靠背,靠用。你得有一个随时能折腾的环境,再把那些天天会碰到的命令和概念拆开揉碎,搞清楚它们背后的逻辑,然后按真实场景一遍遍操作,这才叫真正的“入门”。
这篇内容就是干这件事的。我会从环境搭建、核心命令、文件与目录、用户权限、进程服务这几个最关键的模块入手,把新手必须掌握的Linux基础操作完整过一遍,中间穿插我实操时踩过的坑。内容节奏按照“知道为什么 → 照着做 → 排错反馈”来推进,零基础或刚入行一两年的读者都能直接照着练。学到的东西马上能用,这才是“入门必备”这四个字真正的分量。
1. 入门Linux,到底在入什么门
1.1 别被发行版迷了眼:学的是共性的东西
打开搜索引擎搜Linux,出来的信息能把人淹死:CentOS、Ubuntu、Debian、Rocky Linux、Kali、国产的麒麟、统信UOS,还有各种所谓“生态最好”的发行版推荐。新手最容易在这里犹豫半天,纠结到底选哪个。
我的建议是,入门阶段任何一个主流的发行版都行,差别没有你想象的那么大。Linux的本质是内核,而我们日常打交道的是内核之上的用户空间工具。ls、cd、grep、systemctl这些命令,在几乎所有发行版里都是一样的。发行版之间的差异更多体现在包管理器上:Debian系用apt,Red Hat系用yum或dnf,Arch系用pacman,仅此而已。你只要吃透一套,换到另一个发行版无非是“把apt换成yum”这种级别的适应成本。
所以别花一星期去研究哪个系统“最好”。挑一个资料最多、社区最活跃的(我通常推荐Ubuntu LTS或者Rocky Linux),装上,开始操作。学到后面你自然会明白发行版取舍的动机,那时再切换也不迟。
1.2 新手入门必须先想清楚的三件事
第一,Linux是“以命令行为中心”的系统,图形界面只是一个外壳。很多新手装完系统看到桌面就松了口气,结果过了两周发现自己除了会点图标什么都没学会。入门你必须强迫自己在终端里完成操作,刚开始慢、老打错,但这是必经之路。你是在跟操作系统本身对话,不是跟某个软件的按钮对话。
第二,要理解Linux“一切皆文件”的思想。硬件设备是文件(/dev/sda),磁盘分区是文件,进程信息是文件(/proc),连网络通信也可以抽象成文件描述符。这个概念建立起来之后,很多以前觉得玄乎的事情都会变得透明:为什么改配置就是编辑一个文本文件?因为配置也是文件。为什么误删了某个dev节点设备就挂了?因为操作文件就是在操作硬件。这一思想贯穿整个Linux体系,是入门必须迈过的一道坎。
第三,入门不等于“会敲20个命令”,而是建立“排查意识”。真实世界里没有哪个系统会永远不报错。权限不够、依赖缺失、端口被占用、服务起不来——这些才是家常便饭。入门阶段你就得有意识地练习看错误提示、查日志、定位问题,别让报错停留在“完蛋了”的情绪层面。带着这个目标去学,你收获的东西才真正值钱。
2. 环境准备:给自己搭一个随便折腾的实验场
2.1 虚拟机、云服务器还是双系统?
环境选择直接决定你能练到多深,我按场景说清楚区别。
虚拟机(VirtualBox或VMware)是绝大多数新手最合适的一站式方案。它隔离性好,宿主机不会遭殃,随便你怎么折腾系统崩了,删掉重建一个虚拟机就行。安装也简单,下载ISO镜像、新建虚拟机、分配个2核4G内存,十分钟跑起来。唯一的缺点是性能有轻微损耗,但对入门阶段完全无感。
云服务器适合那些希望“7x24小时在线”的人,比如你要跑个小服务、定时脚本,或者单纯想让手机也能连服务器操作。缺点是要花一点钱(各大厂都有低价轻量服务器,一年也就几十块),而且没有图形界面,对纯零基础的人来说心理门槛略高。但一旦你习惯了登录远程服务器干活,你其实已经越过了一个很重要的分水岭。
双系统是最不推荐的入门方式,除非你确定自己接下来半年会完全切到Linux工作。折腾引导、分区、驱动,每一项对新手都是劝退级打击。我见过太多人为了“纯净体验”装双系统,结果grub引导崩了,连Windows都进不去,最后含泪重装。别在入门阶段给自己加戏。
2.2 虚拟机安装Linux的实操要点
以VirtualBox + Ubuntu Server为例,几个关键点说一下。
去官网下载Ubuntu Server LTS镜像(LTS是长期支持版,稳定,适合学)。VirtualBox新建虚拟机时,类型选Linux,版本选Ubuntu 64-bit,内存分配2048MB以上,虚拟硬盘建议25GB起步。
启动虚拟机后选镜像文件引导安装,语言默认英文即可,等装完再换中文环境,避免出现各种路径编码问题。安装过程中会提示设置用户名和密码,注意默认不给root密码,你的用户会通过sudo获取管理员权限,这是安全设计,先记住这个模式。
安装完成重启后,你会看到一个纯命令行界面(TTY)。走到这一步你已经成功了一半。用安装时创建的用户登录,先跑三条命令感受一下:
pwd # 查看当前在哪个目录 ls -la # 列出当前目录所有文件(含隐藏文件) sudo apt update # 更新软件源索引(Debian系)顺便提一句“虚拟机安装linux蓝屏”这个搜索热词。多数蓝屏原因是VirtualBox没开启虚拟化支持。物理机BIOS里把Intel VT-x或AMD-V打开,虚拟机设置里勾选“启用VT-x/AMD-V嵌套分页”,问题基本就解决了。
2.3 远程登录管理:从“抱着一台机器”到“管理一台机器”
真正干活的时候没有人整天坐在服务器屏幕前,都是远程登录。这里必须掌握SSH。Linux系统之间远程管理默认就用SSH协议,Windows这边现在也自带了OpenSSH客户端,不需要额外装东西。
在你的Linux机器上先确认ssh服务是否开启:
sudo systemctl status ssh如果没装就装一下:
sudo apt install openssh-server # Debian/Ubuntu系 sudo systemctl enable --now ssh # 设置开机自启并立即启动查看机器的IP:
ip addr # 或 ip a,找类似 192.168.x.x 的地址然后在你自己的电脑终端里登录:
ssh 用户名@192.168.x.x第一次连接会提示确认主机指纹,输入yes,接着输入密码,就进去了。从这一刻起,你已经不是“在用一台Linux机器”,而是“在管一台Linux机器”,定位完全不同。
3. 常用命令体系:最该先吃透的这一批
3.1 导航与文件管理:建立位置感
Linux的命令再庞杂,最核心的还是对文件和目录的操作。你只要熟练了下面这一组,日常80%的环境操作都能覆盖。
pwd打印当前工作目录,时刻告诉你“我在哪”。ls列出文件,常用变体是ls -l(长格式显示权限、属主、大小、时间)、ls -a(显示隐藏文件)。cd切换目录,cd ..返回上级,cd ~回到家目录。mkdir创建目录,加-p可以一次创建多级嵌套目录。touch创建空文件或更新时间戳。cp、mv、rm分别是复制、移动(或重命名)、删除,后面跟源和目的。
一个新手特别容易犯的错是rm -rf乱用。-r表示递归删除目录,-f表示强制不提示。两个合在一起就是“静默删光”,一旦路径写错,连后悔的机会都没有。我自己的习惯是:能不碰-f就不碰,删目录之前先用ls确认一下,再尽量用绝对路径。
文件内容查看也是高频操作。cat直接输出整个文件内容,适合小文件。less分页查看,适合日志这种长内容,按q退出。tail -f实时跟踪文件追加的内容,排查日志时它是神器。
3.2 查找与过滤:从垃圾信息里捞针
系统里文件那么多,靠眼睛找不现实。find按名字、类型、大小、时间找文件,用法示例:
find /var/log -name "*.log" -type f grep "error" /var/log/sysloggrep从文本里过滤包含关键词的行。两个工具一组合,排查问题的能力立刻上一个台阶。比如某个服务日志疯狂报错,你可以:
grep -i "error" /var/log/app.log | tail -n 50意思是:从app.log里过滤出包含error的行(忽略大小写),再取最后50行。这一条命令写出来,你已经不是纯小白了。
3.3 权限与账户操作:知道谁是谁,谁能干什么
Linux的文件权限用drwxr-xr-x这种形式表示。第一个字符标识类型:d是目录,-是普通文件,l是软链接。后面9个字符每3个一组,分别对应:属主(u)、属组(g)、其他人(o),每组里rwx分别表示读、写、执行权限。数字表示法里r=4, w=2, x=1,加在一起就得到755(属主完全控制,其他人只读可执行)、644(属主可写,其他人只读)这种常见权限。
刚入门的阶段不需要把所有权限细节背熟,但要能看懂,会改。最常用的两个命令:
chmod 755 脚本.sh # 修改权限 chown 用户名:组名 文件 # 修改属主属组用户管理方面,创建新用户是高频操作:
sudo useradd -m -s /bin/bash 用户名 # -m自动建家目录,-s指定shell sudo passwd 用户名 # 设置或修改密码把用户加到sudo组,让他有管理员权限:
sudo usermod -aG sudo 用户名 # Ubuntu/Debian系这里要特意说一下“为什么执行sudo命令还要输密码”。sudo的机制是:通过配置允许的用户,在终端里以root身份执行命令,输入的是你自己的密码而非root密码。这是一种审计和安全折中,不至于让你一直以root身份做事,又给了你合理授权的能力。理解之后,你就不容易在“权限就是不给力”这种情绪里打转了。
3.4 进程与服务:管住后台的运行者
进程是Linux里“正在运行的东西”。你敲下的每个命令、系统启动的每个服务,都对应一个进程。常用工具:ps -ef查看所有进程列表;top实时看CPU、内存占用;kill PID结束进程,结束不了就kill -9(最后手段)。新一点的htop更直观,但需要自己装。
服务级别的东西现在都用systemd管理,核心命令就是systemctl:
sudo systemctl start 服务名 sudo systemctl stop 服务名 sudo systemctl enable 服务名 # 设置开机自启 sudo systemctl status 服务名 # 查看状态(含最近日志)新手的高频困惑是“服务明明配好了怎么起不来”。这时候第一反应应该是systemctl status看输出,再用journalctl -u 服务名 -n 50拉最近日志。日志会告诉你真正的原因,比如端口被占用、配置文件语法错误、依赖没装。养成看日志的习惯,能解决你90%的系统级问题。
4. 从零实操:一整套能直接照做的入门流程
4.1 实操任务一:初始化一个项目目录并完成权限规划
先把前面提到的命令串起来。假设我们要在服务器上创建一个Web项目的标准目录结构,并给不同角色分配合适权限。直接在终端里执行:
sudo mkdir -p /data/www/myapp/{logs,backup,code}用-p一次性创建三层目录。/data/www/myapp是项目根,里面分logs(日志)、backup(备份)、code(代码)三个子目录。
看看效果:
ls -lR /data/www/myapp注意,现在这些都是root创建的,普通用户没有写权限。假如你的部署用户叫deploy,把项目根的所有权交给它:
sudo chown -R deploy:deploy /data/www/myapp如果你希望日志目录只有deploy能写,其他用户不许碰,权限收紧:
sudo chmod 750 /data/www/myapp/logs这一轮操作做完,你就体验了一个真实部署场景里最常见的动作:建目录、看结构、改属主、调权限。这几步在互联网公司的日常服务器操作里几乎天天出现。
4.2 实操任务二:安装Nginx并启动服务(含排查)
Nginx是Web服务领域最常用的软件之一,用它做练习再合适不过。在Debian系系统上:
sudo apt install nginx sudo systemctl start nginx sudo systemctl enable nginx安装完成后验证服务状态:
sudo systemctl status nginx如果服务是active(running),说明已经起来了。可是“起来”不代表真的可访问,还要验证端口是否监听着:
ss -tlnp | grep 80这条命令会显示监听在80端口的进程信息。如果输出为空,大概率服务没监听起来,要看日志排查。
这时候你会遇到一个典型的坑:服务起来了,但浏览器打不开页面。按顺序排查:本机curl http://localhost看是否有HTML返回(有,说明Nginx本身正常);再ip addr确认IP;最后检查虚拟机网络模式和防火墙。某些云服务器还要在安全组里放行80端口。这整套排查动作才是真正的技术在“用”,它训练的是一种方法论。
4.3 实操任务三:写一个简单的备份脚本并定时执行
入门阶段用脚本处理重复劳动,会打开新世界。写一个每天凌晨备份项目目录的脚本,我自己早期就是用这种小脚本入的门。
用vim或nano创建一个脚本文件:
nano ~/backup.sh内容如下:
#!/bin/bash # 每日备份项目代码到backup目录 STAMP=$(date +%Y%m%d%H%M) tar -czf /data/www/myapp/backup/code-$STAMP.tar.gz /data/www/myapp/code find /data/www/myapp/backup -name "*.tar.gz" -mtime +7 -delete这个脚本干了两件事:把code目录压缩成带时间戳的tar包放到backup目录;删除7天之前的旧备份,避免磁盘被塞满。保存后,赋予执行权限:
chmod +x ~/backup.sh手动跑一次验证脚本没有报错:
./backup.sh确认backup目录下生成了tar包之后,再用cron加上定时。执行:
crontab -e在打开的编辑器里加一行:
0 2 * * * /home/你的用户名/backup.sh代表每天凌晨2点执行一次。保存退出后,用crontab -l查看确认。到这里,你已经独立完成了一个“自动化运维”的小闭环,这种成就感比敲一百遍命令强得多。
4.4 关于软件部署:装Docker、MySQL、Python的思路提示
热词里有一堆“linux安装docker”、“linux安装mysql”、“linux系统安装python”的高频搜索,可见这是大家真正想干的事。这里我不逐个展开(每个展开都是一篇文章),但把通用思路讲透。
在Linux上装软件,最优先用官方源。apt install docker.io可能不是最新版,但对练手足够;真要装最新版,去Docker官方文档把步骤复制下来执行,别去搜转载的旧教程。遇到“换源”这个操作要理解:软件源是系统下软件的仓库,默认源在海外可能很慢,换成国内镜像源能提速一个量级。但要注意,更换前先备份/etc/apt/sources.list。
MySQL这类有服务的软件,装完要立刻做两件事:查看服务状态、设置开机自启。然后用客户端连上去测试。Python的安装核心是注意版本冲突,不要轻易动系统自带的python3,用虚拟环境(venv或conda)隔离项目依赖才是正路。只要沿着“装好→起服务→看状态→测连通”这个流程走,多数软件安装都难不倒你。
5. 常见问题与避坑指南
5.1 新手最容易踩的五个坑
第一个坑是没事就登录root。Root拥有系统里所有权限,一句错误命令就可能让系统起不来。入门阶段没有特殊要求,永远用普通用户,需要提权时单独用sudo。出了事最多是你自己权限不足,而不是整个系统遭殃。
第二个坑是rm -rf敲得太快。尤其注意变量为空的情况,比如你写了rm -rf /$DIR/,结果$DIR没赋值,命令就变成了rm -rf /,系统里所有文件都会瞬间消失。所以我在命令里几乎不用变量拼接路径,写完看一眼再回车。
第三个坑是权限问题排查时乱添加权限。文件访问不了,很多人第一反应是chmod 777。这等于把门锁全拆了。正确做法是先确认当前用户是谁(whoami),再确认文件属主属组(ls -l),缺什么补什么。安全习惯要一开始就养成。
第四个坑是不看发行版差异乱复粘贴教程。你搜到了一篇CentOS教程,拿给Ubuntu用,大概率会卡在yum命令不存在这一步。先确认自己的系统(cat /etc/os-release),再找对应教程,能省很多时间。
第五个坑是虚拟机网络模式导致连不上。VirtualBox默认NAT模式下,宿主机直接访问虚拟机IP经常不通。更简单的方式是把网络设置改为“桥接模式”,让虚拟机跟宿主机处在同一个局域网。如果还不行,检查虚拟机防火墙:sudo systemctl stop firewalld(这只是临时关,别学成常规操作)。
5.2 命令记不住怎么办?建立自己的查漏机制
不要因为记不住命令焦虑,Linux命令有上千个,没有任何人全背得下来。真正重要的是建立查询和积累的机制。
man 命令名是内置手册,但内容太厚重。日常顶好用的是命令自带的--help:
tar --help | less临时忘记参数时,这条比搜索引擎快得多。
另一个技巧是翻历史记录。按键盘上的↑可以循环往日命令,history看整个列表,!编号直接重跑某条历史命令。你会发现“记不住但能搜回”才是真实工作方式。
建议你建一个自己的命令笔记,按场景分类记录:“查端口用这个”、“看日志用那个”、“压缩备份这样写”。每遇到一次操作就补一点,三个月后这就是你私人的速查手册,比任何公开资料都贴合你的使用习惯。
5.3 常用命令速查表
我把入门阶段最常用的命令整理成了表格,建议把这份表打印出来或存成书签,练到不用看表为止。
| 分类 | 命令 | 作用 |
|---|---|---|
| 导航 | pwd / cd / ls | 查看当前位置、切换目录、列出文件 |
| 文件 | mkdir / touch / cp / mv / rm | 创建目录、创建空文件、复制、移动、删除 |
| 查看 | cat / less / tail -f | 输出整个文件、分页查看、跟踪文件尾部 |
| 查找 | find / grep | 按条件找文件、过滤文本内容 |
| 权限 | chmod / chown / sudo | 改权限、改属主、提权执行 |
| 用户 | useradd / passwd / usermod | 建用户、设密码、改用户属性 |
| 进程 | ps -ef / top / kill | 看进程列表、实时监控、结束进程 |
| 服务 | systemctl start / status / enable | 启动服务、查状态、设开机自启 |
| 网络 | ip addr / ss -tlnp / ping | 看IP、看端口、测连通性 |
| 压缩 | tar -czf / tar -xzf | 打包压缩、解压 |
| 软件 | apt install / apt update | 装软件、更新索引 |
照着这张表把每个命令都实打实敲一遍,你就完成了Linux基础(1)到基础(2)的关键跨越。别求快,每个命令都搞清楚它在干什么、参数怎么变化、错误提示是什么含义,这才是入门的真正意义。
我自己的体会是,Linux基础阶段最大的障碍不是难度,而是心态。你会反复遇到“为什么就是不行”的挫败时刻,但每一次排错都在悄悄提升你的系统思维。坚持在一个环境里折腾一两个月,回头看你一定会惊讶自己已经能独立搞定这么多事了。把这个阶段撑过去,后面再学网络、脚本、容器这些东西,都会顺畅得多。