跳转至

终端与命令行

一、学习目标

学完这一讲能做到:

  1. 分清朝四个概念:终端窗口、Shell、命令行、命令;
  2. 说出 Windows 与 Linux 上同一条命令写法不同的原因,并能在两边各写出正确形式;
  3. 完成进入目录、查看文件、追加内容、查找文本、终结进程这五类操作;
  4. 用 AI 查命令时把操作系统与目标说清楚,并验证给出的结果。

二、前置

  • 会开终端窗口,见 Windows 基本操作。
  • 知道当前用的是哪个系统与哪个 Shell:PowerShell 里执行 $PSVersionTable,Linux 里执行 echo $SHELL。

三、正文

3.1 终端、Shell、命令行

概念 是什么 出问题时改哪里
终端 显示文字、接收键盘输入的窗口程序 字体、配色、标签页
Shell 解析命令的程序(PowerShell、bash、zsh、fish) 别名、环境变量、启动脚本
命令行界面(CLI) 用输入文本代替点击图标的操作方式 ——
命令 Shell 能识别的一个动作 参数与用法

图形界面(GUI)上手快,但远程服务器通常只有命令行可用,批量操作也只能靠命令。这一章要练的是命令,不是窗口外观。

3.2 四个常见 Shell 的差异

Windows 上会同时存在四种:

  • PowerShell:Windows 11 默认,功能完整。ls、cd、rm 只是别名,参数写法与 Linux 不同。
  • CMD:老式命令提示符,不建议作为主要学习对象。
  • WSL:在 Windows 里跑真正的 Linux,最接近服务器环境。
  • Git Bash:装 Git 时附带,支持大部分 Linux 基础命令。

Linux 与 macOS 原生用 bash 或 zsh,命令写法基本通用。fish 开箱好用,但与 bash 语法不兼容。

$ echo $SHELL
/bin/bash

看到这个就算成:能说出自己当前终端的 Shell 名称。

3.3 文件与目录

$ cd /srv/demo
$ pwd
/srv/demo
$ ls -l
total 8
-rw-r--r-- 1 root root  120 Oct 21 10:02 README.md
drwxr-xr-x 2 root root 4096 Oct 21 10:02 data
  • cd .. 返回上一级,cd ~ 回到用户主目录;
  • ls -l 看详细列表,ls -a 含隐藏文件;PowerShell 用 Get-ChildItem(别名 gci);
  • mkdir -p a/b 连父目录一起建;
  • 删除有风险:Linux 用 rm -rf dir,PowerShell 用 Remove-Item dir -Recurse -Force。
$ mkdir -p backup
$ ls
backup

看到这个就算成:能进入任意目录、查看内容、新建并删除一个空目录。

3.4 查看文件内容

$ cat README.md
# Demo
$ tail -f app.log
2026-10-21 10:05:12 started
  • cat 一次输出全文;PowerShell 里 cat 是 Get-Content 的别名;
  • tail -f 持续跟踪日志,按 Ctrl + C 停止;PowerShell 写 Get-Content app.log -Wait;
  • head -n 5 看前五行;PowerShell 写 Get-Content app.log -Head 5;
  • 简单编辑用 nano 或 vim,Windows 上有 notepad,VS Code 用 code file.txt。

看到这个就算成:能打开日志并让新写入的行实时出现。

3.5 管道与重定向

$ echo "hello" > note.txt
$ echo "world" >> note.txt
$ cat note.txt
hello
world
$ cat note.txt | grep -c "o"
2

> 覆盖写入,>> 追加写入。管道 | 把前一条命令的输出交给后一条。

两个系统的差别在传递的东西:Linux 传文本流,PowerShell 传对象,所以同名过滤命令在两边写法不同:

$ cat note.txt | Select-String "world"
note.txt:2:world

看到这个就算成:能写出覆盖与追加两种写入,并用管道数出匹配行数。

3.6 搜索与过滤

$ grep -rn "error" /var/log/demo
/var/log/demo/app.log:12:error: connection refused
$ find . -name "*.txt"
./note.txt
  • 查内容:Linux 用 grep,PowerShell 用 Select-String(别名 sls),CMD 用 findstr;
  • 查文件位置:Linux 用 find,PowerShell 用 Get-ChildItem -Recurse -Filter;
  • Windows 上的 find 是另一个文本查找工具,找不到文件不是参数写错。

看到这个就算成:能在指定目录下同时查出「哪一行匹配」和「哪个文件名叫什么」。

3.7 权限与管理员

$ chmod +x run.sh
$ ls -l run.sh
-rwxr-xr-x 1 demo demo 42 Oct 21 10:10 run.sh
$ sudo systemctl restart demo
$ systemctl is-active demo
active

Linux 用 chmod 改权限,需要管理员时在命令前加 sudo。Windows 用 ACL 管理权限,日常开发很少改,需要管理员时以「管理员身份运行」打开终端。

看到这个就算成:能说清 sudo 与「以管理员运行」是同一件事的两种做法。

3.8 让 AI 查命令的正确问法

先说系统与 Shell,再说目标,最后说限制条件。缺少系统信息时,AI 容易给出这条系统上不存在的命令。

  • 反例:「怎么查占用 8080 端口的进程」——得到的答案可能是 lsof,Windows 上没有这个命令。
  • 正例:「我在 Windows 11 的 PowerShell 里,要查哪个进程占用了 8080 端口,给一条命令」。

拿到命令之后先做三件事:读懂每一段在做什么、确认路径与影响范围、破坏性操作先在测试环境跑一遍。参数不确定时查 --help 或 man。

看到这个就算成:能对同一条需求写出带系统信息的提问,并指出 AI 答案里不可执行的部分。

3.9 附录:命令对照速查表

功能 Linux / macOS Windows PowerShell 关键差异
切换目录 cd cd 通用
列出文件 ls -la ls 或 gci PowerShell 不认 -la
显示路径 pwd pwd 通用
建目录 mkdir -p a/b mkdir a/b 通用
删目录 rm -rf dir Remove-Item dir -Recurse -Force 参数完全不同
复制 cp -r Copy-Item -Recurse 参数不同
看前几行 head -n 5 Get-Content -Head 5 命令不同
跟踪日志 tail -f Get-Content -Wait 命令不同
搜内容 grep -rn Select-String Windows 没有 grep
找文件 find . -name Get-ChildItem -Recurse -Filter find 是另一回事
清屏 clear clear 或 cls 通用
提权执行 sudo 命令 以管理员身份打开终端 机制不同

四、练习

  1. 在自己的机器上执行 pwd、ls -l、mkdir -p demo/data,把输出贴进笔记。
  2. 在 demo/app.log 里追加三行内容,用 tail -f 观察,再退出跟踪。
  3. 用一句话数出 app.log 里含 error 的行数。
  4. 在 Linux 与 Windows 上各查出「哪个进程占用 8080 端口」,把两条命令都记下来。
  5. 拿一条 AI 给的命令,指出其中依赖系统的那一部分。

五、验收标准

  1. 能解释终端与 Shell 的区别,并说出自己当前用的 Shell。
  2. 五项操作(进目录、看文件、追加写入、查找文本、结束进程)都能独立完成。
  3. 对照速查表能写对 Windows 与 Linux 两边的删除与查找命令。
  4. 提问时自带系统与目标,拿到答案后能判断是否可执行。

六、下一讲

下一讲进入终端环境与配置:把终端、Shell、提示符、会话管理这四层配成一套顺手的组合,并让配置跟着人走。