首页 / 资讯中心 / 文章详情

高效Linux命令实战:30个终端高频操作与命令行思维

高效Linux命令实战:30个终端高频操作与命令行思维 ★ FEATURED ARTICLE
接触Linux这些年最常被问的问题不是哪个命令最难而是到底该学哪些命令。网上不少文章喜欢把命令按字母表列一遍看着很全实际用不上几行。我根据自己日常在服务器和本地环境的实操从目录定位、文件操作、文本处理、进程管理、磁盘维护、网络请求这几条主线里筛出了30个出现频率最高的Linux命令。它们不是背就完事的知识点而是一套可以直接上手的终端工作流。无论你是刚装好Linux发行版的新手还是平时只在服务器上执行固定几个命令、遇到点变化就抓瞎的半熟手这篇内容都值得你花半小时从头过一遍。图形界面点得再溜一进终端就发怵的人我见过太多了。终端并没有那么可怕它只是换了一种交互方式核心逻辑反而更直白把人要做的操作用命令告诉系统去执行。这30个命令就是我和命令行打交道多年后最想推荐的最小必要集覆盖日常文件管理、日志排查、资源监控、打包发布这些高频场景。1. 终端玩法变了但命令行思维没变先搞懂三件事再做命令党1.1 为什么终端在今天依然是必学技能有人会觉得现在Linux发行版的桌面环境做得挺好了文件管理器、任务管理器、系统监视器一应俱全为什么还要记命令我一般用一个例子回答假如你手里有100个文件要把其中所有名为photo_*.jpg的文件统一改成img_*.jpg用图形界面一个一个重命名至少得折腾半小时。而命令行动手只需要一行rename或者一个循环。更深一层的原因是服务器环境几乎没有图形界面可言。你买了云主机、租了远程节点摆在你面前的通常只有一个SSH终端窗口。不会命令行就等于不会操作这台机器。再往大了说脚本自动化、定时任务、日志分析、服务排查这些工作本质上都是命令的排列组合。图形界面适合点一点看看状态命令行适合精确地做成一件事情两者不是替代关系而是互补关系。1.2 命令的三段式结构与man命令要玩转终端先理解命令的通用结构命令本体 选项 操作对象。比如ls -l /var/log这一行ls是命令本身-l是选项让输出变成长格式/var/log是操作对象。绝大多数命令都逃不开这个骨架个别命令的选项可以组合比如ls -lah等同于ls -l -a -h。说到这儿必须把30个命令里的第一个请出来man。它的全称是manual用法极其简单——man ls然后屏幕上会展示ls的完整手册按q退出。有些新手不知道在man页面里怎么翻页其实方向键上下滚动、空格翻下一页、/搜索关键词、q退出就这四个操作。我强烈建议你养成一个习惯接到一个不熟悉的命令第一反应不是去搜索引擎里翻博客而是先跑man 命令名。虽然手册英文居多但内容权威、参数完整比网上很多二手教程靠谱得多。man本身不算花哨却是所有命令的老师所以它必须排在30个命令的第一个。另外在进入下一节之前请在心里记住两个符号和|。叫重定向作用是把命令的输出写进文件|叫管道作用是把前一个命令的输出当作后一个命令的输入。它们是后面所有组合玩法的地基。2. 文件和目录操作从增删改查闭环开始这一组包括9个命令pwd、cd、ls、mkdir、touch、cp、mv、rm、find。它们解决的是我在哪、这里有什么、怎么创建、怎么移动、怎么删除、怎么查找这些最基础的问题。相信我把这9个练成肌肉记忆你在终端里就已经不是纯新人了。2.1 定位与查看pwd、cd、lspwdprint working directory用来打印当前所在目录的绝对路径。它的使用场景很明确当你从一个目录不断深入之后往往会迷失方向尤其是有软链接、符号路径存在的情况下pwd能帮你确认当前到底站在哪个位置。这里有个小细节默认的pwd显示逻辑路径如果当前目录是通过符号链接进入的它会显示链接路径但pwd -P可以显示物理真实路径。排查路径问题时这两个结果不一样的情况经常让人掉坑。cdchange directory是切换目录的命令用法不用多说。我想强调三个快捷写法cd ~回到当前用户的家目录cd -回到上一次所在的目录cd ..返回上一级目录。其中cd -是我在工作里用得极其频繁的一个操作在两个目录之间来回切换时它省掉了重新打一长串路径的麻烦。需要留意的是cd命令的选项很少工作日常用的就是路径跳转。lslist是列出目录内容。我最常用的组合是ls -lah-l列出权限、属主、大小、修改时间等详细信息-a显示隐藏文件以.开头的文件-h把文件大小显示成人类易读的KB/MB/GB。很多人到了这一步就结束了但我想提醒一个实用细节如果你想要按时间排序在完整信息列表下加-t比如ls -lah --time-stylelong-iso这在找刚刚被改过哪个文件时特别好用。2.2 创建、复制、移动、删除mkdir、touch、cp、mv、rmmkdir创建目录最重要的选项是-p一次性创建多级目录。举个实际例子mkdir -p data/2025/01执行一次就会连父目录带子目录全部建好不会因为中间目录不存在而报错。如果在脚本里建目录我几乎总会在mkdir后面加-p这是防御性写法目录存在时它不会报错不存在时自动帮你建。touch创建空文件的用法大家都会但我更常用它的另一个用途更新时间戳。当一个文件或目录需要刷新访问时间、修改时间时touch file就能做到。很多构建工具、日志轮转脚本里都会靠touch来触发某些文件变化知道这个底层动作遇到什么都没变但这几个时间变了的现象时就不会觉得玄乎了。cp复制文件或目录。复制单个文件直接cp 源文件 目标文件复制整个目录必须加-r否则会报错。我推荐你直接记cp -a这个组合-a等于-r再加保留权限、属主、时间戳等全部属性做整目录备份时最合适。第一次用cp的人经常会问为什么复制目录老是报错其实就是差一个-r的事情。mv移动文件或目录但它有个巧妙用途在同一目录内mv oldname newname就是重命名。所以mv命令是移动和重命名一体的。在跨文件系统移动时它可能先复制再删除速度会变慢但行为上你不用关心交给系统处理就行。rm删除这是所有命令里最需要敬畏感的一个。rm -rf这个组合-r递归删除目录内容-f强制不询问一旦路径写错就可能把整个项目甚至系统删掉。我的实操经验是第一生产环境的删除命令里路径务必写绝对路径写完后看一眼再回车第二重要数据提前备份或者用带回收站机制的替代方案第三尽量别在root状态下跑rm。这个命令本身很简单风险全在使用者的纪律。2.3 用find找文件别靠肉眼翻当你面对一个几百GB的项目目录想找某个文件时ls加通配符已经不管用了该find上场。find的常用组合大概是这样的find . -name *.log在当前目录递归查找所有log文件find /var/log -type f -mtime 7查找7天前被修改过的文件find . -size 100M查找超过100MB的大文件find . -type d -name node_modules查找所有名为node_modules的目录。注意find查找的是文件系统的实时状态不是字符串匹配所以它比很多IDE内置的全局搜索更底层、更灵活尤其是在服务器上定位大文件、清理缓存时find是不可替代的。还有一个小组合我也常用find . -name *.py | xargs grep TODO。xargs会把前一个命令输出的每一行作为参数传给后面的命令这样就能在所有Python文件里搜索TODO标记。xargs虽然没进我这30个名单但你迟早会想学它。3. 文本查看与管道玩法终端效率的真正分水岭这一组是11个命令cat、less、head、tail、grep、wc、sort、uniq、cut、tr、tee。为什么单独开一章因为Linux文件的世界里文本占据了绝对主流日志、配置、脚本、数据文件全都可以用文本命令处理。学会了这一组你才真正开始感受到命令行的威力。3.1 从cat到less从head到tailcatconcatenate的原始作用是拼接文件比如cat a.txt b.txt c.txt。但日常更常用的是快速查看小文件的内容。一旦文件行数很多比如几百行以上cat会把所有输出直接砸到终端上屏幕滚动根本来不及看。这时候要用less。less是一个分页查看器它允许你上下滚动、搜索、翻页而且加载大文件非常高效。文件再大也不必担心一次性读入内存。进入less之后/可以搜索n跳到下一个匹配结果q退出。我习惯的用法是less -N 文件开启行号显示方便定位到具体行或者把行号告诉同事。head和tail分别查看文件开头和结尾。推荐用法head -n 20 file查看前20行tail -n 50 file查看最后50行。但tail有一个杀手级的选项-f。执行tail -f /var/log/syslog之后终端会保持跟踪状态文件有新内容写入时自动滚动显示这就是大家常说的实时看日志。排查线上问题时一边用tail -f盯着日志一边重现故障场景是最经典的调试姿势。停止跟踪按CtrlC。打个比方cat是翻开一本小册子从头看less是你能随意翻页甚至搜索的阅读器tail -f则像一场实况直播后续内容自己不停滚进来。3.2 管道五件套grep、wc、sort、uniq、cutgrep是文本检索的明星按行匹配模式。常用的选项有这么几个-i忽略大小写-n显示匹配行行号-r递归搜索目录-v反向匹配排除包含关键字的行-c统计匹配行数--include限定文件类型。比如排查一段日志中哪些请求返回了错误码grep ERROR app.log配合-n直接定位到报错行。如果没有重点概念看日志基本是瞎看有grep之后你可以在几十万行日志里瞬间捞出关键行。wcword count用于计数。最常用的参数是-l统计行数。例如grep ERROR app.log | wc -l输出这一天日志里ERROR出现的总行数。这也是脚本判断有没有异常的手段之一。sort排序uniq去重这两个组合起来才真正强大。sort默认按字典序排列数字排序要加-n反向排序加-runiq单独使用只能去掉相邻重复的行所以必须先排序再uniq才能去全局重复。最有用的组合是sort | uniq -c-c会统计每行出现的次数并给每行加上计数前缀。这个组合在统计日志里哪些IP访问最多、哪个错误码出现最频繁时无可替代。cut用来按列裁剪文本。最典型的是cut -d: -f1 /etc/passwd以冒号为分隔符取出第一个字段得到的是系统所有用户名。换成日志场景比如某行日志是IP 时间 状态用cut -d -f1可以只取第一列IP。配合sort和uniq就形成了一条简单但有效的统计流水线。这里给个真实例子统计access日志里访问量前五的IP。tail -n 10000 access.log | cut -d -f1 | sort | uniq -c | sort -rn | head -n 5从结果来看左侧就是访问次数右侧是IP地址前几名是谁一眼可见。这个一条龙组合里每条命令职责单一却通过管道完美协作软件工程的高内聚低耦合在终端里体现得淋漓尽致。3.3 tr和tee字符转换与输出记录trtranslate做字符层面的替换、删除。典型用法cat file.txt | tr a-z A-Z把小写全部转大写tr -d \r file.txt删除Windows换行符里的回车符这在处理不同平台间传递的脚本文件时经常救命。注意tr默认读标准输入所以它通常是管道的一部分而不是直接接文件名参数。tee的作用是分流它从标准输入读取内容同时写入标准输出和指定文件。最常见的场景是在跑一个长时间任务时既想在屏幕上实时看到输出又想把它完整保存到日志文件里。写法是command | tee run.log。如果你还想追加而不是覆盖加-a选项。有个细节我提醒一下tee不会影响管道的下一站所以command | tee run.log | grep success完全可以继续往下过滤输出。4. 权限与进程别让机器变成谁都能碰的裸奔现场这一组是5个命令chmod、sudo、ps、top、kill。文件和文本处理解决的是怎么操作数据这一组解决的是谁能操作、谁正在运行、怎么停下不该跑的进程。系统安全与稳定性全靠这几个命令撑起来。4.1 chmod与sudo权限位的边界感chmod修改文件或目录的读、写、执行权限。Linux里权限分成三组属主u、属组g、其他用户o每组三种读r、写w、执行x。数字表示法非常直观读是4写是2执行是1相加得到该组权限值。常见的chmod 755代表属主有全部权限7421属组和其他用户有读和执行权限541。脚本文件要能执行至少要x所以chmod x script.sh也是高频操作。一个真实教训有次我把一个包含数据库口令的配置文件权限设成了644这意味着同机器上的所有用户都能读它。虽然当时只是测试环境但这类习惯一旦带到生产环境就是严重的安全隐患。现在我的默认做法是敏感文件权限设成600仅属主可读写目录设成700仅属主可进入除非确有共享需求否则不轻易放开权限。下表是几个常用权限值建议贴在手边权限值属主属组其他用户常见用途600读写无无密钥、口令文件644读写读读普通配置文件700读写执行无无私有目录755读写执行读执行读执行可执行文件、脚本、公开目录sudo让你以另一个用户身份执行命令默认是root。它解决的问题是需要管理员权限时不至于裸奔用root。但我经常提醒身边的新手sudo不是免死金牌sudo rm -rf /该炸还是会炸甚至因为权限更大破坏性也更强。我的使用原则有两条第一能用普通用户完成的日常操作绝不加sudo第二必须加sudo的命令先想清楚命令立刻会干什么再回车执行。对sudo的谨慎本质上是对系统边界和自身操作风险的敬畏。4.2 ps、top、kill发现进程并优雅收尾ps用来查看当前进程的快照。最经典的组合是ps aux不加短横线逐行列出所有进程。输出里比较关键的字段有USER进程属于哪个用户PID进程号%CPU和%MEM占用率STAT当前状态COMMAND启动这个进程的命令。服务器上某个进程CPU飙到100%、内存暴涨第一时间就是ps aux找到可疑进程的PID。top是动态版的进程监控类似图形任务管理器定时刷新。在top界面里按q退出按M按内存排序按P按CPU排序按k可以输入PID并发送信号终止进程。如果默认的top界面信息太多输出有点杂乱可以重点看顶部几行的负载平均值和内存总量下面的进程列表看那个CPU占用率排第一的家伙是谁。kill用于向进程发送信号。这里有个常见误区以为kill就是杀死进程。其实默认的kill -15发送的是SIGTERM请求进程体面地退出、清理临时文件和释放资源只有进程软硬不吃时才用kill -9发送SIGKILL强制杀掉。我排查线上问题时的顺序永远是先kill -15 PID等几秒钟如果进程还在再kill -9 PID。动不动就-9虽然能达到目的但可能导致数据没来得及落盘留下后遗症。举个完整例子如果你的服务脚本挂死了可以这样定位和清理ps aux | grep my_service # 找到PID之后执行 kill -15 12345 # 过几秒没退出的话再执行 kill -9 123455. 磁盘空间与打包运维最常用却最容易掉坑的硬功夫这一组是3个命令df、du、tar。命令不多但它们牵扯一个高频事故磁盘满了。我处理过太多次这类告警每次排查思路几乎固定先df看分区再du揪出大目录最后按需清理或打包归档。5.1 df和du先看分区再看目录dfdisk free查看文件系统的整体使用情况。最常用的是df -h-h把容量显示成人类易读的GB加了这条看输出全是G和M不像默认的KB数多得吓人。执行后你会看到类似这样的表格文件系统、总容量、已用、可用、使用率、挂载点。注意有几个挂载点是虚拟文件系统不是真实磁盘重点是看挂载在/下的那一行。dudisk usage统计目录占用的实际空间。注意用户经常陷入一个误区直接用du统计整个根目录扫描速度非常慢。正确做法是逐层深入先看当前目录下每个子目录的大小再进入嫌疑最大的那个继续看du -sh *前提是先在目标目录下执行。其中-s是汇总当前层目录总大小-h是易读格式。磁盘告警的标准排查流程是先跑df -h确认哪个分区满了再进入该分区的挂载目录逐层du -sh *。三步之内就能锁定最大的磁盘杀手有时候是个日志目录有时候是个临时缓存目录。确认后删掉过期文件或者用tar打包归档到其他机器问题就解决了。5.2 tar打包压缩与解压一套参数带走tar是归档工具本身不做压缩真正的压缩由gzip完成但tar整合了两者。最常用的创建命令是tar -czvf archive.tar.gz /path/to/dir解压命令是tar -xzvf archive.tar.gz注意解压时如果希望释放到指定目录加-C 目标目录。这四个字母背后是四个参数c创建归档x解包z表示用gzip压缩/解压v显示处理过程中的文件列表f后面紧跟归档文件名。很多人会疑惑为什么要记顺序其实严格说tar的参数顺序有一定要求f后面必须直接跟文件名所以它被大家约定放在最后。一个比较隐藏的点是如果你的包是.tar.gz但扩展名写成了.tgztar同样按gzip处理这套参数不变如果是.tar.bz2把z换成j即可。解压之前有个安全习惯先跑tar -tzvf archive.tar.gz查看包内文件列表确认内容符合预期再真正解包。尤其从网上下载的压缩包先看看里面有没有奇怪的路径符号如../../避免解压时覆盖系统目录这是我多次踩坑后留下的条件反射。打包时还有个小技巧想排除某些大文件目录用--exclude参数比如tar -czvf archive.tar.gz --excludedata/cache /var/www。这样备份时既完整又不必把几G的缓存一起打包。6. curl从查接口到下文件以及几个我强烈建议补学的终端习惯最后一组只有一个正式入选命令curl。别嫌少curl一个顶好几条它能完成HTTP请求、下载、上传、接口调试几乎就是命令行里的浏览器。剩下的篇幅我想分享3个虽不在30个名单里、但效率收益极高的终端习惯顺手学会它们你的终端体验会上一个台阶。6.1 curl终端里的远程访问curl最基础的用法是直接跟一个URL把内容下载到标准输出。日常高频场景有三个第一curl -I https://example.com-I只获取响应头不拉取整个内容用来快速确认目标服务的状态码、Server类型、响应时间第二curl -O https://example.com/file.tar.gz-O把远程文件名保存到本地等价于命令行版下载文件第三调试API时curl -X POST -H Content-Type: application/json -d {name:test} https://example.com/api向接口发送POST请求把服务器返回的JSON直接打到终端上供你检查。接口出问题时我经常在服务器上用curl做最小化验证。比如怀疑某个服务挂了先curl -I 本地地址看是连接拒绝还是超时如果返回200说明服务本身活着问题大概率出在前面的代理或防火墙。这一步能快速缩小排查范围。还有一个细节自签名证书的HTTPS接口curl默认会拒绝调试时加-k可以跳过证书校验但就别指望它在生产场景里用那只是为了本地测试方便。6.2 30个之外的三个好习惯Tab补全、alias、historyTab补全不是一条命令却比很多命令都重要。输入命令路径时按一次Tab自动补全连按两次显示所有候选。我曾经见过有人还在手打systemctl然后试图背出服务名其实只需输入前几个字母然后按Tab系统会帮你列出所有可能项。这个习惯把记命令变成猜命令心理压力骤减。**alias别名**让常用长命令变短。在~/.bashrc里写上alias llls -lAh --colorauto重新加载后就能用两个字母完成原本一长串的操作。我个人积累了不少易用的别名alias ..cd ..、alias gsgit status、alias homecd ~。不过要注意别名不能覆盖到非交互式shell想让脚本也用得单独写在系统的profile里。history查看命令历史是我用来复盘操作痕迹的重要工具。直接敲history会列出所有执行过的命令配合grep搜索曾经用过的方法history | grep tar就能找出你以前是怎么打tar包的了。如果你想执行历史里第123条命令!123直接重新执行省去重新打一遍的麻烦。我自己的体会是把这30个命令串成肌肉记忆之后终端带给你的反馈是即时的、精确的也是图形界面很难替代的。别急着背先打开一个终端把第2章和第3章的命令逐个敲一遍遇到不会的选项就man一下再回来读这篇文章的其余部分信息的吸收效率会高很多。
阅读完成 · 觉得有帮助?
咨询建站