ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Linux入门必知:常用指令与vi编辑器实战指南

2026/9/13 3:10:49 拓冰建站 浏览量
Linux入门必知:常用指令与vi编辑器实战指南 开头去年帮几个刚转行做运维的朋友梳理Linux入门路径聊到最后发现大家卡住的不是那些高深的集群、虚拟化、容器编排反而是最基础的东西——常用指令记不住、vi编辑器不会用。说句大实话我当年刚接触Linux时也是这样面对黑乎乎的终端窗口脑子里只有一个念头这玩意儿到底该怎么下手这其实很正常。Linux的指令体系庞大但真正高频使用、日常工作离不开的翻来覆去也就那么几十条。而vi编辑器更是绕不开的一道坎——不管你是改配置文件、写脚本还是临时处理文本它都在那里等着你。最尴尬的处境是你不想用vi但服务器上可能只有vi你嫌vi难用可它偏偏是所有Linux发行版默认自带的编辑器学会了它走遍任何一台服务器都不慌。这篇笔记是我把自己学习Linux过程中整理的常用指令和vi编辑器用法做了个汇总不追求大而全只挑实战中真正高频的命令配合我踩过的坑和总结出来的小技巧。不管你是零基础小白、刚转行的运维新人还是被vi折磨过的开发同学这篇内容都能帮你少走不少弯路读完就能上手操作。1. 整体学习思路先用起来再搞懂原理1.1 为什么先学常用指令而不是系统原理很多人学Linux上来就啃《鸟哥的Linux私房菜》或者各种系统原理结果看了十天半个月连一次实际命令都没敲过然后彻底放弃。我的建议恰恰相反——先学会用再去理解为什么。就像学开车你不需要先把发动机原理摸透才能上路先知道哪个是刹车、哪个是油门能把车开走比什么都重要。常用指令的学习本质上是一种肌肉记忆训练。ls、cd、cat、grep这些命令你不用刻意去背只要在一台Linux机器上高强度折腾两三天自然就熟练了。关键在于动手而不是死记硬背。我见过不少初学者花大量时间抄写命令大全抄完就忘就是因为缺少真实使用场景的刺激。另一个很重要的原因是现代Linux学习和使用是任务驱动的。你想解压一个压缩包自然就会去查tar指令的用法你想批量替换文件内容就会去研究sed和awk。带着问题去学效率是漫无目的看书的十倍不止。所以这篇笔记的输出思路也很明确——按使用场景分类整理指令让你遇到问题时能快速定位到解决方案。1.2 核心方案的选型逻辑对于一个学习笔记来说方案选型很关键到底覆盖哪些指令、讲解到多深、用什么顺序组织。我做了几个取舍说说背后的考量你之后自己整理笔记时也可以参考这套思路。首先是覆盖面问题。Linux常用指令少说有几百条全部整理出来不现实也没有必要。我最终选择了大概四五十条判断标准是在真实服务器运维和日常开发中命中率最高的那些。像ls、cd这种入门必用的有像grep、awk这种强大但稍微有点门槛的还有像df、free、ps这种排查系统问题时离不开的。覆盖这些日常工作中80%的场景都能应对。其次是深度问题。每条命令只讲最核心的用法不把man手册搬过来。比如tar指令它支持的参数几十个但实际中大多数人用到的最多三四种组合。把最常见的用法讲透比把全部参数罗列一遍有意义得多。等你有更高的需求时自然会去查man文档或者网上的专题教程。最后是vi编辑器的定位问题。vi我单独用一整章来讲因为它是公认的新手拦路虎。三大模式的概念、光标的移动、文本的复制粘贴和删除、查找替换这些必须掰开揉碎讲清楚。vi的学习曲线确实陡峭但一旦跨过那个坎你会发现它的效率非常惊人——全程手不离键盘一秒钟能完成在鼠标和键盘之间来回切换省不下来的操作。2. 常用指令全解析按场景分类才是正确姿势2.1 文件与目录操作翻出花样的基础三件套如果你只能记住三条Linux指令那一定是ls、cd、pwd——它们是探索文件系统的眼睛和腿。不过即使是最基础的指令用好了也能翻出不少花样。先说说ls。它的基本用法我就不啰嗦了真正实用的是几个组合参数ls -lh以人类可读的方式显示文件大小ls -lt按修改时间排序并最新在前ls -la显示所有内容包括隐藏文件。日常工作中我几乎固定用ls -lh文件大小直接显示成K、M、G这样的单位看着一目了然不用自己在心里换算字节数。再说cd。有件事我要专门提醒一下——cd和cd ~的区别。前者是进入当前用户的home目录前提是当前就在home目录下后者是无条件跳转到home目录更稳定可靠。另外用好cd -能快速在最近两个目录之间来回切换这个技巧在做配置排查时特别顺手不用重新敲一长串路径。pwd是其中最不起眼的它只是告诉你当前在哪里。但配合ls -l查看的文件路径或者你用相对路径操作时发现报文件不存在错误顺手敲一下pwd能帮你快速定位是不是路径搞错了。在文件操作里mkdir有几个细节值得注意mkdir -p a/b/c可以一次性创建多级嵌套目录这在搭建项目结构时非常方便。touch指令不只是创建空文件它还可以更新已有文件的时间戳——某些编译场景下可以通过touch来触发增量编译这个坑我踩过一次才反应过来。文件的查看也有学问。小文件用cat最直接长日志文件或者关键配置想翻页查看less才是神器按Space翻下一页、按q退出、按/搜索基本操作完全不需要鼠标。比如排查Nginx的日志文件几万行内容用cat直接输出终端会卡到你怀疑人生而less就是为这种场景设计的。相比之下tail -f是跟踪日志更新的利器调试程序时开一个窗口专门跑tail -f看输出简直不能再方便。2.2 文件搜索与内容检索用好grep等于开了天眼搜索和内容检索是Linux使用者从新手迈向熟练的标志性分水岭。不会grep之前你只能靠肉眼滚屏找内容学会了grep等于在终端里开了天眼。grep的基础用法是按关键字匹配文件内容grep error app.log会把包含error的所有行打印出来。真正高频的组合参数有三个grep -i忽略大小写grep -n显示行号grep -r递归搜索整个目录。其中行号信息特别有用日志报错时带着行号去排查定位问题的速度能快好几倍。更进阶一点的是配合管道符使用ps -ef | grep java、docker ps | grep tomcat这类组合等于在进程列表和容器列表里做精确过滤一行命令找出你关心的目标。这是Linux小工具组合成大能力的核心哲学几乎每个运维同学的日常操作都有grep的身影。文件搜索指令find的常用场景也值得一提。find /etc -name *.conf搜索指定目录下所有以.conf结尾的文件find . -size 100M找出当前目录下超过100MB的大文件find . -mtime -7列出最近7天内修改过的文件。这三个是排查服务器问题时的高频命令比如磁盘空间突然满了第一反应就是find找出大文件和异常日志。不过要注意grep和find最容易混淆grep是搜文件内容find是搜文件名。我见过太多人在需要搜索内容时用find搜索文件名时用grep结果自然是一无所获。这个区别在面试里也经常被问到值得记住。2.3 系统状态与性能排查服务器体检的望闻问切作为一个靠Linux吃饭的人系统状态排查指令是保命的基本功。服务器出问题时通常就是三板斧先看负载、再看内存、最后看磁盘。top是最常驻的命令相当于Windows里的任务管理器增强版。打开top后第一行是系统运行时间和负载均值三个数字分别代表1分钟、5分钟、15分钟的负载。很多新手只看第一个数其实是误区——判断负载是否过高要结合三个数一起看如果1分钟远高于15分钟说明系统正在经历突发压力如果三个数都很高且接近说明是持续高负载的稳定状态。内存方面free -h用人类可读的方式显示内存使用情况。看这个命令的输出有个关键细节第二行available才是真正可用的内存而不是第一行的free。因为Linux会积极使用空闲内存做缓存缓存这部分cache在需要时会自动释放看到free很小就以为内存爆了那是误区也是新手最容易误判的地方。当年我刚入行时发现free显示为0就想重启机器被老工程师拦住才明白这个道理。磁盘监控有两条命令组合使用df -h查看各分区挂载点的整体使用率发现哪个分区快满了再用du -sh /var/log/*这样的命令查具体是哪个目录占用大。磁盘空间排查是一个从大到小的缩小范围过程先定位分区再逐步缩小到目录最后找到罪魁祸首的文件。我处理过的一次线上事故就是这个流程用户反馈服务异常一查磁盘100%再从根目录逐步缩小最终定位到一个被溢出日志填满的临时目录清理后服务马上恢复。网络方面netstat -tunlp能列出所有监听端口和对应的进程信息查端口占用、确认服务有没有正常启动都用得上。而ss是netstat的现代替代品输出更快、信息更准新系统上我更推荐优先使用ssss -tlnp | grep 8080一次查清端口8080的监听情况。很多老教程还在教netstat但实际新版本Linux发行版默认可能不带netstat需要额外安装net-tools而ss是iproute2自带的开箱即用这也是为什么我建议直接用ss的原因之一。3. 权限与用户管理理解rwx别再做菜鸟管理员权限管理是Linux安全体系里最基础也最核心的一环。很多新手在碰到Permission denied时只知道用sudo硬上这其实解决不了根源问题也留下了安全隐患。真正要理解的是那串看起来毫无规律的权限字符串。3.1 权限字符的含义与chmod的两种用法当你执行ls -l时第一列会显示类似-rw-r--r--这样的10个字符。第一个字符是文件类型-代表普通文件、d代表目录、l代表软链接后面9个字符分成三组每组三个分别对应该文件属主u、属组g、其他用户o的权限。每组中的rwx分别代表读、写、执行权限没有权限则以-表示。比如rw-r--r--表示属主可读写属组和其他用户只可读。修改权限最常见的是数字法。r4、w2、x1每组权限变成一个数字。chmod 755表示属主有全部权限4217属组和其他用户有读和执行权限415。这组权限是生产环境中可执行文件的标准配置。我用chmod 777处理所有文件是很多新手的坏习惯把所有权限完全开放等于把服务器大门打开了非常危险。正确做法是给到最小够用的权限——文件就用644脚本就用755只有确实需要写权限的目录才用775。另一种是符号法chmod ux给属主加执行权限chmod g-w去掉属组的写权限chmod or给其他用户加读权限。这种写法在做小幅调整时更直观不用脑算出具体的数字。3.2 属主与组的管理chown用于修改文件属主chown admin:app /opt/project把目录属主改为admin用户属组改为app组。这个命令在做项目部署时太常用了——从root账户拉取或解压的文件默认属主是root应用运行时如果用普通用户身份跑就会因为没权限报错一条chown就能解决。用户管理的基础操作也值得一记。useradd创建新用户passwd设置密码usermod -aG sudo username把用户加入sudo组不同发行版组名可能不同Debian系为sudoRedHat系为wheeldeluser删除用户。这里有个很容易踩的坑useradd之后如果忘记了passwd设置密码新用户是无法登录的。我第一次创建用户时就因此折腾了半天最后才发现密码根本没设。还有个很容易被忽视但非常实用的知识是/etc/sudoers。要给某个用户或组临时提权正确做法是visudo编辑这个文件来添加而不是用文件编辑器直接改。因为visudo会在你保存时自动检查语法错误的sudoers配置可能导致sudo完全失效——这个错误我亲眼见过同事踩过最终只能进入恢复模式修复工程量非常大。3.3 权限问题的快速定位思路遇到Permission denied时我的排查思路首先是你会发现提示信息里的用户身份当前是哪个用户在操作目标文件的属主和属组是谁其他用户对该文件的权限是什么。三者一对照问题基本就清楚了。更进阶一点的是目录权限和文件权限的优先级问题。目录的x执行权限决定了能否进入这个目录目录的r权限决定了能否列出这个目录的内容。比如你有一个目录是drwx--x--x其他用户虽然能进入有x权限但不能列出目录内容没有r权限这就造成了一种知道路径但看不到目录里有什么的特殊隔离效果。这是很多人对权限理解不深时容易产生疑惑的地方——明明有执行权限为什么cd进去之后ls却提示Permission denied4. vi编辑器从陌生到顺手的完整实操指南4.1 为什么非得学会vi很多初学者会问既然有nano、有VS Code远程插件为什么还要学vi我的答案是——vi是Linux系统自带的、在任何机器上都存在的编辑器。你永远不知道哪台服务器上就没有你熟悉的编辑器但一定是带vi的。而且很多系统组件比如crontab -e、git commit默认调用的都是vi你不会它连定时任务都配不了更不用说写commit信息了。vi的另一个优势是纯键盘操作、效率极高。当你熟练之后编辑文件的全过程手可以不离开键盘光标移动、删除、复制、粘贴、查找替换甚至批量操作都能在毫秒级完成。对比一下在图形IDE里每次想用鼠标选中一段文字手就要从键盘挪到鼠标再挪回来一天下来积累的切换成本非常大。4.2 三大模式这是理解vi的钥匙vi编辑器最让人迷惑的就是它的模式概念。总共三种模式必须先弄清楚才能在vi里自由穿行不然你会发现自己敲的字没显示出来反而触发了各种奇怪的命令。普通模式Normal Modevi打开文件后默认所处的模式。在这个模式下你敲击的字母不会出现在屏幕上而是作为命令被执行。比如按j是光标下移按x是删除当前字符按w是保存等具体见下文。新手不习惯的是每次进入文件就像被锁住了打字上不了屏。解决方法是按i进入插入模式。插入模式Insert Mode按i进入还有a、o等不同的进入方式后面会讲。在这个模式下你敲击的字符才会进入文件内容。操作完成后按Esc键退出到普通模式。命令行模式Command-Line Mode在普通模式下按冒号:进入用于执行保存、退出、查找替换等更高级的操作。输入命令后按回车执行然后自动回到普通模式。很多人的vi学习死在第一步就是因为分不清这三种状态。我给初学者的建议是心里始终记住一个循环普通模式按i进入插入模式写内容写完按Esc回到普通模式再按冒号进入命令行模式输入wq保存退出。把这个循环练熟vi就算入门了。4.3 高频操作光标移动、删除复制、查找替换以下是我实践中反复使用频率最高的vi操作取整理成一个速查表建议把这部分保存在剪贴板或者手机里练的时候对照着来操作类型按键作用光标移动h j k l左、下、上、右移动比方向键更高效光标移动0 和 $跳到行首和行尾光标移动gg 和 G跳到文件第一行和最后一行光标移动:行号跳到指定行单词级移动w 和 b按单词前进和后退删除x删除光标所在字符删除dd删除光标所在行删除dG删除当前行到文件末尾的所有内容复制粘贴yy复制当前行复制粘贴p在光标下方粘贴查找/关键字向下搜索关键字查找n 和 N跳到下一个/上一个匹配结果替换:%s/old/new/g全文替换old为new这些操作中dd和yy配合p是编辑效率最高的组合。比如你想把第三行的内容移动到第十行光标移到第三行dd剪切也是删除再移到第十行p粘贴完美解决。这比鼠标拖动选中、右键剪切、再滚动鼠标选定位粘贴要快得多。:wq保存退出、:q!不保存强制退出这两个命令的含义一定要刻在脑子里。操作中经常出现的情况是文件被改乱了想放弃修改如果输入:wq就真的保存了错误内容有多少次我见过同事因为紧张把:q!输成:wq结果错误配置被保存了后续排查工作量翻倍。养成习惯不确定改没改错时先:q!安全退出重来一次不丢人。4.4 一个新手最容易忽视的设置vi默认界面上不显示行号和当前光标位置信息这让很多初学者感到迷茫。解决办法是编辑用户主目录下的~/.vimrc配置文件写入以下几行基础配置set number 显示行号 set relativenumber 显示相对行号便于按行数跳转 set showcmd 显示当前输入的命令 set hlsearch 搜索时高亮匹配结果 set tabstop4 tab键占4个空格宽度 set expandtab 用空格替代tab syntax on 开启语法高亮写完保存后重新打开vi你会发现世界瞬间清晰了。尤其是set number和syntax on前者让你能精确定位报错行后者让你在编辑代码时所见即所得。这个文件是每个Linux用户都应该配置的相当于给你的vi做了一次基础装修。不过要提醒的是很多系统上的默认编辑器其实是vimvi enhanced以上配置对vim完全生效如果是精简版vi部分配置可能不生效不过现在主流发行版默认都会带vim。4.5 vi学习的三天计划根据我教过不少新手朋友的经验按下面这个节奏来学vi三天就能基本顺手上路不会中途放弃第一天只练基本功打开和退出vi 文件名、:wq、:q!、切换模式i进入插入、Esc退出、移动光标h j k l 和方向键、删除x和dd、保存。目标能新建一个文件、写上几句话、保存退出。第二天练编辑效率学习yy复制、p粘贴、u撤销、/查找、:行号跳转、:wq和:q!的区分。目标能把一个已有的文件内容进行移动、复制、编辑不再觉得别扭。第三天上岗实操直接打开一个真实的配置文件比如Nginx或者SSH的配置文件做一次包含查找、替换、修改、保存的完整操作。目标在VI里完成一次真实工作任务建立信心。5. 常见问题与排查技巧实录学习过程中大家的问题高度集中我挑一些最有代表性的整理成速查表每个解决方案都是实践检验过的问题描述原因解决方案输入ls提示command not foundPATH环境变量异常或命令不在标准路径用/bin/ls或/usr/bin/ls绝对路径执行然后检查~/.bashrc或~/.bash_profile中的PATH配置执行vi无法保存提示readonly对文件没有写权限保存时用:w!强制执行或者退出后用sudo重新打开文件按方向键变成ABC字符终端对vi模式支持异常通常是vi不是vim安装vimsudo apt install vim或sudo yum install vim或用vim命令替代vi打开文件tar解压后文件名乱码Windows打包的文件编码GBK/GB18030与LinuxUTF-8不一致推荐使用unzip -O gbk指定解压编码解ZIP场景或安装convmv批量转换文件名为UTF-8删除文件后df -h空间没释放文件被进程占用虽然链接已删但句柄还在用lsof L1找出打开但已删除的文件确认PID后重启对应进程或使用 路径清空日志CtrlC后终端偶尔出现卡死当前在前台运行的程序未正确处理中断信号按CtrlZ挂起进程再kill -9 进程PID强制结束最后fg回到前台继续ping一切正常但ssh连不上服务器防火墙开放规则未包含sshd端口或ssh服务异常检查防火墙规则如ufw、firewalld确认端口22是放行状态再用systemctl status sshd查看服务状态5.1 指令误删文件与救回的可能性误删文件是Linux新手最容易犯也最不愿面对的错误。这里我必须坦诚地讲一个现实在Linux传统文件系统如ext4或xfs中一旦rm删除了文件恢复难度极高基本没有像Windows回收站那样便捷的机制。所以最好的策略永远是防患于未然。我的防误删经验有三个层次。最低一层是尽量少用rm -rf特别是涉及变量的命令比如rm -rf $DIR/*——如果不小心变量为空执行后就成了rm -rf /*后果不堪设想。永远不要在生产环境直接敲这种命令至少把路径写死。中间一层是给rm做一个安全替代在自己的~/.bashrc里加上alias rmrm -i让每次都强制确认更稳妥的是定义alias trashmv $1 ~/.trash把删除改成移入回收目录定期手动清理。最高一层是养成备份习惯——对配置文件、关键脚本等不可再生的文件修改前先copy一份或留个git版本管理。我的个人实践经验是上线操作前必做配置备份比如cp nginx.conf nginx.conf.bak出问题了直接回滚。这样的成本极低但能避免大量事故。5.2 指令记不住怎么办建立自己的速查手册很多初学者会焦虑Linux命令这么多我记不住怎么办。我的答案很简单别勉强自己记建立自己的速查手册用的时候查阅用得多自然就记住了。具体做法是在自己的home目录下创建一个/cheatsheet文件夹按场景把常用命令分类写成Markdown文件比如file-ops.md、networking.md、permission.md等。遇到不熟悉的命令或者在同事那儿学到一个新技巧随手记录进去。过一段时间再翻看你会发现常用命令早就形成肌肉记忆了剩下那些是你的备份脑容量。另外一个方法是利用man文档和--help参数——man ls能查看ls的完整用法ls --help快速显示摘要。不需要把所有参数背下来会用man查就够了。真正的高手不是记住所有命令的人而是知道去哪里查找答案的人这个思路放在哪个领域都成立。6. 后续还能怎么扩展这篇笔记覆盖的是Linux日常使用最核心的基础部分但你也肯定发现了Linux的深度远不止于此。根据我自身学习和带新人的经验学好这些内容后接下来值得延伸的方向有这么几个Shell脚本编程当你发现自己反复在终端里输入一串相同的命令就是时候把它们放到一个shell脚本里自动化了。Shell脚本是Linux自动化的基础从简单的备份脚本到复杂的部署流程都离不开它。学会了脚本你已经从Linux用户向Linux工程师迈出了一大步。文本处理三剑客grep、sed、awk的组合使用是Linux文本处理的黄金组合。grep负责筛选sed负责编辑替换awk负责格式化分析。我能熟练使用awk一行命令提取日志关键字段的这种能力在排查线上问题时简直是神兵利器。网络排查工具tcpdump抓包分析、telnet/nc测试端口连通性、curl调试HTTP接口这些是运维和开发童鞋都会用到的网络排查工具。如果说系统资源排查是内功网络排查就是外功两手都要硬。systemd服务管理现在几乎所有主流发行版都用systemd管理服务systemctl系列命令start、stop、enable、status的熟练使用以及自己编写service unit文件是管理和部署服务的基本功。容器化入门Docker的底层逻辑和Linux的命名空间、cgroup密切相关。当你理解了一个容器本质上就是一个带了隔离机制的Linux进程对容器网络的调试就很容易上路。学好Linux基础再去接触Docker和Kubernetes会是水到渠成的事。我个人在实际操作中的体会是Linux学习最忌讳的是一直处于看教程的状态。指令也好、vi也好都是练出来的手艺。哪怕只是在自己的虚拟机上反复折腾——把系统搞坏了、修复它、再搞坏这个过程中学到的东西远比看十遍教程多。如果你手上还没有一台Linux环境装个虚拟机或者用免费的云服务器从第一次执行ls开始慢慢就会找到感觉了。