Linux命令小白前期不完整汇总:高频核心命令与实战避坑
发布时间:2026/10/8 3:39:18 锦皓数字建站

1. 为什么你需要一份不完整的命令汇总表先说明白一个事实Linux命令是背不完的。我在运维岗位上干了这么多年到现在遇到没见过的命令、没见过的手册页依然是常态。系统里光/usr/bin目录下就有上千个可执行程序没人能全记住。所以当你看到这份标题里带着小白前期和不完整的汇总表时恰恰说明它定位对了——它不是为了穷尽所有命令而是为了帮你把最核心、最高频、最容易踩坑的那部分先建立起来。这份内容适合谁刚接触Linux、准备转行运维或开发、正在准备面试、或者工作中被迫要用服务器但一头雾水的人。它能帮你解决几个非常具体的问题第一文件与目录操作不再抓瞎起码知道ls、cd、rm、cp这些命令该怎么组合使用第二学会看参数与命令输出而不是对着满屏英文发愣第三理解命令、参数、解释三者之间的关系以后再遇见新命令时具备自学拆解的能力。一句话概括这份表不是终点是你从完全不敢敲命令到敢上手试的过渡桥梁。有人可能觉得我图形界面用得好好的干嘛非要记命令。这个问题我在面试新人时经常听到。实话说生产环境里的服务器绝大多数是纯命令行界面你不可能给每台服务器都接个显示器打开桌面。更重要的是命令相比鼠标点击有天然优势可组合、可脚本化、可远程执行。一条find /var/log -name *.log -mtime -7就能帮你筛出七天内改过的日志文件这在图形界面里要翻多少层目录才能完成所以命令不是退步恰恰是效率工具。2. 先搞懂Linux命令的三层底层逻辑2.1 一切皆文件所有命令都是程序Linux最核心的设计哲学就是一切皆文件。你看到的普通文件、目录、硬盘设备、终端窗口、网络套接字在系统底层都被抽象成文件或类文件对象。理解了这一点很多命令行为就说得通了。比如你用cat能看文本文件用cat也能看/proc/cpuinfo这个虚拟文件获取CPU信息因为后者本质上也是文件。用ls -l /dev/sda看到的块设备文件它的属主、权限位显示方式和普通文件完全一样。基于这个模型命令本身也只是一个存放在/bin、/usr/bin、/usr/local/bin等目录下的可执行文件。命令名就是把对应文件跑起来的过程。你甚至可以用which ls查看ls命令究竟藏在哪个路径用file /bin/ls查看它是什么格式的可执行程序。把命令视为文件你在使用cp、mv、rm时才会明白复制命令等同于复制程序文件删除命令等同于删除一个可执行程序。很多小白问为什么命令能执行我却找不到它答案就是它被放在了PATH路径之外的目录里。2.2 参数、选项与环境的组合关系一条完整的命令通常长这样命令名 [选项] [参数]。例如ls -l /home其中ls是命令名-l是选项/home是参数。选项的作用是调整命令行为比如ls -l用长格式显示详细属性ls -a显示隐藏文件两者可以合并写作ls -la。参数则是命令操作的对象可以是文件名、目录名、IP地址、端口号等具体取决于命令的设计。选项存在短选项和长选项两种形式。短选项是单个字母用单个短横线连接如-l、-a长选项是完整单词用双短横线连接如--all、--human-readable。核心原则是短选项适合日常快速敲击长选项适合脚本中保证可读性。环境变量则决定了命令运行时的外部条件比如PATH决定了去哪儿找命令LANG决定了输出语言HOME决定了当前用户的家目录路径。我经常跟新人说排错时先看三件事命令存在吗、权限够吗、环境对不对。2.3 管道与重定向命令的组合拳能力单个命令能力有限但用管道把它们串起来就威力倍增。管道符|的作用是把左边命令的输出作为右边命令的输入。比如ls -l | grep ^d可以筛选出当前目录下的子目录cat access.log | awk {print $1} | sort | uniq -c可以统计日志中出现过的IP次数。重定向则控制数据流向把命令输出写入文件覆盖追加写入21把标准错误合并到标准输出从文件读取输入。我见过不少新手把和搞混结果辛苦生成的数据被覆盖悲剧了。记住一个判断方法凡是保存结果用或凡是读取内容用。3. 高频核心命令详解文件与目录操作3.1 查看与定位ls、cd、pwdls是使用频率最高的命令没有之一。常用组合ls列出文件名ls -l显示权限、属主、大小、修改时间ls -a显示隐藏文件以点开头的文件ls -lh中的h参数把文件大小显示为人类易读的4K、1.2M、3.5Gls -lt按修改时间排序最新的在前ls -R递归列出子目录内容。我个人最常用的组合是ls -lht一条命令就能看到当前目录下哪些文件最新、多大体积满屏都是有效信息。cd是切换目录的命令。cd /etc绝对路径切换cd ..返回上级目录cd ~回到当前用户家目录cd -返回上次所在目录——这个参数在日志排查时非常有用你能在两三个目录之间来回跳。pwd显示当前所在路径当你迷失在多层目录结构中时敲一下pwd立刻找回坐标。还有个容易被忽视的小细节cd命令不会输出任何成功提示如果路径不存在才会报错。所以脚本里要在cd后面加判断避免目录切换失败后继续执行命令操作了错误的目录。3.2 增删改查四件套cp、mv、rm、mkdirmkdir创建目录mkdir -p a/b/c可以一次性创建多级目录没有-p参数在父目录不存在时会直接报错。touch创建空文件或更新时间戳调试时常用它快速生成测试文件。cp复制文件cp file1.txt file2.txt复制并重命名cp -r dir1 dir2递归复制整个目录。这里必须强调复制目录时漏掉-r命令会直接拒绝报错信息omitting directory。mv移动或重命名文件。移动文件、重命名文件都靠它且它不需要加递归参数。mv后面接目录时可以直接移动整个目录。有个实用细节mv在同一文件系统里本质上是改个路径记录速度极快跨文件系统移动则是复制再删除。rm删除文件rm -r递归删除目录rm -f强制删除不询问、不报错。这条命令是著名的高危操作尤其rm -rf配合通配符使用一个手滑可能把重要数据清理干净。我在生产环境里的铁律是执行带-rf的命令前先ls确认目标内容再执行没有例外。3.3 查看文件内容cat、less、tail、headcat适合查看小型文本文件如cat /etc/hostname。它会把文件所有内容一次性输出文件一大屏幕就刷屏。less则是查看大文件的利器支持上下翻页、搜索用空格下翻一屏b上翻一屏/关键词搜索q退出。head -n 5 file查看文件前5行tail -n 20 file查看末尾20行。日志排查场景中tail -f是神器它能持续跟踪文件末尾追加的内容相当于实时监控日志输出。比如调试Web服务时开一个终端窗口运行tail -f /var/log/nginx/access.log刷新页面时就能看到新日志逐行滚出问题当场定位。这里补充一个参数理解的小技巧-n后的数字可写可不写不写默认10行。参数默认值这个概念很关键很多命令不给参数会有默认行为理解默认值能帮你判断命令为何这样输出。3.4 查找文件与内容find、grep、whichfind是查找文件的命令基本用法是find [路径] [条件]。常用案列find /etc -name *.conf查找/etc目录下所有以.conf结尾的文件find /var/log -mtime -7查找7天内修改过的文件find / -size 100M查找大于100M的文件。能力很强但也要注意范围别太大生产环境全盘find /可能扫上很久。grep是内容过滤命令基本用法是grep [关键词] [文件]如grep error /var/log/syslog。常用参数-i忽略大小写-v反向匹配显示不含关键词的行-n显示行号-r递归搜索目录。which查找命令的完整路径如which nginx返回/usr/sbin/nginx帮你确认命令装了没有、版本装在哪。4. 文本处理三剑客grep、sed、awk4.1 grep的进阶组合从筛选到统计grep不只是简单的关键词匹配配合管道和参数可以做很多事。grep -c failed /var/log/auth.log统计错误次数grep -E error|warn app.log用扩展正则同时匹配多个关键词grep -r timeout /etc/nginx/递归搜索整个nginx配置目录。日志分析最常用的一句话是grep ERROR app.log | wc -l前者筛出错误行、后者统计行数组合起来就是错误总数。说白了grep负责筛后面的命令负责算脑回路一通很多所谓的复杂分析也就这么回事。需要注意grep匹配的是包含关键词的行不是等于关键词的行。比如搜索error会把error_code、critical_error全带出来需要精确匹配就加-w参数。4.2 sed的替换与流式编辑sed的全称是Stream Editor流式编辑器它逐行处理文本最常用的功能是替换。sed s/old/new/g file把文件中所有old替换为new最后的g代表全局替换。不加g只替换每行第一个匹配项。sed -i s/old/new/g file把替换结果直接写回文件不加-i只输出替换后的内容、不改原文件。这个i参数新手容易忽略老手容易误用。我自己的习惯是先不加-i跑一遍验证输出无误确认后再加上-i真正落地。sed -n 5,10p file打印第5到10行sed -n /error/p file打印包含error的行这两个用法相当于head、tail和grep的互补。sed -i最典型的实战场景就是批量修改配置文件。比如把某个服务的监听端口从8080改成9090sed -i s/8080/9090/g /etc/service/config.ini。一条命令改完不用打开编辑器手动翻几十行。4.3 awk的列处理与统计能力awk是处理按列分隔的结构化文本的利器。默认按空格或制表符把每行拆成字段$1代表第一列$2代表第二列$0代表整行。常用案列awk {print $1} access.log提取每个日志行的第一列通常是IPawk {print $1, $4} access.log同时提取IP和时间列awk -F: {print $1} /etc/passwd用-F指定冒号作为分隔符提取系统用户名列表——这个命令在排查系统用户时阿姆斯特朗好用。awk还支持统计awk {sum$1} END {print sum}对第一列求和适合统计日志里的响应时间总和。NR代表当前行号NF代表当前行的字段数比如awk NF5 file能筛出字段不足5个的行很多时候用于排查格式异常的数据。三剑客的搭配使用效果更好。典型的统计语句cat access.log | awk {print $1} | sort | uniq -c | sort -rn | head -20这条命令的含义是取出IP列、排序、去重计数、按次数降序排列、取前20行一条管道命令完成日志中最频繁的20个IP统计写进脚本里就是半个简易安全审计工具。5. 系统管理必备进程、用户、磁盘与网络5.1 进程查看与管理ps、top、killps查看进程快照。ps -ef显示所有进程的完整信息UID代表用户、PID代表进程号、PPID代表父进程号、CMD代表命令。ps aux是另一个常用组合输出CPU占用、内存占用、启动时间等。这两个参数组合的输出格式略有差异但核心信息都能看到。定位某个特定进程就用ps -ef | grep nginx找到PID后才能继续操作进程。top是实时监控命令像Windows任务管理器。它会动态刷新进程列表按CPU使用率排序按P键按CPU排序按M键按内存排序按q退出。生产环境排查性能问题第一件事就是敲top看哪个进程吃满了CPU或内存。free -h专门看内存使用情况-h选项保证输出单位为G或M而不是赤裸裸的字节数。kill发送信号给进程常用格式是kill PID默认发送SIGTERM终止信号进程收到后有机会善后退出。kill -9 PID发送SIGKILL信号强制杀死进程不给清理机会。这里的9是信号编号不是参数选项。强制杀进程是最后手段因为它可能导致数据不一致或者留下僵尸状态。正确姿势是先kill PID等几秒看进程是否退出不行再kill -9 PID。5.2 用户与权限useradd、chmod、sudoLinux是多用户操作系统权限模型是它的安全基石。每个文件都有属主、属组、其他人三类角色的读(r)、写(w)、执行(x)权限。ls -l输出的-rw-r--r--就是权限位的展示第一个字符代表类型-为文件d为目录然后每三个字符一组对应一类角色。chmod是修改权限的命令常用数字法表示r4、w2、x1三者相加即得权限值。比如chmod 755 file的含义是属主读写执行(7421)、属组读执行(541)、其他人读执行(541)这是最常见的脚本文件配置。chmod 644则是属主读写、其他人只读适合普通配置文件。理解这套数字系统比背命令更有效率因为你能自己推算任意组合。用户管理命令useradd tom创建用户passwd tom设置密码userdel -r tom删除用户并删除家目录。su用来切换用户身份sudo则是临时用管理员权限执行某条命令比如sudo apt update。这里有个常见误区sudo需要当前用户在sudo组里修改组成员用usermod -aG sudo username。5.3 磁盘与网络排查df、du、netstat磁盘满了相当于生活里衣柜塞满系统各种服务都会出问题。df -h查看各分区的总容量、已用、可用空间du -sh /var/log查看某个目录的总大小du -h --max-depth1 /home逐层查看home下各子目录的大小。排查磁盘占用时我习惯从根目录逐层往下du用sort -hr配合排序很快就能定位到罪魁祸首。网络排查也是必备技能。ping测试目标地址能否连通netstat -tunlp查看端口监听状态其中-t显示TCP、-u显示UDP、-n用数字地址显示、-l显示监听状态的端口、-p显示对应进程PID。定位某个端口被哪个进程占用就靠它netstat -tunlp | grep 8080。新版本Linux可能没有netstat用ss -tlnp替代输出格式和参数基本一致。curl测试HTTP接口比如curl -I https://example.com只显示响应头判断网站是否正常返回状态码。6. 包管理器与软件安装不同发行版的差异6.1 apt系列Debian系怎么装软件Ubuntu、Debian这类系统用apt系列命令管理软件包。apt update刷新软件包索引不是升级软件只是同步远程仓库的包列表apt upgrade升级所有可升级的包apt install 包名安装指定软件包apt remove 包名卸载软件apt search 关键词从仓库搜索软件包。日常维护流程是先apt update再apt upgrade否则可能依赖关系不一致。安装本地deb包用dpkg -i 包名.deb卸载deb包用dpkg -r 包名。apt与dpkg的关系就像手机应用商店和安装包文件本身前者帮你解决依赖关系后者只负责把包装上。依赖关系这个词我多解释一句软件A运行需要先装软件B如果直接装A,B又不存在就会报错。apt会自动处理这个依赖链这也是包管理器存在的价值。6.2 yum与dnfRedHat系的包管理思路CentOS系列的包管理器是yum新版本CentOS 8以上、Fedora已经用dnf替代但习惯上还叫yum命令也没问题。常用命令几乎与apt对应yum install、yum remove、yum search、yum update。区别是仓库配置、包格式不同rpm格式用rpm -ivh 包名.rpm安装本地包。这里有个小白的典型困惑我在CentOS上输apt install为什么报错因为不同发行版的包管理器不一样包管理器与系统的关系是绑定的。Debian系用aptRedHat系用yum/dnfArch系用pacman。一旦换发行版包管理命令要换一套。这也是为什么很多运维会长期固定在某个发行版家族不是偏执是肌肉记忆换血成本高。6.3 源码编译安装背后的三连命令有些软件不在仓库里只能源码编译安装。经典三步是./configure make make install。./configure检查系统环境、生成编译配置文件可以加--prefix/usr/local/xxx指定安装路径make根据配置编译源码生成可执行程序make install把编译产物复制到安装目录。之所以用连接是因为上一步失败后直接停止避免在配置不完整的情况下强行编译。源码编译的坑比包管理器多得多最常见的是缺少依赖库报错信息里出现No such file or directory或者gcc: command not found。必须先安装编译工具链Ubuntu上执行apt install build-essentialCentOS上执行yum groupinstall Development Tools。装完再走三步流程每一步的报错信息都要仔细看里面基本明确提示了缺什么、上哪儿找。6.4 关于Linux镜像与发行版选择热搜词里有linux镜像安装永久免费网页版linux我顺势展开讲一下。镜像指的就是Linux操作系统的安装包各大发行版官网都提供ISO镜像下载。国内可能有各种镜像站加速下载但不同发行版的官方源本身都是免费的。安装方式有两种实体机装用U盘或光盘引导和虚拟机装把ISO镜像挂载到VMware或VirtualBox里当虚拟光驱。小白练手我更推荐虚拟机方式出错不伤主机系统装坏了直接删掉重来零成本。至于永久免费网页版linux现在有一些在线终端模拟器或在线Linux实验环境浏览器打开就能敲命令适合零成本体验Linux。但这类环境通常配置受限跑不了重型服务真正学习还是要落到自己的虚拟机或云服务器上。7. 常见报错排查与小白避坑实录7.1 command not found的四种原因与对策command not found绝对是小白的第一课。原因基本有四类第一命令没安装比如输入iftop但系统里没这个工具对策是apt install iftop或yum install iftop第二命令存在但不在PATH里比如你手动编译装到/usr/local/nginx/sbin/nginx对策是用绝对路径执行或把目录加入PATH第三当前用户权限不够命令在/usr/sbin下面普通用户PATH里没包含这个目录对策是用sudo执行第四敲错了命令名。定位思路很简单which 命令名如果返回空说明命令没安装或不在PATH里。7.2 Permission denied与文件权限误区Permission denied是第二高频报错。看一眼文件权限如果ls -l输出-rw-------当前用户又不是属主那就确实没权限读。对策是chmod调整权限或者让管理员给自己加权限。这里有个常见误区以为root用户无所不能。其实root也会遇到只读文件系统的限制只是大多数权限问题root能强制绕过。我自己犯过的典型错误是把某个脚本权限设成chmod 777所有人完全可读可写可执行当时觉得省事后来发现任何用户都能改这个关键脚本安全风险很严重。正确做法是只给需要的最小权限。7.3 端口占用与进程冲突排查Address already in use是启动服务时常见的启动失败原因说明端口被别的进程占用了。排查思路netstat -tunlp | grep 端口号或ss -tlnp | grep 端口号看到占用进程的PID后决定是杀掉旧进程还是修改新服务的监听端口。如果确认旧进程不需要了kill PID清理。如果改了端口配置记得重启服务否则新配置不生效——这个问题我见过太多次配置文件改了服务不重启排查半天怀疑人生。7.4 中文乱码、目录找不到、误删文件的惨痛教训中文乱码通常是系统语言环境问题执行echo $LANG看看结果如果是空或C说明系统默认使用英文编码中文文件名显示为乱码。临时解决export LANGen_US.UTF-8或export LANGzh_CN.UTF-8。如果想持久生效写入~/.bashrc文件。No such file or directory则分两种文件真的不存在或者路径写错了。用ls -l确认目标路径是否存在再检查相对路径与绝对路径的差异。误删文件是最惨痛的教训我在新员工培训时反复强调三件事第一执行rm -rf前先ls确认路径第二不要在关键目录用通配符比如rm -rf /data/*手滑打成rm -rf /data中间多按一个空格整个目录直接蒸发第三重要数据定期备份异地不能只放在同一台机器的不同目录那不算真正备份。如果你已经误删了在ext4文件系统上有extundelete之类的工具可以尝试恢复但成功率不保证。最好的经验就是别让它发生。8. 后期学习路线从会用命令到会查命令8.1 学会man、--help与tldr的正确打开方式任何命令的完整信息都能通过三种途径获取。第一种是man 命令名这是官方手册页内容最全但排版最密英文不好的读者可能看两行就头大但它依然是权威来源。第二种是命令名 --help输出简洁的选项列表日常够用也是我查看参数时的首选。第三种是tldr工具它是社区维护的简化版手册每条命令只列最常见用法比如tldr tar会直接告诉你解压tar.gz包和创建tar.gz包各用哪条命令。这三种方式组合起来足以让你面对任何陌生命令时快速上手。记住这个核心方法论遇到新命令先--help信息不够再man想要速查用tldr。8.2 理解Shell脚本与配置文件的逻辑结构学会单条命令后下一步就是把多条命令组合成脚本。Shell脚本的第一行通常是#!/bin/bash这行叫shebang它告诉系统用哪个解释器执行这个文件。脚本内容就是按顺序执行的命令序列定义变量、条件判断、循环处理、调用外部命令。最简单的一个例子#!/bin/bash for ip in $(cat ip_list.txt); do ping -c 1 $ip echo $ip is up || echo $ip is down done这段脚本读取ip_list.txt中的每行IP依次ping一次根据结果输出存活状态。里面涉及的for循环、$(命令替换)、与||逻辑控制都是脚本基础用语。脚本写好后用chmod x加执行权限再执行./script.sh。学习脚本不需要先背语法直接在真实需求中边写边查积累速度最快。crontab -e是定时任务的配置入口格式是分 时 日 月 周 命令比如每天凌晨2点执行备份脚本就写0 2 * * * /opt/backup.sh。Tail日志、定时备份、批量检测这些自动化操作能极大解放日常重复劳动。8.3 vim三模式与必备快捷键编辑器是绕不开的坎。系统里最常见的编辑器是vi/vim它有三模式命令模式默认、插入模式、末行模式。刚打开文件时处于命令模式按i进入插入模式此时才能输入文字编辑完按Esc返回命令模式输入:wq保存并退出输入:q!不保存强制退出。dd删除光标所在行yy复制光标所在行p粘贴。这些是最基础的操作先记住这四个指令够用后面熟练了再学更多。有图形界面环境也可以先用gedit或nano过渡但服务器上通常只有vim早练早掌握。8.4 系统服务的systemctl与现代运维思路现代Linux发行版大多数用systemd管理系统服务。systemctl start nginx启动服务systemctl stop nginx停止服务systemctl enable nginx设置开机自启systemctl status nginx查看服务运行状态systemctl restart nginx重启服务。把nginx装好后第一件事就是systemctl enable nginx并systemctl start nginx否则下次重启服务器服务不会自动起来。日志查看也变了journalctl -u nginx查看某个服务的完整日志journalctl -f实时跟踪日志journalctl --since 1 hour ago只看一小时的日志。这类系统化命令逐渐取代了过去古老的方式但思路没有变先查状态、再看日志、定位后处理。9. 个人经验总结与一份应急命令速查写到最后分享一个我做运维这两年总结的小心得永远不要试图记住所有命令但要建立自己的命令速查手册。可以是一个本地笔记文件也可以是markdown表格把工作中遇到的高频命令按场景分类记录。比如看内存→free -h、看端口→ss -tlnp、看日志→tail -f这类索引式的笔记新环境、新同事、面试复习时都是最好的帮手。没有人的记忆能替代文档但文档的质量决定你解决问题的速度。再送你一份实战应急速查表都是我日常工作中真正常用的快捷键可以直接存下来操作场景命令组合说明查看当前目录pwd显示完整路径列出文件详情ls -lht按时间排序、人性化大小切换到上次目录cd -在最近两个目录间切换实时看日志tail -f /var/log/nginx/access.log持续输出新增日志找指定扩展名文件find /data -name *.log从/data目录开始搜索看端口占用ss -tlnpgrep 8080杀不掉进程时强制杀kill -9 进程PIDPID从ps或ss输出获取看内存占用free -h人类可读的内存信息查命令位置which nginx确认命令是否安装及完整路径按关键词筛日志grep -i error app.log忽略大小写匹配error统计日志IPawk {print $1} access.logsort编辑配置文件vim /etc/nginx/nginx.conf进入vim后按i编辑Esc后:wq保存这份表没有终点随着你实际使用Linux的时间增加你会不断往自己的表里添加新命令、新参数。重要的是积累过程本身这也是为什么标题坦白不完整反而更有价值——任何一份声称全的速查表都值得怀疑命令的疆域永远比你的记忆更广阔能为每个场景找到最合适的那条命令本身就是在成长了。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。