Kali Linux命令行入门:从零掌握文件操作与常用命令

发布时间:2026/10/24 23:47:02
Kali Linux命令行入门:从零掌握文件操作与常用命令

简介:这是一份专为渗透测试入门者与Web安全学习者整理的Kali Linux常用命令速查手册,聚焦系统操作、权限切换与文本处理等高频场景,帮助读者快速适应Kali的终端环境。资源仅含1个docx文档,压缩包约1.96MB,排版清晰、目录完整,可离线查阅。文档从目录查看、帮助命令(whatis、help、man、info)入手,系统覆盖登录与用户切换(login、su/sudo)、电源管理(shutdown、halt、reboot)、路径切换与文件操作(cd、pwd、touch、mkdir、cp、mv)等常用命令,同时给出df、free、top等系统资源查看命令,以及grep、sed、awk等文本处理技巧,几乎涵盖日常渗透测试中的终端操作要点。已有633人学习下载,适合刚接触Kali Linux或准备Web渗透环境的运维与安全新手作为随身参考。

1. 第一次面对 Kali 的黑屏终端:先别慌,从三条命令开始

很多刚接触 Kali 的同学,卡住的起点不是某个复杂的工具,而是开机后那个黑底白字的终端窗口。桌面上明明有图标,为什么还要敲命令?这个疑问不解决,很容易把命令行看成一座山。其实命令行的本质特别朴素:它是你和操作系统之间固定的对话格式,你说一句,系统回一句。我会把这句话里最常用、最容易上手的几十条命令讲给你听,让你明白每条命令管什么、什么场景用、出错了去哪看,并且亲手跑通第一个例子。读完你就能在 Kali 上建目录、看文件、查路径,再往后接触那些命令行版安全工具时,心里也有底了。它适合所有零基础新手,想学网络安全的人、第一次接触 Kali 的人、或者目前只会用鼠标点来点去的人。

2. 先搞懂一个概念:命令是“和系统对话的短句”

2.1 为什么非要学命令:图形界面和命令行各有分工

Kali 启动之后是有图形桌面的,很多人第一反应是:有桌面干嘛还记命令?我第一次学的时候也问过同样的问题。后来是在实际操作里想明白的:图形界面适合“偶尔点一下”的操作,它把选项藏在窗口和菜单里,直观,但慢,而且很难批量处理。命令行正好相反,它把动作固定成一条很短的句子,写下来、按回车,结果立刻返回。你想让系统一口气创建一百个目录,图形界面要点一百次,命令行一条循环就能完成。

在 Kali 这种专门为安全测试设计的操作系统里,命令行还有一层特殊意义:大量渗透测试与系统排查工具只提供命令行版本,工具本身就是进程,靠参数控制行为。命令是这些工具的入口,也是学习它们的必经之路。另外,真实工作环境里很多机器没有图形桌面,你只能通过终端远程登录,面对的依然是一个光标。你在自己电脑上练会的命令,换到一台只有命令行的机器上依然能用。

我把命令比作给系统发的“短句”。一条命令通常由三部分拼成:命令名 + 空格 + 参数 + 空格 + 目标。比如 ls -l /tmp,ls 是命令名,-l 是参数,/tmp 是目标。参数通常以 - 开头,也叫选项,作用是微调命令行为;目标告诉命令去操作谁。新手不用急着抠细节,先记住这个结构,后面遇到任何陌生命令,都能大致猜出它在干什么。这个三件套就是读懂一切命令的钥匙。

2.2 三条必会命令:pwd、ls、cd,先回答“我在哪、有什么、去哪”

打开终端,面对一个光标,最该做的不是急着输入高深命令,而是先问自己三个问题:我在哪?这里有什么?我想去哪?对应到命令就是 pwd、ls、cd。

pwd 是 print working directory 的缩写,作用是打印当前所在目录的完整路径。它几乎不需要参数,输入 pwd 按回车,系统就告诉你当前位置。新手时期,每切换一次目录就用 pwd 确认一下,虽然有点笨,但能帮你快速建立“位置感”。很多路径错误,根源就是脑子里没有这张位置地图。

