尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux入门三板斧:cat、more与终端快捷键详解

Linux入门三板斧:cat、more与终端快捷键详解 学Linux入门我见过太多人卡在第一个星期就放弃原因不是命令本身难而是压根不知道该先学哪几个。我自己带过不少新人反复验证下来最有效的路线是先把cat、more、快捷键这三样吃透后面无论是看配置、查日志、敲命令效率立刻跟没学过的人拉开差距。今天这篇就把这三个东西一次讲明白讲清楚它们各自解决什么问题、怎么用、有什么坑新手照着敲一遍就能上手。我不会给你甩一堆“Linux命令大全”让你背那是反人性的。我只讲入门阶段真正高频、真正绕不开的三板斧讲透它们的原理和场景剩下的等你有需求了自然会去查。1. 为什么入门阶段要先死磕这三个玩意1.1 三个命令各管哪一摊事先搞清楚一个底层逻辑Linux终端操作里最高频的动作不是“执行命令”而是“看东西”。你敲了ls要看目录里有什么配了环境变量要看有没有生效程序报错要看日志到底说了啥。这一切的起点都是把文件内容显示到屏幕上。而cat、more、快捷键这三样正好覆盖了“看内容”这个动作从简单到复杂、从低效到高效的完整链路。cat解决的是“看短文件”的问题比如看一个配置文件、看一个脚本开头几行more解决的是“看长文件不刷屏”的问题比如看日志、看系统信息快捷键解决的是“怎么让操作更快”的问题比如光标跳来跳去、历史命令翻找、中断卡住的进程。这三者的关系不是平行的而是递进的。你先把cat用熟发现它看长文件会刷屏自然就过渡到more你天天在终端里敲命令发现一个字符一个字符删太痛苦自然就想用快捷键。所以别把这三个当成孤立的命令学它们是一套组合拳。1.2 很多人学不会是因为顺序搞反了我见过不少新手一上来就背awk、sed、grep的组合用法结果连文件内容都看不明白越学越挫败。入门阶段真正该做的是先把“看”这个动作练到极致。正确节奏是第一周只用catmore 终端快捷键强迫自己不开图形界面编辑器所有查看操作都在终端里完成。等你哪天发现看大文件用cat刷屏刷得眼睛疼自然就会去翻less的文档等你发现CtrlR搜历史命令能省下半分钟自然就会主动找更多快捷键。带着痛点去学比对着文档背效率高十倍。另外提醒一句别急着装一堆终端增强工具比如tmux、zsh插件之类的。先把原生bash的快捷键用熟把cat、more这些基础命令的手感练出来再谈增强。基础不牢工具越花哨越容易翻车。2. 把cat命令吃透别只会cat一个文件名2.1 cat的全名和三大核心场景cat是concatenate的缩写本意是“连接”不是“看”。理解这个本源你才能明白它为什么既能看文件又能合并文件还能创建文件。第一个场景查看小型文本文件。这是最基础的用法cat /etc/os-release能看到系统版本信息。但注意cat的设计目的是把文件内容输出到标准输出它根本不关心文件多大。你拿它看一个200MB的日志终端就会疯狂滚动最后你看到的只有最后几屏内容前面的全被冲走了。所以它只适合看短文件这个定位要清楚。第二个场景合并文件。既然叫concatenate它天生就是干这个的。比如你有三个文本片断a.txt、b.txt、c.txt想把它们按顺序拼成一个文件一行命令搞定cat a.txt b.txt c.txt merged.txt。而且可以用通配符cat *.txt all.txt把所有txt文件按文件名顺序合并这在整理碎片化笔记时非常实用。第三个场景结合重定向创建小文件。cat note.txt然后输入几行文字按CtrlD结束就能快速建一个文件。这比用vim新建文件快得多尤其适合写临时备忘、快速生成一个测试文件。配合符号还能实现多行输入这个后面说。2.2 cat的常用参数每个都该知道直接上表格这几个参数是我平时用得最多的参数作用实际场景-n显示行号排查配置文件的报错行-b只给非空行编号看代码关注有效行-A显示所有不可见字符包括行尾符和Tab排查脚本里看不见的多余空格-s连续空行压缩为一行日志清理空行后阅读-E在每行行尾显示$看有没有行尾多余空格其中-n和-A是我在排障时使用频率最高的两个。举个例子你写了一个shell脚本执行时报“bad interpreter”这时候cat -A script.sh就能看到脚本第一行有没有不可见的^M字符这个字符是Windows换行符残留Linux下经常因为它出问题。-A参数跑出来的结果里$表示行尾^I表示Tab键^M是Windows的CRLF换行符。这几个符号一眼就能看穿文件里藏着的“脏东西”。2.3 实操演示用cat查看系统关键信息我建议新手第一天就在终端里依次跑一遍下面几条命令感受一下cat的用途cat /etc/os-release # 看系统发行版名称和版本号 cat /etc/hostname # 看主机名 cat /etc/passwd # 看系统用户列表 cat ~/.bashrc # 看当前用户的bash配置看到/etc/passwd的输出很多人会惊讶这文件怎么这么长而且每行都是一堆冒号分隔的字段。这就是Linux的核心哲学万物皆文件用户信息也是纯文本存的所以cat才能直接看。但这里就暴露了cat的尴尬/etc/passwd还行几十行能看完但如果你cat一个几千行的配置文件屏幕刷得你根本来不及看。这就是下一个主角more出场的原因。3. more命令与分页查看的完整姿势3.1 more和cat的分工短文件直出长文件分页一句话讲清楚cat适合内容少、一屏能看完的文件more适合内容多、需要一页一页翻的文件。more的核心机制是“分页显示”它把文件内容按终端窗口高度切成若干页每次只显示一屏看完一屏按空格看下一屏。这个机制听起来简单但在看日志、看源码、看系统配置时能救你眼睛。比如你想看nginx.conf的全部内容如果直接cat几百行的输出瞬间刷过去你什么也记不住。用more /etc/nginx/nginx.conf它先显示第一屏然后停下来等你操作你按一页看一页节奏完全由你掌控。3.2 more的核心操作键按一遍就记住按键作用空格向下翻一屏Enter向下翻一行适合精读b向上回翻一屏/关键词在文件里搜索按n跳到下一个匹配q退出查看回到终端提示符注意一个关键细节more看完会自动退出但如果你按了q提前退出它也会干净利落地回到提示符不会留下乱七八糟的输出残留。这和cat刷屏之后光标位置乱掉的情况完全不一样。在more里按/加上关键词它会像grep一样帮你定位但不会跳出来而是在当前文件里移动。比如查看日志时输入/ERROR按n就能连续跳到下一个ERROR出现的位置排障效率直接拉满。3.3 实操演示用more查看日志文件假设你现在要排查一个服务为什么起不来日志在/var/log/app.log这是最典型的more使用场景more /var/log/app.log先大体翻一遍看到某一行有异常想回看前面几行的上下文按b回翻一屏再空格前进反复几次就能定位到问题区间。如果日志太大先进入more后用/timeout搜索按n在各处跳转比人肉滚动快得多。还有个进阶场景别的命令输出太长也可以管道给more比如ls -l /usr/bin | more目录列表太长时这样看。这个组合拳的思路要建立起来凡是输出会超出一屏的命令都可以在后面加| more来分页。3.4 顺便说下less它才是终极大佬more这个名字起得很诚实“就这么多功能”。它有一个增强版叫less名字来源于一句玩笑话“less is more”但功能实际上是more的超级加倍。less支持上下方向键逐行滚动、PageUp/PageDown翻页、/和?前后搜索、甚至g跳到文件开头、G跳到文件末尾。我不建议新手一上来就学长篇大论的less操作但有一条命令值得现在就记住less /var/log/app.log。如果哪天你发现more的操作不够用比如想往上翻几行又不想整屏回翻直接换成less就行它的操作键大部分和more兼容学习成本极低。4. Linux终端快捷键效率翻倍的秘密4.1 命令编辑类快捷键改错行不用一个个删很多人刚用终端时修改命令的方式极其原始按退格键一个一个删删完了重新打。如果一条命令长一点这操作能让人崩溃。其实bash内置了一套基于readline库的快捷键全部是Emacs风格用熟了之后光标能像在编辑器里一样随意移动。这是我个人的高频快捷键TOP5快捷键作用Ctrl A光标跳到命令行开头Ctrl E光标跳到命令行结尾Ctrl U删除光标之前的所有字符Ctrl K删除光标之后的所有字符Ctrl W删除光标前的一个单词按空格分词情景演示一下你打了一条命令sudo apt install nginx发现开头少打了个sudo。正常操作是把后面全部删掉重打但按一下CtrlA光标直接跳最前面补上sudo再按CtrlE跳回结尾回车执行不到两秒完成。另一个高频场景是CtrlU。你输了一长串命令发现前面错得离谱与其狂按退格不如CtrlU一键清空重新来。这个快捷键在密码输入错误时尤其救命系统不会回显密码字符你只能靠猜删半天还不确定删到哪里了干脆一键全清。4.2 历史命令与搜索重复执行命令的捷径在终端里敲过一次长命令第二次还要敲一遍完全没必要。bash会把你的历史命令存起来用上下方向键就能逐条翻找。但方向键翻找太慢尤其历史命令几百条的时候。真正高效的是CtrlR它进入反向搜索模式你输入几个关键字bash会实时匹配最近一条包含这些关键字的命令。比如你想找上次执行过的那条docker compose up -d按CtrlR输入compose回车即可复用再按一次CtrlR继续往前找更早的匹配。history命令本身也值得了解它会列出所有历史命令并带序号。如果你想精确执行第120条命令可以输入!120直接执行。这个技能在复现操作时很实用。另外!!代表上一条命令比如你apt install nginx时提示权限不够加上sudo !!就直接用sudo权限重跑上一条命令不用重新打一遍。4.3 进程控制类快捷键别让卡住的命令一直霸屏这三个快捷键是保命级的每个新手都应该刻在肌肉记忆里快捷键作用Ctrl C发送中断信号(SIGINT)终止当前正在运行的前台命令Ctrl Z发送挂起信号(SIGTSTP)把当前命令暂停并放到后台Ctrl D发送EOF输入结束信号不是终止进程是告诉程序“输入流结束了”最常用的是CtrlC。命令卡住了、日志刷屏了、程序进入了死循环按一下就能中断。这里有个重要的原理CtrlC发送的是中断信号而不是“强制杀死进程”。大多数命令行工具会响应这个信号并退出但如果程序自己屏蔽了SIGINTCtrlC可能没反应这时候才需要kill -9出场。CtrlZ的语义是“暂停”而不是“结束”。比如你正在执行一个耗时命令突然临时想看另一条命令按CtrlZ把当前任务挂起执行完别的再用fg把它恢复回前台。这套操作配合bg命令能实现简单的任务前后台调度。CtrlD很多人容易和CtrlC搞混。CtrlD不是杀死进程而是发送EOF标识。最典型的场景是在终端输入内容时比如用cat file.txt创建文件输入完毕按CtrlD表示“我说完了结束输入”文件就会保存。如果你直接关终端窗口没有正常发EOF某些程序可能会残留未完成状态。4.4 清屏、补全和粘贴每天用一百次的快捷键CtrlL清屏这个比输入clear快得多而且不会新建一大段空白历史记录执行后终端整洁还能保留当前已输入的内容。Tab键自动补全这是Linux终端最伟大的快捷键没有之一。输入systemctl时敲sys按Tab直接补全如果前面有几个匹配项按两次Tab会列出所有选项。这个习惯从第一天就养成能有效减少拼写错误——手动输错文件名导致“No such file or directory”的问题基本都能通过Tab补全避免。最后是复制粘贴。在大多数终端里CtrlC和CtrlV不是复制粘贴CtrlC是中断信号这点让Windows转过来的用户极其痛苦。平时代码块的复制粘贴用鼠标选中即复制鼠标中键或ShiftCtrlV粘贴在Gnome Terminal、Konsole、iTerm2等主流终端里都适用。如果你用的终端支持也可以自定义CtrlShiftC和CtrlShiftV但不要覆盖掉默认的CtrlC。5. 新手最容易踩的坑与排查技巧实录5.1 cat重定向误覆盖文件血泪教训这是我用cat以来踩过最大的坑也是很多新手会踩的cat file.txt这个命令会覆盖文件原有内容而cat file.txt是追加。曾经有一次我想往配置文件末尾加一行手滑用了单括号结果整个文件被我清空了系统服务直接起不来当时又没有备份只能从版本控制里恢复重写。所以这里立个规矩凡是往已有文件里写内容默认检查两边是不是。更稳妥的做法是操作前先cp file file.bak备份一份几秒钟的事能避免绝大部分事故。另外cat重定向创建文件时如果文件不存在它会创建如果文件存在单括号会先清空再写入这个过程没有任何确认提示千万要养成先备份的习惯。5.2 快捷键“失效”的真凶和解决办法你按CtrlC发现命令没被中断按CtrlR发现没反应不一定是快捷键失效了很可能是终端模拟器设置冲突或者当前上下文不支持这个操作。第一个常见问题是终端模拟器内置快捷键抢占了bash的快捷键。比如某些终端把CtrlR绑定为“搜索终端输出”这时候bash就收不到这个键位。解决办法是去终端的快捷键设置里查找冲突把终端层面的绑定改掉或禁用让bash拿到输入焦点。第二个问题是CtrlS导致的“假死”。在bash里按CtrlS会锁定终端输出像卡死了一样无论你怎么敲命令都没反应。这是软件流控制的保留键位解决办法是按CtrlQ解除锁定。很多新手以为终端坏了直接关窗口其实是误触了CtrlS。第三个问题是CtrlD在某些交互程序里的行为不一样。比如在python交互环境里按CtrlD会退出python在cat file里表示结束输入在普通bash提示符下按它会直接退出当前shell会话。如果你不想关终端就别在默认提示符下按CtrlD。5.3 more里的迷路和搜索失败用more看文件时最常见的困扰是文件比较长翻了几十页忘了自己看到哪里也不知道还有多少内容。这时候可以按查看当前阅读进度百分比至少心里有个底。另一个问题是搜索失败。在more里输入/keyword后如果提示Pattern not found有几种可能关键词拼错了、文件里确实没有这个词、或者你当前所在的区域已经被搜索过而且没有匹配项。可以先按g回到文件开头再重新搜索。还有人容易在more里误按其他键比如按到v这会调用系统编辑器打开当前文件新手看到突然变成编辑器界面会慌。这里不需要担心直接输入:q!退出编辑器就能回到more的分页界面。问题原因解决办法cat大文件刷屏cat不区分文件大小改用more或lesscat file清空了文件重定向覆盖无确认操作前备份使用追加按CtrlS终端卡死软件流控制锁定输出按CtrlQ解锁CtrlC无法中断程序程序屏蔽了SIGINT用kill -9强制结束CtrlD退出了shellEOF信号在提示符下避免按它more里按无反应部分简版more不支持使用less替代6. 一些不太起眼但很实用的经验最后分享几个我实际摸爬滚打攒下来的小经验可能不系统但每一条都在关键时刻帮过我。第一个经验cat和grep搭配是排障组合拳。不用先cat整个文件再翻着找关键词直接用cat /var/log/syslog | grep error就能过滤输出。但如果文件很大建议直接grep命令本身因为grep的检索效率比cat管道更高除非你还需要在结果里上下翻看。第二个经验快捷键不要试图一次记住全部每天只强制自己用三个。比如今天只用CtrlA、CtrlE、CtrlU明天再加CtrlW和CtrlR两周下来肌肉记忆就形成了。用一次记住一次比背十遍列表都管用。第三个经验more和管道结合时要多留个心眼。ls -l /usr/bin | more这种命令管道右侧的更多输出可能不会完全进入more的分页控制如果你发现内容只显示了一部分先检查是不是有命令提前退出了。把管道两边的命令拆开单跑一遍能快速定位问题出在哪边。回头看这么多本质上是把“怎么在终端里看内容”和“怎么让终端操作更顺手”这两件事讲透了。cat、more、快捷键是这个能力的最小闭环学完就能舒坦地跟命令行打交道。等这层基础牢固了再去啃grep、sed、awk这些文本处理利器你会发现一切都顺理成章。
返回列表