10分钟Linux入门:从命令行基础到跑通你的第一个服务

发布时间:2026/9/1 5:13:12
10分钟Linux入门:从命令行基础到跑通你的第一个服务 常有朋友问我“我想试一试 Linux但听说命令行很吓人到底要学多久”我一般会回答一句听起来有点夸张的话“先给我10分钟。”这不是玩笑——如果你想从 Windows 切换到 Linux第一次最需要的不是三百条命令笔记也不是内核调优技巧而是先拥有“在 Linux 里正常走一圈”的体感能打开终端、能看目录、能装软件、能新建用户、能跑起来一个小程序。把这套流程走通后面的深入学习自然会顺起来。这篇文章就按这个思路来写。它不会让你看完就变成运维老手也不会去碰源码级的内容而是把“改用 Linux”这条路上最现实的问题拆开环境怎么准备哪些命令必须马上会装软件和跑脚本的完整流程是什么遇到常见报错怎么处理。全文以实操为主命令和代码都能直接复制使用适合刚接触 Linux 的开发者、学生以及打算在日常开发机中切换到 Linux 工作流的人。1. Linux 到底是什么为什么值得“改用”1.1 不只是“一个操作系统”很多新手对 Linux 的第一印象是“黑乎乎的窗口只能打字”。这个印象不算错但会让人忽略一个关键事实Linux 是一套内核而我们日常所说的“Linux 系统”实际上是 Linux 内核加上各种开源软件组合出来的发行版。不同发行版就像“同一台发动机装进不同的车身”所以有适合服务器的 CentOS、有适合桌面开发的 Ubuntu、有适合嵌入式设备的精简系统、也有适合折腾的 Arch Linux。对普通新手来说不必一开始就纠结选哪家。你只需要知道无论是 Ubuntu、Debian、CentOS、Rocky Linux 还是 openEuler它们的核心命令是相通的比如ls、cd、mkdir、cp、mv、rm这些命令在所有发行版里几乎一致。学会一套到了别的发行版也能很快上手。1.2 为什么很多开发者最终会选择 Linux这个问题的答案很实在日常开发用到的工具链很多是“优先为 Linux 准备的”。比如后端服务、容器、运维脚本、数据处理任务生产环境绝大多数跑在 Linux 上你在 Windows 上写的 Python、Java、Go 代码最后部署到云服务器那台服务器也几乎都是 Linux。本地用 Linux意味着开发环境与生产环境更接近很多“在我电脑上能跑到了服务器就不行”的问题会大幅减少。另外Linux 的包管理器让安装软件变得非常直接。在 Ubuntu 上装 Nginx 只需一条apt install nginx装 Python 相关的系统依赖也只需几条命令不用像 Windows 那样反复点安装向导。再加上命令行天然适合批量操作和脚本自动化写一个小脚本就能完成日志归档、批量改名、定时备份等任务。1.3 “10分钟”能做什么不能做什么把话说在前面10 分钟不可能让你记住所有命令也不应该让你产生“我已经完全掌握 Linux”的错觉。10 分钟能做的是建立一条最小可用路径知道从哪里敲命令知道文件放在哪里、怎么切换目录知道怎么装软件知道怎么新建一个用户并给它权限知道怎么把一个小程序跑起来。这就像学开车10 分钟只能让你把车从车位挪出来但你已经克服了“我不敢碰方向盘”的心理障碍。之后再去学倒库、上高速就不会那么慌。下面我们直接开始。2. 环境准备与版本说明2.1 三条可选路径在阅读后续内容之前你需要先有一台能敲 Linux 命令的环境。根据你的电脑情况和学习目标可以选以下三种方式之一。如果你是 Windows 用户最简单的方案是启用 WSLWindows Subsystem for Linux。WSL 不是虚拟机它更像一个 Windows 内置的 Linux 兼容层可以直接在 Windows 终端里运行 Linux 命令、安装软件包、跑脚本。它的优点是启动快、占用小、与 Windows 文件系统天然互通非常适合新手入门和日常开发。缺点是不太适合做需要完整内核模块的底层实验。如果你希望体验“完整的一台 Linux 电脑”推荐用虚拟机软件安装一个发行版。虚拟机会在你现有的操作系统之上模拟出一整套硬件你在虚拟机里怎么折腾都不会影响宿主机。这种方案适合反复测试、学习系统管理、练习服务部署。缺点是性能比原生系统略低且需要为虚拟机分配内存和磁盘空间。如果你是开发者且手头有闲置电脑或者已经决定长期使用 Linux直接用 U 盘制作启动盘安装双系统最彻底。双系统能把硬件性能全部释放出来适合日常开发和长期使用但需要注意安装前备份数据并且处理好引导项。第一次尝试的同学我不建议一上来直接格式化整块硬盘建议先用 WSL 或虚拟机熟悉两周再决定。2.2 版本选择与验证本文不绑定某个具体版本。命令示例以 Debian/Ubuntu 系的apt为主同时会标注 CentOS/RHEL 系对应的yum或dnf写法。你可以使用 Ubuntu 22.04、24.04或 Debian 12、CentOS Stream 9 等常见发行版命令基本一致。安装完成后打开终端输入下面的命令验证系统环境# 查看当前内核版本 uname -r # 查看发行版信息 cat /etc/os-release # 查看当前用户名 whoami # 查看当前路径 pwd如果你输入whoami后看到的用户名不是 root说明你已经正常进入普通用户环境这是很安全的状态。命令行里常见的$提示符表示当前是普通用户#表示当前是 root 用户。建议始终使用普通用户操作需要管理员权限时再通过sudo临时提权。3. 核心命令拆解10分钟内建立最小命令集这一节是全文的重点。我不会把几百条命令铺开而是按日常操作顺序拆出几组“只要你想在 Linux 里干活就一定会碰到”的命令。每组命令先说它解决什么问题再给最小示例最后提醒常见误区。3.1 目录与文件pwd、ls、cd刚进入 Linux首先要弄清楚“我在哪”“这里有什么”。# 显示当前所在目录 pwd # 列出当前目录下的文件和目录 ls # 以详细列表方式查看包含权限、大小、修改时间 ls -l # 显示隐藏文件 ls -a # 进入指定目录 cd /home/user/project # 返回上一级目录 cd .. # 返回当前用户的主目录 cd ~很多新手会把 Windows 的盘符思维带进来其实 Linux 的目录是一个从根目录/开始的树状结构。无论你的硬盘分了几个区最终都会被挂载到某个目录下。/home/用户名是每个用户的主目录相当于 Windows 的C:\Users\用户名。把个人文件放在自己的主目录下权限管理会更清晰。这里需要注意cd命令不跟参数时会回到当前用户主目录。如果你发现自己敲了命令后回到了“奇怪”的目录很可能是cd后面的路径写错了或者目标目录不存在。建议用pwd随时确认当前位置。3.2 创建目录与文件mkdir、touch、cp、mv、rm接下来要解决的是“怎么新增和整理文件”。下面是一组最常用的操作# 创建单层目录 mkdir app # 一次创建多层目录 mkdir -p app/logs/2025 # 创建一个空文件 touch app/README.md # 复制文件 cp app/README.md app/README_BACKUP.md # 复制整个目录需要加 -r cp -r app app_backup # 重命名或移动文件 mv app/README.md app/README.md.bak # 删除文件 rm app/README.md.bak # 删除空目录 rmdir app/logs/2025 # 递归删除目录及其内容谨慎使用 rm -rf app每个命令的解释并不复杂但有两个容易踩坑的点需要强调。第一cp复制目录时必须加-r否则会报错。-r表示递归复制也就是把目录里的所有子目录和文件都复制过去。第二rm -rf是 Linux 里“杀伤力最大”的命令之一。-r表示递归-f表示强制一旦执行目录和文件不会进入回收站而是直接消失。新手刚开始练习时尽量先用ls确认当前目录下有什么再执行删除命令。如果正在做一个重要项目删除前先备份到其他目录或远程存储。3.3 查看文件内容cat、less、head、tail当目录里有了文件下一步自然是看内容。# 一次性显示全部内容 cat app/README.md # 分页查看大文件按 q 退出 less app/README.md # 只查看前 10 行 head -10 app/README.md # 只查看最后 20 行 tail -20 app/README.md # 持续跟踪文件新增内容常用于查看日志 tail -f app/logs/app.logcat适合查看小文件less适合浏览较大文件tail -f则是运维场景中非常常用的命令比如实时观察服务日志。这里顺便提一句很多新手刚接触tail -f后不知道如何退出其实按Ctrl C就可以退出跟踪状态。3.4 搜索与过滤grep、find当文件多起来之后你需要快速定位目标。# 在文件中搜索关键词 grep error app/logs/app.log # 在文件中搜索关键词并显示行号 grep -n error app/logs/app.log # 按文件名查找文件 find /home/user -name README.md # 按文件名模糊查找 find /home/user -name *.log # 查找空目录 find /home/user -type d -emptygrep和find是 Linux 面试和日常工作中出现频率很高的命令。grep重点在于“在已有内容里过滤”find重点在于“在目录树中定位符合条件的文件”。两者配合使用可以解决绝大多数查找需求。有些新手会把它们搞混其实只要记住grep 管的是内容find 管的是文件名和文件属性。3.5 用户与权限useradd、passwd、chmod、sudo在你的个人电脑上也许只有一个用户但一旦你开始管理服务器用户和权限就是必须跨过的一道门槛。# 新建用户-m 创建主目录-s 指定登录 shell sudo useradd -m -s /bin/bash demo # 设置或修改密码 sudo passwd demo # 查看用户信息 id demo # 切换到 demo 用户 su - demo # 修改文件权限属主可读写执行 chmod 700 script.sh # 修改文件属主 sudo chown demo:demo script.sh权限是 Linux 安全模型的核心。一个文件或目录会记录“属主”“属组”“其他人”三类对象的读、写、执行权限分别用r、w、x表示。chmod 700的意思是只能让属主拥有全部权限其他人都无法访问适合放私密脚本或密钥文件。这里要特别提醒sudo可以让你以管理员身份执行命令但它不是万能的通行证。执行sudo rm -rf时系统不会像 Windows 那样再三弹窗确认。每一次提权操作前先想清楚“这条命令会不会影响系统里别的用户或服务”。在测试环境多尝试没问题在生产环境请遵守最小权限原则。3.6 软件安装apt与yum/dnf使用 Linux 时安装软件不再需要去官网下载 exe而是通过包管理器从软件仓库安装。# Debian/Ubuntu 系 sudo apt update sudo apt install -y nginx # CentOS/RHEL 系 sudo yum install -y nginx # 或使用 dnf sudo dnf install -y nginxupdate的作用是更新本地软件包索引而不是升级软件本身。很多新手只执行apt install却漏掉了update导致提示找不到软件包。安装软件时如果网络不好可以配置国内镜像源把官方源替换为速度更快的镜像站注意修改前先备份原始源文件例如sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak3.7 系统信息与端口df、free、ps、ss关心磁盘空间、内存和正在运行的进程是使用 Linux 的日常。# 查看磁盘占用 df -h # 查看内存占用 free -h # 查看当前系统中的进程 ps -ef # 查看监听端口 ss -tlnp # 查看指定端口占用 ss -tlnp | grep 8080df -h中-h表示以人类可读的单位GB/MB显示。ss -tlnp是一个比较新的查看端口占用命令旧教程里常见的netstat -tlnp在新系统中可能未安装需要先安装net-tools。如果你发现某个端口被占用但不知道被谁占用优先用ss -tlnp | grep 端口号查看对应进程的 PID再用ps -ef | grep PID查看进程详情。3.8 远程操作ssh、scp如果你使用的是云服务器或者想把文件从 Windows 传到虚拟机远程连接就必不可少。# SSH 登录远程主机 ssh user192.168.1.100 # 复制本地文件到远程主机 scp /home/user/app.tar.gz user192.168.1.100:/home/user/ # 从远程主机复制文件到本地 scp user192.168.1.100:/home/user/report.pdf ./scp命令把“远程复制”这个操作简化得非常直接。它的格式和cp类似只是源和目的中至少有一个需要写成用户名主机:路径的形式。Windows 用户如果在 Windows 与 Linux 之间传文件除了 U 盘最推荐的方式就是scp或 SFTP 工具。4. 完整实战10分钟内从零跑起来一个小服务这一节我们把这些零散命令串起来完成一个“新建用户—创建项目—安装软件—运行脚本—访问服务”的完整流程。你可以跟着做全程只需一个终端。4.1 创建项目目录结构先在工作目录中创建一个演示项目。这里使用/opt/myapp作为项目目录因为/opt是 Linux 中常用于存放第三方软件的目录。sudo mkdir -p /opt/myapp/logs sudo chown -R $USER:$USER /opt/myapp第一条命令创建了项目目录和日志子目录。第二条命令把目录属主改为当前用户否则后续在目录里创建文件时可能会遇到权限不足。这里$USER是当前用户名在 shell 中会被自动替换。然后进入目录确认当前路径cd /opt/myapp pwd预期输出为/opt/myapp。接下来创建两个测试文件touch app.log echo hello linux README.mdecho hello linux README.md会把字符串写入README.md文件其中是重定向符号表示把输出写到文件而不是屏幕。4.2 新建一个演示用户在真实项目中不要所有操作都使用 root 用户。这里我们创建一个名为demo的用户并给它设置密码。sudo useradd -m -s /bin/bash demo sudo passwd demo运行passwd命令后终端会交互式地提示输入两次密码。测试环境可以设置简单密码但生产环境一定要使用强密码或者干脆禁用密码登录、改用 SSH 密钥登录。验证用户是否创建成功id demo预期会输出类似uid1001(demo) gid1001(demo) groups1001(demo)的信息。如果你想在项目里以 demo 用户运行某个服务可以用su - demo切换到该用户再进入项目目录。4.3 安装 Nginx 并启动接下来安装 Nginx。以 Debian/Ubuntu 系为例sudo apt update sudo apt install -y nginx如果你的系统是 CentOS/RHEL请把apt换成yum或dnf。安装完成后启动服务并设置开机自启sudo systemctl enable --now nginx查看服务状态systemctl status nginx如果看到active (running)说明 Nginx 已经正常启动。此时在你自己的 Linux 桌面上打开浏览器访问http://localhost应该能看到 Nginx 的欢迎页。如果你使用虚拟机可以在 Windows 宿主机浏览器中访问虚拟机的 IP 地址IP 可以通过ip addr或hostname -I查看。4.4 编写并运行 Python 脚本继续在同一个项目目录中写一个简单的 Python 脚本验证 Python 环境可用。这个例子不会依赖第三方库容易运行成功。# 文件路径/opt/myapp/hello.py import os import socket def main(): user os.environ.get(USER, unknown) hostname socket.gethostname() print(fHello Linux!) print(fCurrent user: {user}) print(fHostname: {hostname}) if __name__ __main__: main()保存文件后在终端运行python3 hello.py预期输出类似Hello Linux! Current user: yourname Hostname: myhost如果你的系统没有安装 Python可以使用包管理器安装sudo apt install -y python3python3是 Python 3 解释器的命令名有些系统还保留了python命令指向 Python 2 或 Python 3建议明确使用python3避免版本混乱。4.5 用 systemd 管理脚本进阶演示如果你希望这个 Python 脚本能像服务一样由系统自动管理可以写一个 systemd 服务单元。这是从“手动运行脚本”走向“服务化部署”的关键一步。创建一个服务配置文件# 文件路径/etc/systemd/system/myapp.service [Unit] DescriptionMy Python App Afternetwork.target [Service] Userdemo WorkingDirectory/opt/myapp ExecStart/usr/bin/python3 /opt/myapp/hello.py Restarton-failure [Install] WantedBymulti-user.target然后重载配置并启动服务sudo systemctl daemon-reload sudo systemctl start myapp sudo systemctl status myapp注意ExecStart中的 Python 解释器路径要以which python3查询到的实际路径为准不同系统可能安装在/usr/bin/python3或/usr/local/bin/python3。使用 systemd 后系统可以自动在脚本异常退出时重启服务这是生产环境常见的做法。5. 高频命令速查表为了方便你收藏和检索这里把常用场景整理成一张速查表。这张表不是“全部命令”而是从日常操作中提炼出的最小集合。命令作用示例pwd显示当前路径pwdls -l列出文件详情ls -l /optcd切换目录cd /home/usermkdir -p创建多层目录mkdir -p app/logstouch创建空文件touch README.mdcp -r复制目录cp -r app app_bakmv移动/重命名mv a.txt b.txtrm -rf递归强制删除rm -rf /tmp/testdircat查看文件内容cat /etc/os-releaseless分页查看less /var/log/syslogtail -f跟踪日志tail -f app.loggrep -n搜索并显示行号grep -n error app.logfind按条件查找文件find / -name *.confsudo以管理员权限执行sudo apt updateuseradd -m新建用户并建主目录sudo useradd -m demochmod修改权限chmod 750 script.shdf -h查看磁盘空间df -hfree -h查看内存free -hps -ef查看进程ps -ef | grep nginxss -tlnp查看端口监听ss -tlnpscp跨机器复制文件scp file userhost:/tmpsystemctl管理服务systemctl status nginx这张表不需要死记硬背。你可以把它贴到桌面每次用的时候查一下两周后自然就熟悉了。6. 新手最常见的 5 个坑与排查思路6.1 虚拟机安装 Linux 时蓝屏或卡死如果你在 Windows 虚拟机软件中安装 Linux 时报错或蓝屏最常见的原因是 BIOS 中没有开启硬件虚拟化。重启电脑进入 BIOS/UEFI 设置找到 Intel VT-x 或 AMD-V 相关选项并开启。开启后再启动虚拟机问题通常会消失。另外虚拟机内存分配不要太低建议给 4GB 以上否则桌面版 Linux 会很卡。CPU 核心数也可以给到 2 个以上具体看宿主机配置。6.2 使用sudo提示当前用户不在 sudoers 组在安装系统时如果创建的是普通用户可能没有加入sudo组。此时可以切换到 root 用户执行su - usermod -aG sudo 你的用户名Debian/Ubuntu 系的 sudo 组叫sudoCentOS/RHEL 系的组叫wheel需要按系统选择。修改后重新登录当前用户sudo就可以正常使用了。6.3 执行命令提示command not found这一般有两种原因软件没有安装或者命令所在目录不在 PATH 环境变量中。先用以下命令判断which 命令名如果没有任何输出说明命令不在 PATH 中如果输出了路径说明命令存在但你的 shell 缓存可能需要刷新或者路径没有导出。对于未安装的软件包管理器安装即可。对于自己编译安装的软件通常需要把可执行文件目录添加到 PATH例如export PATH$PATH:/usr/local/myapp/bin不过这种修改只在当前会话有效想永久生效需要写入~/.bashrc或~/.profile。6.4 误删文件后找不回来rm删除的文件不会进入回收站这一点新手要尤其小心。想降低误删概率可以给自己定几条规则不用 root 执行rm -rf /这种命令删除重要目录前先ls确认重要项目使用 Git 或云备份脚本中使用rm时先加echo打印将要删除的路径确认无误后再去掉调试输出。如果你想更稳妥可以在主目录下建立一个“软回收站”目录用mv代替rm清理不用的文件定期再手动清空。6.5 端口被占用服务启动失败如果你启动 Nginx 或其他 Web 服务时报“端口被占用”先查看监听端口的进程ss -tlnp | grep 80找到 PID 后用ps -ef | grep PID确认进程身份。如果确认是无用进程可以sudo kill -9 PID但要注意kill -9是强制结束进程可能导致数据丢失或服务异常。更稳妥的方式是使用systemctl stop 服务名停止对应的系统服务。7. 从“会敲命令”到“能干活”的工程建议7.1 始终使用普通用户最小权限原则日常操作不要长期停留在 root 用户下。root 身份意味着所有命令都不会被限制这也意味着一个手误可能毁掉整个系统。建议新建一个日常使用的普通用户只有在安装系统级软件、修改系统配置时才使用sudo。如果你需要部署服务尽量给服务单独创建用户比如前面创建的demo而不是直接让它运行在 root 下。7.2 给项目和目录建立清晰的命名规范Linux 文件名区分大小写且支持特殊字符但不代表你应该乱用。建议统一使用小写字母、数字、下划线或短横线避免中文文件名和空格。例如项目名使用myapp、目录名使用logs、日志文件使用2025-06-15-app.log这种格式会让 shell 操作和脚本处理都更省心。文件名里的空格在命令行中需要加转义或引号很容易出错尽量避免。7.3 熟悉日志和系统状态而不是“猜”当服务出问题时第一反应应该是查看日志和状态而不是盲目重启。常见检查顺序是用systemctl status 服务名查看服务当前状态用journalctl -u 服务名 -n 100查看最近 100 行服务日志用df -h和free -h确认磁盘和内存是否充足用dmesg | tail查看有没有内核或硬件层面的错误。这套顺序能帮你在 5 分钟内定位大多数服务异常。尤其是 “磁盘写满” 和 “内存耗尽” 这两种问题在云服务器上非常常见检查df -h能立刻发现。7.4 生产环境变更前先做好备份与回滚方案无论你用的是 Linux 服务器还是自己的开发机只要涉及系统级变更比如换源、升级软件包、修改 systemd 服务、调整防火墙规则都建议先备份原有配置文件。确认变更成功后再定期清理备份。例如修改/etc/nginx/nginx.conf前先执行sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak.20250615如果 Nginx 配置写错导致启动失败可以快速恢复备份并把服务拉起来。这里的重点是“任何时候都要有回滚的能力”而不是相信自己的操作一定不会出错。7.5 把重复操作脚本化如果你发现自己每天都要敲同样的三五条命令就应该把它们写成一个脚本。比如把“进入项目目录、拉取最新代码、重启服务、查看日志”打包成deploy.sh#!/bin/bash set -e cd /opt/myapp git pull origin main sudo systemctl restart myapp journalctl -u myapp -n 30 --no-pager脚本开头用set -e表示有任何一步出错就立即停止避免后续命令在错误状态下继续执行。给脚本添加执行权限后以后每次只需要运行chmod x deploy.sh ./deploy.sh这样不仅能节省时间还能减少手动操作带来的失误。8. 最后说几句回到标题10 分钟真的能让你“改用 Linux”吗准确地说10 分钟足够你建立第一条完整的操作路径从打开终端到装软件、建用户、跑服务这套动作全部走通之后你已经有了继续深入的地基。后面再去学 shell 脚本、系统服务、网络配置、容器部署都是在往这栋房子上加楼层。如果你今天是第一天接触 Linux建议选一个最简单的路径开始Windows 上先启用 WSL或者开一台虚拟机把本文第 3 节和第 4 节的命令完整敲一遍。不要只看不练命令行的手感只能在敲击过程中建立。如果中途遇到报错不要慌把报错信息完整复制下来搜索或者查看/var/log下的日志大部分问题都能通过“看日志—定位原因—修改配置—验证结果”这个循环解决。真正让人决定留在 Linux 的原因往往不是某个炫酷技巧而是它给了你一种“系统是透明的、一切都可以查看和修改”的掌控感。希望这篇教程能帮你迈出第一步。