ls 是 list 的缩写,列出当前目录下有什么。它有四个高频参数要记住:-l 显示详细信息,包括权限、所属用户、文件大小、修改时间;-a 显示所有文件,包括以 . 开头的隐藏文件;-h 让文件大小变成 4.0K 这种好读的格式;-t 按文件建立时间排序。三个参数经常组合使用,ls -lh 看大小,ls -al 看全貌。查看当前目录时,ls 和 ls -l 是最常用的两条,而 ls -l 在很多系统上可以直接简写为 ll。

cd 是 change directory 的缩写,负责切换目录。它后面跟的目标可以是绝对路径,也可以是从当前位置出发的相对路径。绝对路径永远从 / 开头,比如 /etc/nginx;相对路径描述的是“从这出发怎么走”,比如 .. 表示回到上一级,../.. 表示上两级。cd 有几个捷径:不带参数直接回家目录,cd ~ 效果相同,cd - 则回到上一次所在目录。日常操作中 cd 的使用频率极高,这几个变体都值得练熟。

还有个新手最容易忽略的细节:命令和参数之间必须有空格。ls-l 会被系统当成一个叫 ls-l 的命令去执行,结果自然是 command not found。这个错误我犯过不止一次,后来养成了习惯,每次输入完先扫一眼空格位置,确认没问题再按回车。

2.3 动手第一步:完成一次位置确认和目录切换

下面跟着我完整走一遍,请打开 Kali 的终端,逐条输入:

# 查看当前位置,确认自己站在哪个目录 pwd # 列出当前目录里有什么 ls # 查看详细信息,包括权限和文件大小 ls -l # 查看所有文件,连隐藏的一起显示 ls -a # 切换到系统的临时目录 /tmp cd /tmp # 确认切换成功,再确认一次位置 pwd # 用 cd - 回到上一个目录 cd - # 不带参数,直接回家目录 cd

每条命令执行完,系统都会给出回应。pwd 输出的是文字路径;ls 输出的是文件列表;cd 通常什么都不输出,这恰恰说明切换成功了。如果 cd 失败,系统一般会提示 No such file or directory,意思是路径不存在或者写错了。看到错误不要慌,先检查路径拼写,再看当前位置,这两个步骤能解决八成问题。

这里有一个判断“命令是否成功”的思路:除了一部分命令会有明确的输出外,多数切换类命令成功后都是静默的,没有消息就是好消息。如果系统提示 command not found,说明你拼错了命令名,或者这个命令根本没安装。走完这一圈,你就完成了“定位—查看—切换”的完整流程,这个流程是所有文件操作的地基。

最后提醒一个参数:ls -R 会在列表时把下层目录也一起展开,初学时慎用,因为一旦目录层级多,输出会非常夸张。等你对目录结构有感觉了,再用它来快速浏览整个目录树。学命令从简单开始,一个命令先记一个高频参数,用熟了再扩展,比一次背十个参数有效得多。

3. 文件与目录操作:一套从创建到删除的完整流程

3.1 创建文件与目录:touch 和 mkdir 的细节

确定了位置,下一步就是创建。touch 和 mkdir 一个管文件、一个管目录,配合起来就是“从无到有”的动作。

touch 名字很形象,表示“摸一下”,它有两大功能。第一是创建新的空文件:touch test.txt 会在当前目录生成一个空文件。第二是更新已存在文件的时间属性。第二个功能初学阶段用不上,但你要知道它的存在,否则某天只是执行了 touch,文件修改时间却变了,会以为是玄学。创建空文件这个功能看着普通,实际很常用,比如你要快速生成一个临时记录文件,touch 一下即可。

mkdir 是 make directory 的缩写,用来创建目录。单层目录直接 mkdir demo 就行。但如果你想一次创建多层嵌套目录,比如 a/b/c,直接 mkdir a/b/c 会报错,因为系统发现中间层 b 不存在。这时要加 -p 参数:mkdir -p a/b/c 会自动把中间缺失的目录一并建出来。还有一个 -m 参数,创建目录的同时指定权限,比如 mkdir -m 755 private。对新手来说,755 这类权限值先有个印象,学到文件权限时再回头看就通了。

