十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux基础入门:从思维转换到常用命令实战指南

Linux基础入门:从思维转换到常用命令实战指南 想写这篇Linux基础教程起因是这些年看过太多人把Linux当成Windows来用装了删、删了装最后留下一句“太难了”就走了。其实Linux入门难不在操作难在思维没转过来。这篇东西没有多余的概念轰炸全部围绕一个目标让你在一天之内能上手Linux能看懂路径、会装软件、改配置、查日志遇到报错起码知道去哪找原因。我自己最早被Linux折磨的那些坑也会一并写出来帮你绕开。1. 上手Linux前先把这个思维转换过来很多人第一次装完Linux进去第一反应是图标在哪软件商店在哪为什么装个软件这么麻烦为什么改个IP地址比Windows麻烦十倍这些疑问的根源在于大家对Linux的定位理解反了。Windows默认把你当成普通用户一切操作都通过图形界面完成背后发生了什么你不用管也不应该管。Linux默认把你当成一个需要掌控系统的人它更愿意直接给你一个shell让你用命令和系统对话。图形界面只是它众多功能里的一个不是全部。我见过太多新手卡在这一关他们不是学不会Linux而是始终放不下“图形界面优先”的习惯。拿到一台Linux服务器第一句话是“怎么没有桌面”第二句话是“能不能远程桌面访问”。抛开这个惯性事情就简单得多。你在Windows里做的大部分管理操作无非是点鼠标、填弹窗、点确定。Linux里对应的动作是输入命令、看输出、回车。理解这层对应关系后Linux的学习曲线其实比Windows更深但更直——它不藏事一切都有日志出错会告诉你错在哪权限不足就是权限不足。另外一个容易被忽视的思维转换是多用户体系。Windows的日常使用基本只有一个账户Linux从一开始就被设计成多用户、多任务的操作系统。这意味着系统里跑着哪些进程、由谁启动、是否被授权都是有明确记录的。这个设计思想你会在这篇文章的权限、进程、服务配置部分反复碰到理解了它Linux的很多“反人类设计”就说得通了。把心态摆正后接下来要做的就是选一个发行版装到机器上。这一步选错直接影响你前两个小时的体验。2. 发行版到底选哪个安装时最容易忽略的槽点2.1 新手选Ubuntu Desktop还是CentOS Stream关键看目的“Linux”严格来说只是一个内核大家平时说的某某Linux其实是内核加上一堆软件打包成的发行版。选发行版先问自己一个问题学它是为了什么。如果是为了日常使用、学习基础操作、以后可能搞开发首选Ubuntu Desktop或者Linux Mint。它们的软件生态最丰富遇到问题搜索引擎能给你最多答案显卡驱动、无线网卡这类硬件兼容性问题也最少。如果是为了以后做运维、部署服务器建议直接上Ubuntu Server或者CentOS Stream、Rocky Linux这一类RHEL系发行版。服务器的使用场景几乎不涉及桌面你面对的就是一个黑乎乎的终端所有操作全靠命令完成。提前适应这种环境比装个桌面版再回头看服务器要平滑得多。如果手头有树莓派或者各种ARM开发板那就直接上Raspberry Pi OS或者厂商提供的镜像这类板子和Linux的结合是所有嵌入式学习的基础。我的建议是完全零基础的人先用Ubuntu Desktop打底因为它能让你在最舒服的环境里学命令。等命令熟了一些再开虚拟机装一个不带桌面的Ubuntu Server逼自己习惯纯终端操作。两条腿走路进度比想象中快。2.2 虚拟机装还是物理机装全看你的电脑配置有Windows基础的人入门阶段完全没必要把电脑格式化了单装Linux。用虚拟机是最稳妥的选择装坏了快照一恢复等于拥有一台永不损坏的练习机。VMware Workstation Player和VirtualBox都免费闭眼选一个就行。分配资源的时候注意一个坑不要贪心给虚拟机分2-4GB内存、2个处理器就足够跑一个带桌面的Ubuntu了。之前见过有人给虚拟机分16GB内存结果Windows本机卡成PPT完全没必要。虚拟机设置里有两个选项容易被忽略一个是“启用3D加速”另一个是“EFI启动”。3D加速在桌面版Ubuntu里强烈建议打开否则桌面可能明显卡顿。EFI启动能不能开取决于镜像和虚拟机配置默认情况下不开也能顺利装如果安装时报错优先检查这里。物理机安装适合那些已经确定要长期用Linux的人。制作启动盘的工具推荐Ventoy它的好处是往U盘里丢几个ISO都行开机选一个直接启动比传统写盘工具灵活太多。曾经遇到过用UItraISO写完的启动盘在某些UEFI老机器上无法引导换了Ventoy一次就过从此没再换过其他工具。2.3 分区方案新手只记一个原则安装Linux到“安装类型”那一步时新手往往被“手动分区”四个字吓住。其实除非你有特殊需求否则直接选“清除整个磁盘并安装Ubuntu”让安装器自动分区就好。系统自动划分的swap分区、根分区、EFI分区对日常学习绰绰有余。如果你确实想手动分区记住这套最简方案EFI系统分区至少512MBFAT32格式挂载到/boot/efiUEFI启动必须根分区 /剩余所有空间ext4格式系统全部文件都装在这swap内存小于4GB时给一个等于内存大小的swap内存16GB以上时不给也行给8GB也无妨不建议新手把/home单独分出来放在另一个分区因为你对空间规划完全没有概念某天/分区满了、/home却空着反而给自己添堵。等真有需求了再去调整分区完全来得及。2.4 装完后的第一步操作装完系统第一件要做的事不是打开浏览器而是打开终端执行sudo apt update sudo apt upgrade -y这行命令的作用是更新软件源缓存并升级现有软件包。新装的系统软件源默认指向官方源在国内网络环境下速度可能不理想需要配置镜像源。Ubuntu更换清华、阿里云、中科大源的方法很成熟按官方文档操作即可。配置好源之后给系统装一些基础工具后面的操作会顺畅很多sudo apt install -y net-tools curl wget git vim htop tree到这里你的Linux环境已经就绪接下来要解决的是怎么在终端里不迷路。3. 终端与文件系统先解决“我在哪、我能去哪”的问题3.1 打开终端的姿势和shell到底是个啥Linux的终端字符界面就是shell的外壳。shell本身是一个程序负责接收你输入的命令解析之后交给内核去执行再把结果返回给你。默认的shell一般是bash还有zsh、fish这些变体它们的语法大同小异新手从bash起步就对了。打开终端的方式每个发行版略有不同Ubuntu桌面版默认快捷键是CtrlAltT。服务器上没有图形界面登录进去就是一个shell。初学者在终端里最容易犯的错是乱试。看到一个教程复制一段命令也不管当前在什么目录、什么身份回车就跑。其实shell的设计很友好它会明确告诉你当前的“位置”和“身份”。查看当前位置用pwd这个命令会输出你当前所在目录的绝对路径。比如输出/home/你的用户名就说明你现在位于home目录下你自己的家目录。3.2 目录结构不背用一次就记住了Linux目录结构和Windows的盘符思路完全不同。Windows里你从C盘、D盘开始逛Linux是从根目录 / 开始就像一棵倒挂的树所有文件和文件夹都在/底下延伸。新手只需要先记住这几个目录的作用就够闯天下/home普通用户的家目录每个用户在这里有自己的文件夹/root超级管理员root用户的家目录/etc系统的配置文件基本都在这/var日志、缓存等经常变化的数据/tmp临时文件目录重启后会清理/usr系统软件和用户安装的软件存放地/bin与/sbin系统命令的存放位置有一个小技巧命令不记得了可以用tab键补全路径太长也可以用tab键。每按一次tab系统会尝试自动补全如果补不出来再按一次它会列出所有可能选项省去大量手打的时间。文件路径的基本操作三件套必须滚瓜烂熟cd 目录名切换目录ls列出当前目录的文件和文件夹ls -la列出详细信息包括隐藏文件和权限配合好这三个命令再加上pwd你在终端里就再也不会迷路。3.3 相对路径与绝对路径犯了错才有记忆绝对路径一定是从 / 开头写起比如/etc/nginx/nginx.conf任何时候在任何目录下输入这个路径指向的都是同一个文件。相对路径则相对于当前目录比如你在/home/user目录下执行cd Downloads和cd /home/user/Downloads的效果一样。曾经有个学员很困惑说“为什么我输入的路径明明存在它却提示No such file or directory”。检查后发现他把路径直接写成了tmp/xxx/yyy而自己当时根本不在根目录。他以为路径开头必须加斜杠结果加了斜杠之后又带了多余的目录层级。在写路径时有两个符号要烂熟于心.代表当前目录..代表上一级目录。cd .. 回到上一级这个操作频率极高mkdir创建目录、rm删除文件时也会用到它们。3.4 文件查看与基本操作CPU温度的直觉查看文本文件用cat它会把整个文件内容全部输出到屏幕上。文件很长时建议用less它支持翻页、搜索、后退不会把屏幕刷得乱七八糟。复制、移动、删除这三件事命令分别是cp 源文件 目标位置mv 源文件 目标位置rm 文件删除目录时得加-r参数rm -r 目录名。新手在这一步最容易翻车的操作是sudo rm -rf /这行命令会递归、强制删除根目录下所有文件基本上执行完系统就废了。很多人是在练习时不小心多打个空格比如sudo rm -rf / var结果把/下面所有东西全删了才反应过来。血的教训就一条删东西之前先pwd确认自己在哪确认要删的对象到底是什么宁可多花十秒确认不要花半天重装系统。4. 高频命令不是背的是“用了就记得”的实战套件4.1 文件搜索三剑客find、grep、whereis接触Linux之后你得习惯一个场景配置文件太多忘了在哪。这时候需要的是搜索。find用来按名字或属性查找文件最基础用法find / -name nginx.conf 2/dev/null这里2/dev/null的意思是让错误信息直接扔进黑洞因为以普通用户身份扫描整个系统会有很多无权限访问的目录不重定向的话输出会十分混乱。按文件名查找时最好带上引号尤其是文件名里含有特殊字符时可以避免shell产生歧义。如果想在文件内容里找关键词用grepgrep error /var/log/sysloggrep支持正则表达式支持在多个文件里搜索配合管道符还能实现更复杂的检索比如统计日志里某个错误出现了多少次grep -c OutOfMemory /var/log/syslogwhereis适合快速定位命令本身的位置type命令可以查看当前命令到底是shell内部命令还是外部可执行文件。排查“为什么提示command not found”时这三个命令组合起来非常有用。4.2 管道、重定向与文本处理管道符|是Linux命令组合的精髓。它左边命令的输出会变成右边命令的输入一层层传下去实现流水线式的处理方式。比如想把/usr/bin目录下的文件列表分页显示用ls /usr/bin | less想统计某个目录下有多少个文件用ls | wc -l。重定向符号里表示把输出写入文件会覆盖原内容表示追加写入不会覆盖原内容。2表示错误输出重定向。这三个符号区分清楚写脚本的时候非常受用。文本处理方面awk和sed是Linux里最强大的两个文本工具但也是新手最容易晕的两个。刚开始不必深究只需要掌握awk最常用的按列提取功能awk {print $1} /etc/passwd这个命令会把/etc/passwd文件的每行第一个字段按冒号分隔前的部分提取出来。以后你在服务器上想批量处理用户名时这一个命令就足够撑起开局。sed的典型用法是做文本替换sed -i s/old/new/g 文件名-i表示直接修改原文件s是替换命令g是全局替换。改配置文件之前强烈建议先不带-i跑一次看输出是否符合预期确认无误再真正执行。4.3 进程管理的核心逻辑进程是Linux系统运行的基本单位。你用命令行敲一个程序它就会成为一个进程拥有自己的PID进程ID。查看进程用ps -ef这个命令列出系统所有进程。想只看某个关键字的进程配合grep使用ps -ef | grep nginxtop命令可以动态查看系统资源占用情况它每几秒刷新一次按CPU或内存排序。htop是top的强化版界面更加友好还支持鼠标操作让人能直观看到哪个进程吃了大量CPU。结束进程用kill加PID正常的结束信号是15TERM如果进程没反应再用-9强制杀掉kill PID kill -9 PID强制杀掉进程会导致它没有机会清理临时文件和保存状态一般在最后关头才用。有时候你找不到服务的配置文件在哪实际上是用systemctl start/stop/status/service来管理系统服务的比如systemctl status sshd就能看到SSH服务的运行状态。4.4 压缩解压最常见的三个命令tar是Linux下最常用的打包工具。压缩成tar.gz格式的命令tar -czvf 文件名.tar.gz 要压缩的目录解压则是tar -xzvf 文件名.tar.gz这里的参数含义是c表示创建归档x表示解压z表示用gzip压缩v表示显示详细信息f表示指定归档文件名。记住几个组合就差不多了。zip格式在Linux下同样很常见和Windows交换文件时经常用到zip -r 文件名.zip 目录 unzip 文件名.zip有一次我在服务器上解压一个大文件突然开始报“Disk quota exceeded”把磁盘空间查了一遍发现/tmp下面全是之前解压残留的临时文件。从那以后解压大文件的习惯变成了先df -h查看磁盘占用再解压到当前目录最后确认没问题就立刻清理原压缩包。5. 用户与权限搞清楚这层关系才能在系统里自由出入5.1 用户、用户组、root的关系Linux是多用户系统每个用户都有自己的家目录和私有文件。用户组是用户的集合方便统一管理权限。root是超级管理员拥有系统最高权限。切换用户用su命令su - 用户名退出当前用户用exit。想临时用root身份执行一条命令用sudosudo 命令这里有个关键点su切换用户时需要输入目标用户的密码sudo执行命令时需要输入当前用户自己的密码。很多人以为sudo就是“变成root再干活”其实sudo的精髓是让你以授权的方式执行特权命令操作都会被记录在日志里谁执行了什么一目了然。5.2 文件权限三组rwx读清楚就不怕乱改文件执行ls -l时第一列像-rw-r--r--这样的字符串表达了文件和目录的权限信息。第一个字符表示文件类型-是普通文件d是目录l是符号链接。后面九个字符分成三组每组三个字符分别代表文件所有者、所属组、其他人的权限。r、w、x分别表示读取、写入、执行。修改权限用chmod命令有两种写法。符号方式直观chmod ux 文件名给文件所有者增加执行权限。数字方式更常用r4w2x1把三个值加起来就是一组权限。比如755表示所有者rwx、组rx、其他人rx这是可执行文件的常见配置。修改文件所有者和所属组用chownsudo chown 用户名:组名 文件有次排查一个网站上传图片失败的问题网页端报502日志里没有异常最后发现是上传目录的所有者是root而web服务进程以www-data用户运行根本没法写入。执行chown把目录所有者改掉之后问题立刻消失。这种权限问题在服务器上非常常见排查方向就是“用户能不能对该文件/目录做想要的操作”。5.3 新建用户与sudo授权新建用户的命令sudo useradd -m -s /bin/bash 用户名-m表示创建家目录-s指定默认shell。创建后设置密码sudo passwd 用户名想让新用户能执行sudo命令需要把它加入sudo组sudo usermod -aG sudo 用户名这里的-aG表示追加到一个组不加-a会把这个用户从之前所属的其他组里移除容易顺带把用户弄坏。删除用户用userdel -r 用户名-r表示连同家目录一起删掉。如果你删的是系统服务的运行用户记得先确认该用户没在运行任何服务否则可能把业务弄挂。6. 软件安装的三条路源、包、编译6.1 apt源就是Linux的“应用商店”Ubuntu和Debian系的软件管理工具是apt它从软件源下载软件包并自动处理依赖关系和Windows的“应用商店”类似。日常操作sudo apt update # 更新软件源索引 sudo apt install 软件名 # 安装软件 sudo apt remove 软件名 # 卸载软件 sudo apt search 关键词 # 搜索软件核心概念是先update再installupdate刷新的是本地软件源索引不刷新的话拿不到新版本信息。以前有新手直接sudo apt install某个软件结果提示找不到包疑惑半天其实只要先sudo apt update就好了。RHEL系的CentOS/Rocky用dnf或yum指令思路类似只是包格式不同红帽系是.rpm、Debian系是.deb。6.2 dpkg与rpm离线安装依赖地狱怎么做功有些软件没法直接从源里装只能下载安装包手动装。Debian系用dpkgsudo dpkg -i 软件包.debRHEL系用rpmsudo rpm -ivh 软件包.rpm但手动安装经常遇到“安装失败缺少依赖库”的提示这就是俗称的依赖地狱。正确处理方式是安装失败后用apt自动修复sudo apt --fix-broken install它会自动补齐缺失的依赖比手动一个个找依赖靠谱得多。6.3 源码编译三步走有些最新版本软件只能从源码编译安装这个流程一直是新手恐惧区。实际只要三步./configure # 检查环境并生成Makefile make # 编译源码 sudo make install # 安装到系统针对源码编译我一般建议用checkinstall替代make install它能生成一个安装包卸载时方便得多不用手动清理散落的文件./configure make sudo checkinstall编译前需要先安装编译工具链sudo apt install -y build-essential如果编译过程报错说缺少某个库用apt search找到对应的-dev版本包装一下原因在于编译时缺少的头文件通常在-dev包里。6.4 桌面环境装软件桌面版Ubuntu也可以用图形界面的软件商店安装软件但版本可能不是最新的。多数时候我建议直接用命令行还能顺便看懂它装了什么。7. 网络配置与服务管理连不上网一切都白搭7.1 IP地址配置的现代做法Ubuntu从18.04开始默认使用netplan管理网络配置配置文件在/etc/netplan/目录下。查看当前IP地址用ip addr show或者兼容性的ifconfig如果ifconfig不存在就装net-tools。设置静态IP编辑netplan的yaml配置文件注意缩进必须严格用空格不能用tab键network: version: 2 ethernets: eth0: dhcp4: false addresses: - 192.168.1.100/24 routes: - to: default via: 192.168.1.1 nameservers: addresses: - 223.5.5.5 - 119.29.29.29改完应用配置sudo netplan apply有次我改完配置后远程连接直接断了是因为IP地址写错把自己从网络里踢了出去。所以改网络配置前一定确认自己在控制台能操作服务器别只靠SSH连着一台远程机器就去改IP除非你想体验一段惊险的失联时间。7.2 DNS解析遇到了问题怎么查域名解析失败的表现是网页打不开但ping IP地址能通。排查步骤cat /etc/resolv.conf查看当前DNS配置。用dig或nslookup测试解析dig example.com如果返回状态是NOERROR说明解析正常问题可能在浏览器缓存或代理。如果显示SERVFAIL说明DNS服务器本身解析不了这个域名试着更换DNS为223.5.5.5阿里或119.29.29.29腾讯。之前遇到过一种奇怪情况系统里的DNS配置是对的但解析就是不成功。最后发现是NetworkManager和netplan之间发生了配置冲突。多查一层不是看配置里写没写DNS而是看当前生效的配置到底是谁提供的。7.3 ssh远程连接的基础与加固Linux服务器的日常操作基本靠SSH远程连接完成。连接命令ssh 用户名IP地址连接不上时按这个顺序查本机网络通不通ping、目标22端口是否开放telnet或nc探测、目标sshd服务是否运行、防火墙是否放行。sudo systemctl status sshd sudo apt install -y openssh-serverSSH安全性加固至少做到两件事修改默认端口22为其他端口禁用root直接登录。配置文件在/etc/ssh/sshd_config修改后重启服务sudo systemctl restart sshd这两步能让你的服务器避开90%以上的脚本攻击。8. 文本编辑与日志查看Vim入门和排错的基本功8.1 Vim到底怎么退出Vim是所有Linux系统都会预装的文本编辑器新手最大的心理阴影就是不知道怎么退出它。其实只需要记住三个模式的概念普通模式、插入模式、命令行模式。按i进入插入模式此时输入的字符会进入文本。按Esc回到普通模式此时按:wq保存退出按:q!退出不保存。日常使用只需要掌握这些命令i在光标前插入a在光标后插入dd删除当前行yy复制当前行p进行粘贴/关键词在文件中搜索:%s/旧/新/g全文替换新手打开一个文件千万别乱按键盘记住先搞清楚自己处于哪个模式。按Esc回到普通模式再处理别的。8.2 日志文件就是最好的老师Linux系统的日志一般在/var/log目录下。系统日志文件是syslog或journald管理的journal。sudo tail -f /var/log/syslog-f参数表示持续跟踪文件新增内容。排查故障时开启一个终端实时跟踪日志另一个终端复现问题是效率最高的排错方式。想查找历史日志grep 关键字 /var/log/syslog | tail -n 50journalctl命令在systemd系统里更强大journalctl -u 服务名只查看某个服务的日志还可以加上--since和--until参数限定时间范围。这些操作在我日常排错中的使用频率远超其他命令新环境上手Linux先看它能写日志的地方再看别的。8.3 排查问题要养成的三个习惯第一报错信息全文阅读。很多人看到一长串英文就跳过只把最后一行发到搜索引擎。其实日志的关键信息往往就在中间某一段多读一次就能少找一次帮助。第二不要在一棵树上吊死。服务起不来先看日志。日志没反应看权限。权限没问题看端口占用。一层层剥而不是反复重启服务试运气。第三善用搜索引擎的前提是描述准确。搜索时带上系统版本、错误码、相关服务名比如“Ubuntu 22.04 sshd connection refused”比只搜“linux ssh连不上”得到有效结果多得多。9. 这个阶段练完下一步该往哪走文章写到这里Linux基础部分已经全部覆盖发行版选型、文件系统、高频命令、权限、软件管理、网络配置、文本编辑和日志排错。这套能力足以支撑你完成日常文件操作、软件安装、服务启停和基础故障排查。如果你跟着动手操作了这个过程你会发现Linux的学习曲线并不是陡峭的悬崖而是一段需要持续适应的缓坡前两小时最痛苦接下来就是滚雪球式的正反馈。重点不在于你背会了多少命令而在于你建立起了一套“遇到问题先看日志、先确认身份权限、再动手处理”的排错思维。接下来你可以按兴趣选择方向想做服务端就去学Nginx、MySQL、Docker这些常用软件的部署与维护想深入开发就学Shell脚本和Python的Linux环境使用想搞嵌入式就研究交叉编译和板子上的驱动适配。基础打牢之后这些路径的起点其实都在你眼前这本“Linux使用手册”上方向选一个走专比全都浅尝辄止强得多。
返回列表