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

Linux 30个高频命令实战:文件、权限、进程、网络一网打尽

Linux 30个高频命令实战:文件、权限、进程、网络一网打尽 ★ FEATURED ARTICLE
很多人一听到Linux脑子里就是黑乎乎的终端、一串串看不懂的命令还没上手就先犯怵。我刚开始接触那阵子也一样鼠标用惯了一面对命令行就觉得自己像个打字员。后来折腾多了才发现真正难住我的不是命令本身而是不知道该先学哪些、学了之后能用在哪。这次我不铺开讲只挑30个最高频、最通用的Linux命令按场景拆开揉碎讲清楚每个命令解决什么问题、有哪些坑。这篇文章适合刚接触Linux的入门用户也适合那些用过一段时间、想把命令系统化的开发者。看完你不需要背任何手册直接照着用就行。1. 为什么锁定这30个命令1.1 好的命令选择比努力更重要Linux命令加起来有几百上千个真要把每个都记住既不现实也没必要。我见过不少人抱着《Linux命令大全》啃今天背这个明天背那个真到用的时候还是只会ls和cd。问题不在于记忆力而在于没有筛选。我选这30个命令的标准很直接日常使用频率高、几乎每个发行版都自带、互相能组合成更强大的操作。写代码要看日志部署要传文件排查问题要看端口和进程这些场景翻来覆去就是那几十个命令在打转。可以类比成开车你不需要会修发动机但起步、换挡、刹车、打灯这些基本功必须扎实。命令也一样先把高频动作练成肌肉记忆比知道一堆冷门参数有用得多。1.2 我的分组逻辑我把30个命令分成6组每组解决一类问题。分组的顺序不是按字母排的而是按“拿到一台陌生机器后你会做的事”来排的先看目录里有什么再操作文件然后查看内容、处理文本、设置权限、打包传输最后检查系统和网络。分组命令核心场景文件与目录ls cd pwd mkdir rm基本导航与目录管理复制移动与查找cp mv touch find file文件操作与检索文本查看与检索cat less head tail grep看日志、找关键词文本处理wc sort uniq cut diff统计、排序、比对权限与归档chmod chown tar zip unzip权限控制与压缩传输系统与网络ps top kill ping curl进程、负载、网络检查严格来说网络中像ss、netstat、df、du这些命令也非常常用我放在第7部分作为补充介绍不占30个名额。这样做的原因是先把最核心的东西讲透再往外扩展。1.3 先理解三件事在逐个学命令之前有三件底层的事建议先想明白。第一命令的基本结构可以理解成“动词副词宾语”命令本身是你要做什么参数是调整怎么做路径是操作谁。比如cp -r old_dir new_dircp是复制-r表示递归复制目录old_dir和new_dir分别是来源和目标。第二管道符|和重定向、非常关键。管道把左边命令的输出塞给右边命令当输入比如ls | grep log就是从ls的结果里筛出带log的文件名。重定向则是把输出保存到文件比如echo hello test.txt。很多看起来高级的操作其实就是把简单命令串起来。第三遇到不熟悉的命令先输入man 命令名或者用命令 --help让系统教你。我到现在查参数也经常靠这两个入口比自己硬背强太多。2. 文件与目录先把手感练出来2.1 进进出出、看看空间pwd cd lspwd、cd、ls这三个命令是整个终端操作的起点它们解决的核心问题是我在哪我能去哪这里有什么。pwd用于显示当前工作目录的绝对路径。刚上手时我经常搞不清自己飘到哪了尤其在多个项目目录之间切换后pwd一下心里就有底。cd用于切换目录最基本的用法是cd /home/user/project而配合特殊符号可以更高效cd ..回上一级cd ~回到当前用户家目录cd -回到上一次所在目录。cd -这个技巧特别适合往返切两个目录省得一次次敲绝对路径。ls是使用频率最高的命令没有之一。裸敲ls只能看到文件名配合参数才能看到更多信息。我给新人的建议是先记住三个参数ls -l查看详细信息ls -a查看隐藏文件ls -lh把文件大小显示成人类友好格式比如K、M、G。加个-l和-h组合很常用ls -lh出来的视觉效果比裸ls舒服得多。很多人还会配置一个alias让ls默认等于ls -lh省得每次都敲。2.2 建目录、删目录顺手但不鲁莽mkdir rmmkdir用于创建目录。比如现在要建一个多级目录结构直接将mkdir a/b/c是行不通的因为父目录不存在。加上-p参数mkdir -p a/b/c会一次性把缺失的层级都建出来从写脚本的角度看也省了不少事。rm是这批命令里最需要警惕的一个。它用来删除文件或目录常用参数有-r递归删除目录、-f强制删除不提示。我见过不少新手上来就是rm -rf something结果误删了整个项目。不要怕用rm但要养成两个习惯第一删除前先ls确认路径第二能用mv移到临时目录就先不急着删留个后悔余地。我自己踩过一次坑rm掉一个配置目录才发现要回滚从那以后凡是拿不准的文件一律先mv到/tmp。2.3 我对这套命令的使用习惯这套命令本身不复杂真正拉开体验差距的是使用习惯。比如说我一般会把家目录下常用的项目路径记住配合cd的Tab自动补全实际敲键次数能省一半。再比如说ls -l之后第一列显示的就是权限信息这里为后面讲chmod埋个伏笔。你现在看它只是一堆字母等学会chmod之后就能读懂了。还有个细节值得提终端里敲路径时用Tab键可以补全。如果按一下没有反应说明可能有多个匹配再按两下会列出候选。很多人看似输命令很快其实大部分时间在补全上省掉了。3. 复制移动与查找文件操作的组合拳3.1 cp mv touch 三兄弟cp用于复制文件或目录。最基础的用法是cp 源文件 目标文件但真正要用的是它处理目录的能力。直接cp -r 目录1 目录2可以递归复制整个目录想保留文件原有的权限和时间戳就加-p想完整复制目录属性直接cp -a。初学时最容易踩的坑是复制目录忘了加-r系统直接报错告诉你“略过目录”。这不是系统问题就是参数不到位。mv用于移动或重命名文件。mv old.txt new.txt是改名mv file.txt /home/user/doc/是移动。它还有一个隐藏属性跨文件系统时mv实际上是“复制删除”所以大文件跨分区移动时会感觉到耗时别误以为卡住了。mv默认在目标文件存在时会直接覆盖某些交互式shell配置可能不会提示建议养成加-i的习惯覆盖之前问自己一句。touch有两个用途。最常见的用途是创建空文件touch new_file.txt想快速建文件时比编辑器方便。第二个用途是更新文件时间戳在个别构建脚本里会用到。对日常操作来说把touch当作“快速生成一个文件”的工具就够用了。3.2 find最被低估的查找命令find是查找文件的利器也是新手普遍用不明白的命令。很多人的第一反应是用find / -name xxx全局搜结果扫全盘慢得让人崩溃。正确的思路是先缩小范围在哪个目录下找、找什么类型的文件。基本语法是find 路径 条件。按文件名找用-name比如find ./src -name *.js会在当前目录的src下找所有js文件。按类型找用-typef代表文件d代表目录。按大小找用-sizefind /var/log -size 100M能找出超过100M的大文件清理磁盘时很好用。按修改时间找用-mtime-mtime -7表示7天内改过的文件。find最强的部分是它可以直接对结果执行命令。写法是find 路径 条件 -exec 命令 {} ;比如批量修改文件权限。我建议新手先别急着上-exec先用find把文件筛选出来配合管道加xargs慢慢玩。还有一条实用提醒凡是涉及删除或覆盖的批量操作先去掉真实执行参数跑一遍让find只打印结果确认无误再执行。这个习惯能救你无数次。3.3 file别被扩展名骗了file命令用来识别文件真实类型。它不看扩展名而是通过文件内容特征判断。我从网上下一段数据下载文件名是data.bin但我不知道它是文本、压缩包还是图片敲一下file data.bin就能看到真实类型。排查问题时这个命令特别管用比如怀疑配置文件格式错了file一下就知道它到底是UTF-8文本还是带BOM的二进制。配合前面几个命令你已经有能力处理文件层面的常规操作了。实际工作里这些命令经常在Shell脚本里组合使用find筛出文件file确认类型mv归档一套流程下来就比点击鼠标高效太多。下一部分进入文本内容操作那是更值钱的部分。4. 文本内容查看与检索读文件的一百种姿势4.1 直接看、分页看、只看头尾查看文件内容有几个常用命令适用场景不同。cat用于查看小文件直接输出全部内容。它配合-n参数能显示行号排查配置时偶尔用得上。但cat有个明显短板文件一大超过终端一屏的内容会刷得飞快看完第一行就得往上翻半天。这时就该用less了。less适合阅读大文件支持翻页和搜索。进入less之后按空格键往下翻页按b往上一页按q退出。最实用的是搜索按/输入关键词回车就能定位到匹配位置再按n跳到下一个匹配项。看日志、看系统配置文件时这套操作手感非常好。如果只想知道头部或尾部的少量内容用head和tail。head -n 20 config.conf显示前20行tail -n 30 debug.log显示最后30行。后者的高频场景是日志追踪tail -f app.log会持续刷新文件新增内容你开着这个窗口就能实时看到程序打出的日志。而且-f加grep的组合更加能打下一节细说。4.2 grep在一堆内容里挑你要的grep是文本检索命令它的核心作用是从文件或命令输出里筛查包含指定模式的行。最简单的用法是grep error app.log只看包含error的行。几个参数很常用-i忽略大小写-n显示行号-r递归搜索目录-v反向匹配排除掉包含关键字的行。还有-E可以启用扩展正则做复杂模式匹配时离不开它。我举一个实际例子。排查一个服务为什么启动失败日志文件几千行肉眼翻会疯。直接grep -n ERROR app.log把错误行的行号先找出来然后配合sed或直接用less定位到那一带问题往往一眼就能发现。更妙的是grep可以直接吃管道输入前面任何命令的输出都可以塞给它筛一遍这也就是为什么在终端里filter这个动作永远绕不开grep。4.3 几个实用的组合命令单独用只是零件组合起来才是武器。我在日常排障中本高频的三个组合第一个是tail -f app.log | grep ERROR实时盯着日志里的错误输出排查线上问题时基本是标配。第二个是ps aux | grep java查某个进程是否在运行新手也常用但要注意grep自己也会被匹配出来多一行无关输出属于正常现象。第三个是history | grep rm可以翻自己以前敲过的命令找回某条操作记录。这些组合的价值在于不需要掌握什么复杂语法把已有命令拿管道连起来就是新能力。这也是我一直建议初学者尽早理解管道的原因它和加油是同样级别的基本功。5. 文本处理四件套统计、排序、切分、比对5.1 wc sort uniq三件套做统计处理数据时wc、sort、uniq这三个命令经常串起来用。wc -l file统计行数wc -c统计字节数wc -w统计单词数。我用到最多的是统计文件行数比如一个数据文件到底导入了多少条记录wc -l一下就出来了。sort默认按字典顺序排序但对数字排序要加-n否则“10”会排在“2”前面。想按某列排序用-k 2指定列想倒序用-r。uniq用于去重但它有个重要特性只能去掉相邻的重复行。所以正确用法是先sort再uniq绝不能让没有排序的文件直接上uniq。真正的统计利器是uniq -c它会在每行前面显示出现次数。再配合sort -nr按次数倒序就能得到出现频率最高的结果。经典案例是统计访问日志里出现最多的IPcut -d -f1 access.log | sort | uniq -c | sort -nr | head -10。这一行没有一句废话从提取IP到去重计数到排序取前10全搞定。cut命令下一节讲这套组合可以说是文本处理的浓缩精华。5.2 cut按字段切列cut用于按分隔符或字符位置截取文本列。最常用的是-d指定分隔符、-f指定取哪几列。比如cut -d, -f1 users.csv就是提取CSV的第一列。如果文件以空格分隔常用cut -d -f1取第一块。要注意的是空格作为分隔符时多个连续空格会被cut当成多个空字段结果经常不如预期。这种情况我更推荐用awk的默认分割方式awk {print $1}会更稳。awk不算在这30个必学命令里但它和cut的应用场景高度重叠属于值得顺带学一把的进阶命令。5.3 diff快速找出文件差异diff用于逐行比较两个文件输出差异并告诉你如何把文件A变成文件B。最基础的用法是diff file1.txt file2.txt输出里以开头的是file1的内容以开头的是file2的内容。直接看diff输出需要一点适应我个人的经验是加-u参数使用统一格式显示上下文阅读体验好很多。不少编辑器和小工具也都是基于这个格式展示差异的。diff最常见的场景是配置对比我改了一个配置文件用diff old.conf new.conf看看到底动了哪些行比人眼扫两遍文件高效得多。另外还有diff -r比较两个目录的差异批量核对目录同步结果时很好使。6. 权限与归档新手最懵的两个地方6.1 chmod权限到底怎么改Linux的权限模型用一句话说就是每个文件归一个用户和一个组所有系统用“所有者、所属组、其他人”三类身份分别设置权限。每类身份的权限是读、写、执行分别用r、w、x表示。ls -l第一列显示的就是这些信息比如-rw-r--r--表示这个文件所有者能读写组和其他人只能读。chmod可以改权限。最推荐新人使用数字模式读r4写w2执行x1把三者的和加起来作为一类身份的权限位。chmod 755 script.sh表示所有者是7读写执行组和其他人是5读执行这通常用于可执行脚本。chmod 644 file表示所有者可读写其他人只读非常适合普通文件。符号模式也好用它更直观chmod ux script.sh给所有者增加执行权限chmod g-w file去掉组的写权限chmod ar给所有身份加读权限。它适合单独调整一个权限位而数字模式适合设定完整权限。两种都要会用。6.2 chown改文件归属chown用于修改文件或目录的所有者和所属组。日常最常用的是把文件归属交给当前系统用户避免权限对不上。语法是chown 用户:组 文件比如chown admin:admin data.txt。只想改一个维度也行chown admin data.txt只改所有者。改目录时几乎总是带着-R递归参数chown -R admin:admin /home/admin/project。这里要提醒一个容易踩的坑递归改权限和归属虽然省事但会把所有子文件都改了某些特殊目录文件比如带setuid权限的二进制可能会因此出问题。所以执行前先看看目录里有什么别无脑挂-R。6.3 tar打包压缩的一把梭tar这个名字是磁带归档的缩写但今天它的用途早已变成打包和压缩。用法上只要记住三种模式打包压缩、解压、查看。打包压缩常用tar -czvf archive.tar.gz /path/to/dir。其中-c表示创建归档-z表示用gzip压缩-v显示详细过程-f指定归档文件名。-f必须放在参数最后因为它后面紧跟的是文件名这个位置错了命令大概率失败。解压对应的是tar -xzvf archive.tar.gz-x表示解压。若只想查看压缩包里有什么用tar -tzvf archive.tar.gz不真正解压。为什么服务器之间传文件尤其爱用tar因为它能把整个目录结构和权限一起保留传到目标端解压后和原目录基本一致。这在部署项目时太方便了。还有一条经验拿到一个.tar.gz文件先别急着解压用-t看一眼内部内容确认没搞错再下手。6.4 zip与unzip跨平台互传更保险tar.gz在Linux生态里很顺但要把文件传给Windows用户zip往往更友好。zip压缩目录时一定要加-r否则目录只会被压成一个空壳。常用写法zip -r archive.zip ./folder。unzip解压unzip archive.zip直接解到当前目录unzip archive.zip -d /target/dir指定解压路径。跨平台传文件还有一个现实问题Windows下自带的解压工具对tar.gz支持不稳定所以如果你要发给别人zip基本是零沟通成本的选择。反过来从网上下载的资源包大部分是zip格式unzip用得不少。7. 系统与网络打开你的工作台全景7.1 ps top kill进程管理的三件套ps用于查看系统当前进程快照。老牌用法是ps aux或ps -ef两者看到的都是全部进程的详细列表。列表里关键是PID进程号和COMMAND命令名其他列的CPU和内存占用也能直接看到。习惯上我用ps aux | grep keyword来定位某个程序是否在运行。top是一个动态的进程监视器会实时刷新。刚打开top时上半部分是系统负载、内存情况下面列表按CPU占用排序。按M键可以换成按内存排序按P键回到按CPU排序按q退出。排查服务器负载高的时候我通常先top看一眼哪个进程占资源异常高就记下PID。kill不是“杀掉”而是向进程发送信号。kill PID默认发送SIGTERM相当于礼貌地请求进程结束给它机会清理资源。只有等它不响应时才用kill -9 PID发送SIGKILL强制终止。新手往往一上来就-9这会丢失进程可能保存的数据。我的原则是先默认kill过几秒看还在不在再考虑-9。7.2 ping curl网络通断和接口验证ping用于测试主机连通性。Linux里ping默认会一直发下去不像Windows默认只发几次所以记得加-c限制次数ping -c 4 example.com。它能告诉你目标能不能通响应延时不延时。但不能指望它告诉你服务本身有没有问题端口不通也可能返回正常因为网络通但服务没起的情况太常见了。curl是网络请求工具我愿称之为终端里的浏览器。curl -I https://example.com只拿响应头适合看服务是否存活。curl -L -o page.html https://example.com/download会跟随重定向并把结果保存到文件。排查API时curl -X POST -H Content-Type: application/json -d {key:value} https://example.com/api也是一个基本动作。curl功能极强这30个命令里单论上限它很可能是最高的。7.3 另外3个值得马上知道的补充命令严格30个之外df、du、free这三个命令我认为入门后应该尽快补上。df -h查看磁盘分区使用情况du -sh directory快速统计某个目录总大小free -h查看内存占用和剩余。它们的用法几乎是固定搭配不需要太多解释但解决问题的效率极高。比如发现磁盘满了df -h找到挂载点du -sh看哪个目录占大头层层定位很快就能揪出元凶。8. 常见问题与排查技巧实录8.1 命令找不到不一定是命令不存在新人在终端里最常遇到的报错是command not found。看到这个提示别离谱它有两层可能一是系统确实没装这个命令二是命令装了但当前shell找不到。可以先试试绝对路径比如/bin/ls如果能执行就说明是PATH环境变量的问题。如果完全没有就要用包管理器安装对应软件包。还有一种情况是你在当前目录写了一个脚本想直接执行敲./run.sh却提示权限不够而不是command not found。这跟PATH没关系就是可执行权限没给到记得chmod x run.sh。区分这两类问题要靠经验积累但万变不离其宗把报错信息复制下来搜索比瞎猜快得多。8.2 权限不够怎么办Permission denied是另一个高频报错。处理思路分两步先看是谁缺权限。ls -l看文件所有者当前用户是否在所有者或组里其他人权限如何。如果是自己的文件缺权限用chmod补上就好。如果是系统文件通常需要提权执行sudo。但sudo不是万能钥匙它只是让命令以root身份运行能否成功还取决于操作本身是否合法。目录权限有一个容易忽略的细节要进入一个目录除了读权限r之外还必须拥有执行权限x。这就是为什么有些文件明明可读但cd一进去就被拒绝。给目录设置权限时644会让别人连进都进不去通常至少需要755。8.3 误删、误操作怎么救误删文件是每个用过终端的人都可能经历的。最实在的建议是发现误删后立刻停止在分区上进行写入操作越少覆盖越好同时检查有没有定期备份很多时候恢复靠的是备份而非恢复工具。我经历过一次误删后把每周自动备份这件事彻底提上了日程。防止误删还有一个更简单的技巧写危险命令之前先敲一遍到history里看看是否拼写正确特别是rm -rf这种名字。配合Tab补全能大幅降低少敲一个字母、删错目录的概率。就算要删除也尽量先mv到一个临时目录确认不再需要后再真正清理。8.4 一张终端速查表命令常用参数组合典型场景ls-lh看文件列表和大小cd- / ~ / ..切换目录pwd无确认当前路径mkdir-p建多层目录rm-r -f删除文件/目录cp-r -a复制文件/目录mv-i移动或重命名touch无快速建空文件find-name -type -size -mtime查找文件file无判断真实文件类型cat-n查看小文件less/搜索分页阅读大文件head-n看文件头部tail-f实时追踪日志grep-i -n -r -E检索关键字wc-l统计行数sort-n -r -k排序uniq-c去重并计数cut-d -f提取列diff-u比较文件差异chmod755/644x修改权限chown-R user:group修改归属tar-czvf / -xzvf / -tzvf打包与解压zip-r压缩为zipunzip-d解压zippsaux查看进程top交互键实时系统监控kill默认先15再9终止进程ping-c测试连通性curl-I -L -o请求接口最后分享一个我自己的小习惯不要怕在终端里犯错越怕越生疏。真正让一个人熟练起来的不是看了多少篇文章而是在真实场景里一次次敲命令、看报错、查手册。我现在遇到新工具第一反应永远是打开终端试一遍捅娄子也认但每次都会把教训记下来。这30个命令你先用起来慢慢就会发现终端没那么可怕它只是另一张更趁手的桌子而已。
阅读完成 · 觉得有帮助?
咨询建站