创建时有个规则必须记住:新建的名称不能和同目录下已有文件或目录重名。如果重名,touch 会去更新旧文件的时间而不是创建新文件,mkdir 则提示 File exists。所以动手前习惯性 ls 看一眼目标目录,能省掉不少麻烦。文件名也尽量别带空格,命令行里带空格的文件名要加引号才能操作,初学时容易因此踩坑,我一般用下划线代替空格。

3.2 复制、移动、删除:cp、mv、rm 三剑客与安全习惯

文件建好之后,绕不开的还是复制、移动、删除三个动作,对应命令是 cp、mv、rm。所有 Linux 学习者都会用它们,也都能讲出几个翻车经历。

cp 是 copy 的缩写,复制文件或目录。最简单的用法是 cp 源文件 目标位置。复制单个文件时,目标可以是一个新文件名,也可以是一个已经存在的目录。复制目录就要复杂一些,必须加 -r 参数,表示递归处理,把目录下所有子文件和子目录一起复制,不然系统会提示 omitting directory。还有一个 -p 参数,复制的同时保留原文件的属性,比如时间戳和权限,做备份时很实用。

mv 是 move 的缩写,作用是移动文件,但它在实际使用里还有一个高频场景:重命名。当源文件和目标位置在同一个目录下时,mv 的效果就是改名,mv old.txt new.txt 就把文件从 old.txt 变成了 new.txt。mv 有三个参数值得留意:-i 表示目标已存在时询问用户,-f 表示强制覆盖不询问,-b 表示覆盖前先备份。默认行为因系统配置而异,建议重要文件移动时先用 -i,给系统一个“拦截”机会。

rm 是 remove 的缩写,删除文件或目录。它有两个参数威力极大:-r 递归删除目录,-f 强制删除不提示,两者合体成 rm -rf 后,误操作连后悔药都没有。命令行删除不像图形界面那样先进回收站,文件一旦被删,基本找不回来。我从学习第一天起给自己立了条规矩:使用 rm -rf 之前,先 pwd 确认当前目录,再 ls 确认目标,最后心里默念一遍“我要删的是不是这个”。这个习惯帮我躲过了很多次灾难。

# 把当前目录下的 old.txt 改名成 new.txt mv old.txt new.txt # 把 new.txt 移动到 /tmp 目录 mv new.txt /tmp # 复制整个目录 docs 到 /tmp 下的备份,保留属性 cp -rp docs /tmp/backup # 删除目录,先加 -i 让系统逐个询问 rm -ri docs

最后一行 rm 后面的 -ri 是 -r 加 -i 的组合写法,系统会逐个文件询问是否删除。新手删目录时加上 -i,等于多一道保险。等以后熟练了再考虑简化,初期宁可慢一点。

3.3 文件链接 ln:软链接和硬链接怎么选

ln 命令用来创建链接文件,它的作用有点像 Windows 桌面的快捷方式,但又不完全相同。链接分软链接和硬链接两种,入门阶段理解它们的区别,比背参数更重要。

软链接又叫符号链接,创建方式是 ln -s 源文件 链接名。它相当于给文件建一个索引入口,可以跨文件系统,也能链接目录。用 ls -l 查看时,软链接会显示一个箭头,比如 link -> target。它的特点是:源文件被删除后,软链接立即失效,因为箭头指向的东西不存在了。快捷方式就是这种思路,所以日常需求求快捷访问时优先用它。

硬链接不同。它本质上是指向同一份文件数据的多个路径。创建硬链接后,源文件和链接文件共享同一份数据,改一个,另一个同步变化。只有当所有硬链接都被删除时,数据才真的被释放。硬链接不能跨文件系统,也不能链接目录。创建方式是 ln 源文件 链接名,注意不带 -s 的就是硬链接。

