0.12 命令行 / 终端是什么
第〇篇【零基础预科】免费。从这一篇开始,我们走进安全人最熟悉的黑窗口——命令行。
一、什么是命令行
平时你用鼠标点图标、点菜单来操作电脑,这叫图形界面。命令行(也叫终端、Terminal、Shell)则是另一种方式:你用键盘输入一行文字命令,电脑照着执行并把结果以文字显示出来。
你输入: whoami
电脑回显:ubuntu就像你和电脑之间,从"比划(点图标)"换成了"直接说话(打字)"。
你可能会问:终端、Shell、bash、PowerShell,这一堆名字到底什么关系? 它们是两层东西。终端(Terminal) 是那个接收你打字、把结果显示出来的"窗口程序";真正读懂你输入的命令并指挥电脑执行的,是窗口背后的 Shell。bash、zsh、PowerShell、CMD 就是几种不同的 Shell——它们都干同样的活,只是"方言"和功能不同。打个比方:终端是电话机,Shell 是电话线那头真正办事的人。平时大家口头说"开个终端""敲命令行",基本不区分这两层,你心里清楚即可。
顺带说一个看教程的小坑:很多教程命令前面会写一个 $(有时是 #),那是提示符、表示"命令从这开始",你不用真的敲这个 $;若提示符是 #,通常还意味着当前是管理员/root 身份。你真正要输入的是符号后面的部分。
那你敲下一行字、按回车后,电脑到底做了什么?Shell 先认出第一个词(命令名),去系统里找到对应的小程序,把后面的选项和参数交给它,再由这个小程序干活、把结果打印回终端。也就是说,ls、whoami 这些命令名,本质是一个个预先写好的小程序的名字;以后你也可以把自己写的脚本放进去、当成新命令来调用。
二、为什么安全人离不开它
- 精确:一条命令能明确表达要做什么,没有界面歧义;
- 可复制、可记录:命令是文字,能复制给别人、写进文档、贴到报告;
- 可自动化:把多条命令写成脚本,一键批量执行重复工作;
- 远程可用:连服务器时通常只有命令行(没有图形桌面);
- 工具默认形态:大量安全工具只提供命令行版本,功能最新最全。
说个你很快会遇到的真实场景。后面我们要连远程服务器,登录之后屏幕上只有一个黑窗口、没有任何桌面图标——因为服务器为了省资源,大多根本不装图形界面,你只能靠打字操作。这也是为什么几乎所有教程都直接给你一行行命令:你复制 → 粘贴 → 回车就能精确复现作者的每一步,不用在菜单里瞎找。图形界面的操作很难用文字描述清楚("点那个靠左的小按钮……"),而命令天然可以一字不差地传递。
"可自动化"到底值多少钱,也举个例子。假设你要确认 100 个 IP 里哪些开了 80 端口:用图形工具你得一个个手点、点几百下还容易漏;写成脚本就是一个循环(0.28 讲循环),一条命令跑完、结果自动存成文件。安全工作里这种"重复、量大、要留记录"的活儿特别多,命令行把它们从体力活变成"一次写好、反复用"。
最后别把图形界面和命令行对立起来:日常浏览、写文档,图形界面更直观;批量、远程、自动化,命令行更高效。成熟的安全人是两者随时切换、各取所长,而不是非此即彼。你要做的只是跨过"看到黑窗口就发怵"的那道心理门槛——它和点鼠标一样,只是一种操作电脑的方式,而且越用越省事。
三、常见的命令行程序
| 系统 | 程序 |
|---|---|
| Windows | PowerShell(功能强、现代)、命令提示符 CMD(较老) |
| Linux | bash(最常见)、zsh 等,统称 shell |
| macOS | Terminal(默认 zsh) |
本系列在你本地 Windows 上主要用 PowerShell,在 Linux 服务器上主要用 bash。两者命令有相似也有差异,遇到不同我会说明。
你可能担心两套命令记混。其实不少基础命令两边一样:whoami(当前是谁)在 PowerShell 和 bash 里都能用;也有不同——列文件在 Linux 是 ls、老 CMD 里是 dir(PowerShell 把 ls、dir 都做成了兼容别名,所以也能用)。遇到差异本课程会分别给出,你现在不用背。
四、一条命令长什么样
ls -l /home
↑命令名 ↑选项 ↑参数- 命令名:要做什么(如 ls 列出文件);
- 选项(flags):常以
-(短,如-l)或--(长,如--all)开头,用来调整行为; - 参数:操作对象,常是文件/路径。
举例:
ls -l /var/www # 以详细列表(-l)方式,列出 /var/www 里的内容你可能会问:为什么命令里常看到
-la这种几个字母挤一起的? 短选项可以合并:ls -l -a(详细列表 + 显示隐藏文件)常简写成ls -la,效果一样。选项和命令之间、选项和参数之间,用空格分开;少了空格,电脑会把它当成一个不存在的命令名。刚开始照着写、不用强记,熟了自然就懂。
参数还可以一次带多个:cp a.txt b.txt 里 a.txt、b.txt 都是参数,命令按它们出现的顺序理解(这里是"把 a.txt 复制成 b.txt")。选项通常以 - 开头、参数一般不带 -,这也是区分两者的直观办法。
五、几个先知道的常识
- 命令区分大小写:Linux 里
LS和ls不同(Windows PowerShell 通常不区分); - 输错命令会提示
command not found,不是坏了; - 命令在运行时可能需要时间,结束后会回到"可输入"状态(出现提示符,如
$或用户路径); - 想中断正在跑的命令按
Ctrl + C; - 不知道命令怎么用,常可加
--help(如ls --help)查看说明。
一个常见误解:"在黑窗口里我按 Ctrl + C,怎么没复制、命令反而停了?" 在终端里 Ctrl + C 的含义是中断当前命令,不是复制。多数 Linux 终端里复制是 Ctrl + Shift + C、粘贴是 Ctrl + Shift + V(也常支持鼠标右键直接粘贴);Windows PowerShell 里选中文字后回车即复制、右键即粘贴。这个差异第一次用都会懵,知道就好。
另一个新手常有的担心:"我会不会输错一条命令,把电脑搞坏?" 本阶段你会敲的大多是 ls、whoami 这类只读命令,它们只"看"、不改动任何东西,放心试。真正会删除、覆盖的命令,本教程会明确标注并让你在靶场里操作;养成"看清命令含义再回车"的习惯即可,不必因害怕而不敢动手。
还有个判断"命令跑完没"的小技巧:看提示符——就是行首那个 $(Linux)或 PS C:\...>(PowerShell)。能看到它、光标在后面闪,说明系统正等你输入;如果回车后迟迟没有提示符、屏幕不动,多半是命令还在运行,或者它在等你输入内容(可继续输入、或 Ctrl + C 退出)。
两个能让你少打很多字的功能,务必早点用上:
- Tab 自动补全:输入命令或路径的前几个字母,按一下
Tab,终端会自动补全剩余部分;有多个可能时按两下Tab列出全部选项。又快又不会拼错长路径。 - 历史命令:按
↑逐条翻出之前敲过的命令、↓往回翻;找到后直接回车就是重跑,改改参数也方便,不用整行重打。
六、本篇小结
- 命令行用打字下命令来操作电脑,是图形界面之外更直接的方式。
- 它精确、可复制、可脚本自动化、远程可用,是安全运维的主战场。
- Windows 用 PowerShell/CMD,Linux 用 bash;命令 = 命令名 + 选项 + 参数。
- 遇到问题用
--help、中断用 Ctrl+C。
下一篇 0.13 就亲手输入第一批命令,在终端里"导航"和查看文件。