初学阶段怎么选?想快速访问某个深层目录或常用文件,用软链接足够,大多数 Linux 使用者日常打交道的也主要是软链接。硬链接的概念理解即可,它在文件系统原理里很重要,但入门阶段出现频率不高。还有人会把 ln 和 cp 混起来,它们的本质区别是:cp 复制出一份独立数据,改副本不影响原件;ln 只是新增一个入口,数据只有一份。想清楚这个区别,你就不会被这两个命令绕晕了。

4. 看文件与找文件:把 Kali 当成信息整理助手

4.1 查看文件内容:cat 很直接,less 更适合大文件

学会管理文件之后,就要面对读取文件这个高频动作。Kali 上的配置、日志、脚本大多是纯文本,用命令就能直接读。查看内容最常用的三个命令是 cat、more、less,它们各有分工。

cat 是 concatenate 的缩写,原意是连接,日常用法就是一口气把文件内容打印到屏幕上。小文件直接 cat 文件名 就行,加 -n 参数可以给每行编号,方便定位“第几行有内容”。但有两件事新手要心里有数:一是文件很长时,cat 会把内容全部刷出来,屏幕滚动半天,看得眼花;二是 cat 有拼接功能,cat a.txt b.txt 会把两个文件内容连着打印。如果某天输出里出现两个文件的内容,这不是 bug,是 cat 在做它本该做的工作。

more 是早期的分页工具,按页显示内容,空格翻页,Q 退出。less 是它的增强版,名字含义是“更少的展示,更多的功能”,最大优点是支持前后翻页:空格向下翻一页,b 向上翻一页,回车向下翻一行。less 里还能搜索内容,输入 /关键词 向下搜,输入 ?关键词 向上搜,按 n 跳到下一个匹配。浏览长配置时,less 配合 / 搜索基本能替代图形编辑器里的查找功能。

三个命令的选择其实很简单,我列了一张对比表方便你记忆:

命令适用场景是否分页能否向后翻
cat十几行以内的小文件不分页,全部输出不支持
more较长文件基础浏览分页,只能向前翻页不支持
less大文件、配置文件、日志分页,前后都能翻支持搜索

less 是性价比最高的查看命令,因为它只读取需要显示的部分,打开超大日志也不卡死。这一点在排查系统问题时尤其重要。

4.2 只看开头和结尾:head 与 tail 的日志排查场景

很多时候你并不想看整个文件,只想看开头几行或者结尾几行,head 和 tail 就是专门干这个的。

head 显示文件开头部分,默认前 10 行。想要自定义行数用 -n 参数,head -n 20 access.log 就显示前 20 行。tail 显示文件结尾部分,默认也是 10 行,同样用 -n 指定,比如 tail -n 50 error.log 看最后 50 行。看日志时,新的报错往往追加在文件尾部,所以 tail 比 head 更常用。

tail 有一个参数在排查里特别有用:-f,含义是 follow,跟踪文件尾部。文件有新内容写入时,tail -f 会把新增内容实时显示到屏幕上,这在观察服务日志时几乎是标配操作。比如某个服务正在运行,你想看它输出什么,执行 tail -f 服务.log,新内容就会一行行出现。看完按 Ctrl+C 退出跟踪。

# 显示 access.log 前 20 行 head -n 20 access.log # 显示 error.log 最后 50 行 tail -n 50 error.log # 实时跟踪系统日志的新增内容 tail -f /var/log/syslog

容易忽视的是,head、tail 都只读取文件,不会修改文件,所以拿来反复查看是安全的。新手常常担心“看文件会不会弄坏文件”,答案是普通查看命令都是只读的,放心用。真正的风险集中在写操作和删除操作上,那才需要警惕。

4.3 找文件三兄弟:find、locate、which 的分工

文件一多,找东西就成刚需。Kali 上找文件有三个常用命令:find、locate、which,定位完全不同。搞清楚分工,就不会拿错工具。

find 是功能最全的查找命令,在文件系统里实时搜索,支持按名称、类型、大小等多种条件组合。按名字找:find / -name config.ini,在全盘查找名为 config.ini 的文件;按类型找:find /etc -type f,只看普通文件,不列目录;按大小找:find /var -size +10M,找大于 10MB 的文件。find 的缺点是慢,因为它实时遍历目录,全盘搜索时要有耐心。

locate 走的是另一条路:它先通过一个数据库记录文件路径,查找时直接查数据库,速度飞快。代价是数据库不会实时更新,新建的文件可能查不到,这时需要先更新数据库才能搜到。locate 适合找“我确定有但忘了放哪”的文件,find 适合找“条件复杂、必须精确匹配”的文件。

which 不找普通文件,专门找命令本身。你想知道 nmap 到底装在哪个目录,执行 which nmap,它会输出这个命令的绝对路径。它还有个衍生用途:如果 which 某命令 什么都不输出,说明这个命令不存在或没安装。所以 which 常被用来检查工具是否安装成功、执行的到底是不是你预期的那一个。

# 以名字在 /etc 下查找 nginx.conf find /etc -name nginx.conf # 在 /var 下查找大于 10MB 的文件 find /var -size +10M # 查找命令 nmap 的安装位置 which nmap # 在数据库中快速搜索名为 report 的文件 locate report

新手最常犯的错误是拿 find 去做 which 的事,或者用 locate 去找刚创建的文件结果一无所获。记住一句话:找普通文件用 find 和 locate,找命令的位置用 which。按场景选工具,才是正确姿势。

5. 避坑指南:五个最常让新手翻车的命令问题

5.1 rm 删完才发现没备份:误删文件怎么避免

现象:你执行了 rm -rf 某个目录,几秒后发现删错了,里面有重要资料,回收站里也找不到它。

原因:命令行的删除不走图形界面的回收站,rm 一旦执行,文件对应的数据就可能被立即标记释放。对新手来说,这条命令的破坏性在全文所有命令里排第一,而新手又常常因为对路径不熟悉,在错误的目录里执行了它。

解决:执行 rm 之前强制三确认:先 pwd 看当前在哪,再 ls 看目标列表,最后在脑子里过一遍“我要删的是不是这个”。重要文件建议先 mv 到一个临时目录放几天,确定没问题再删。还可以在命令里加 -i 参数,让系统逐个询问,多一道确认就多一道保险。

5.2 Permission denied:命令没错,但系统不让执行

现象:你输入了一条看起来完全正确的命令,比如读取某个系统配置文件,屏幕却提示 Permission denied,文件明明在那里,就是读不了。

原因:Linux 是严格的多用户系统,每个文件都有“谁能读、谁能写、谁能执行”的权限标记。普通用户权限范围有限,很多系统级文件只允许管理员访问。你用普通账户去读,系统按规矩拒绝,这跟命令拼写无关。

解决:先判断自己是否真的需要访问这个文件。如果确实需要,用 sudo 前缀提升权限执行,比如 sudo cat 某个配置。但别养成所有命令都加 sudo 的习惯,权限开得过大,误操作的影响也变大。sudo 首次使用会要求输入当前用户的密码,输入时屏幕上不会显示任何字符,这不是故障,输完按回车就行。另外,su 是切换用户身份的完整切换,sudo 是临时以管理员权限执行单条命令,两者别混着用。

5.3 终端卡住:程序跑不停,按什么都没反应

现象:你执行了一个命令后,屏幕开始不断滚动输出,终端好像卡死了,按什么都没反应,只能慌乱地关窗口。

原因:绝大多数所谓“卡死”只是程序在前台持续运行,不断输出内容,把你的操作占住了。它不一定是真卡,只是没结束。比如你执行了日志跟踪命令,它本来就该一直显示新内容;又或者程序进入了一个等待状态。

解决:先按 Ctrl+C,这是“中断当前前台程序”的标准操作,大部分情况都能让它停下来并返回提示符。如果 Ctrl+C 无效,按 Ctrl+Z 暂停程序,回到提示符后用 jobs 查看任务列表,再用 kill 命令结束它。少数极端情况两个组合键都无效,才需要考虑关闭终端窗口,但那可能留下后台进程。别一上来就关窗,先给系统一个优雅结束的机会。

5.4 路径写错:家目录、根目录、相对路径分不清

现象:你想进某个目录,cd 过去却发现进了完全陌生的位置;或者在删除文件时,因为路径理解错误,跑到上级目录去删了东西。

原因:根源是混淆了绝对路径和相对路径,以及没记住 / 和 ~ 的区别。/ 单独出现表示根目录,是整个文件系统的起点;~ 表示当前用户的家目录;. 表示当前目录;.. 表示上一级目录。新手常把 ~ 当成普通目录名,或使用了一个不存在的相对路径,自然就迷路了。

解决:每次切换目录后用 pwd 确认实际位置。路径敏感的写操作执行前,把目标写成绝对路径,降低相对路径带来的误判风险。还有一个提升效率和正确率的小动作:输入路径时多用 Tab 键自动补全,系统会帮你补全目录名,省时间也避免手打错字。如果 Tab 补全没反应,说明这个路径根本不存在,停下来检查再走。

5.5 man 手册打不开也退不出:帮助文档的正确用法

现象:你听说 man 可以查命令帮助,执行 man ls 后进入了一个全屏界面,内容很多,但想退出时按什么键都没反应,最后无奈重启终端。

原因:man 打开的内容是手册页查看界面,它接管了终端显示,操作方式和其他命令完全不同。新手不知道它的翻页和退出快捷键,才会觉得它是个“进去了就出不来”的黑匣子。

解决:在 man 界面里,空格键向下翻页,b 键向上翻页,输入 /关键词 搜索,按 q 退出。这几个键记住,man 就从陷阱变成随身文档。除了 man,还有几个帮手:whatis 用一行文字简短描述命令功能,适合快速了解;help 针对内置命令输出简要帮助;大多数命令直接加 --help 会显示参数说明。遇到陌生命令,先 --help 看个大概,再 man 看详细,这个顺序能让效率翻倍。

6. 下一步学什么:给自己安排一条能走通的路

6.1 三周入门路线:从命令熟悉到日志排查

学命令行最忌讳一口气背几十个命令,然后一周全忘光。建议按场景分批学,每批都带一个实际目的,我把自己的路线整理成了下面这张表:

周次学习重点建议练习
第一周文件操作与路径在 /tmp 下建自己的目录结构,用 pwd、ls、cd、touch、mkdir 来回折腾;结束时把 shutdown、halt、reboot 各试一次,关机前记得用 exit 退出登录
第二周内容查看与查找用 less 浏览配置文件,用 head、tail 看日志,用 last 查看最近登录记录,用 find、locate 找文件,做到想看哪就看哪
第三周权限与打包结合 sudo 理解权限体系,用 gzip、tar 给文件打包备份,再练习解压,建立数据备份的习惯

每一周都不追求记住所有参数,每个命令记一两个高频参数就够用。真正熟练靠重复,不靠背诵。手边备一份按模块整理的常用命令手册,遇到不确定的参数随手翻,比临时联网现查效率高很多,也能少走不少弯路。

6.2 学命令的一个习惯:用场景去记,不要背参数

后来我总结出一个特别适合新手的习惯:把每个命令和它解决的“问题场景”绑定起来记忆。比如“我想知道自己在哪个目录”对应 pwd,“我想换到另一个目录”对应 cd,“我想看文件最后 10 行还希望它实时刷新”对应 tail -f。这样学到的命令,遇到真实场景会自动被唤起,靠死记硬背反而容易忘。

从那以后,我每次新装系统或换新环境,都会强制自己用一套最基础的流程先走一遍:pwd 看位置、ls 看内容、cd 切目录、cat 或 less 看文件、用 mv 和 cp 做备份。这套流程走顺了,再复杂的工具也只是在这个基础上叠加参数。命令行最重要的不是记了多少命令,而是建立了“用命令解决问题”的反射。希望这条习惯能帮到你,也希望你从第一个命令开始,慢慢把终端变成自己最顺手的工具。

本文还有配套的精品资源,点击获取